procfs: fix missing RCU protection when reading real_parent in do_task_stat()
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.252, 5.15.202, 6.1.165, 6.6.128, 6.12.75, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: procfs: fix missing RCU protection when reading real_parent in do_task_stat() When reading /proc/[pid]/stat, do_task_stat() accesses task->real_parent without proper RCU protection, which leads to: cpu 0 cpu 1 ----- ----- do_task_stat var = task->real_parent release_task call_rcu(delayed_put_task_struct) task_tgid_nr_ns(var) rcu_read_lock <--- Too late to protect task->real_parent! task_pid_ptr <--- UAF! rcu_read_unlock This patch uses task_ppid_nr_ns() instead of task_tgid_nr_ns() to add proper RCU protection for accessing task->real_parent.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 06fffb1267c9d986687b69d74a46ee332a50575e · fixed in fefa0fcd78be465b7ad4c497fa6ec90d64194c04; From 06fffb1267c9d986687b69d74a46ee332a50575e · fixed in c93a33f28f915d446eea6fb3f0e1def0b3af1982; From 06fffb1267c9d986687b69d74a46ee332a50575e · fixed in 1c8dc5b5517546c68ffae40b948336122bb61306; From 06fffb1267c9d986687b69d74a46ee332a50575e · fixed in 0e64bd46a04a4fd61279aca9f53a664e9e5f7e7e; From 06fffb1267c9d986687b69d74a46ee332a50575e · fixed in 73ec7c96601d61d52310c659145bb06d933a0fa6; From 06fffb1267c9d986687b69d74a46ee332a50575e · fixed in 4f9ae386861e280b7631ca252f798d25575627ee; From 06fffb1267c9d986687b69d74a46ee332a50575e · fixed in dd8b13cb4ff1a4545a214ed897fdf2bc341155b6; From 06fffb1267c9d986687b69d74a46ee332a50575e · fixed in 76149d53502cf17ef3ae454ff384551236fba867
- Linux Linux
2.6.26
- KernelLinux
From 2.6.26 · fixed in 5.10.252; From 5.11.0 · fixed in 5.15.202; From 5.16.0 · fixed in 6.1.165; From 6.2.0 · fixed in 6.6.128; From 6.7.0 · fixed in 6.12.75; From 6.13.0 · fixed in 6.18.14; From 6.19.0 · fixed in 6.19.4
References 8
git.kernel.org
- stable/c/fefa0fcd78be465b7ad4c497fa6ec90d64194c04
- stable/c/c93a33f28f915d446eea6fb3f0e1def0b3af1982
- stable/c/1c8dc5b5517546c68ffae40b948336122bb61306
- stable/c/0e64bd46a04a4fd61279aca9f53a664e9e5f7e7e
- stable/c/73ec7c96601d61d52310c659145bb06d933a0fa6
- stable/c/4f9ae386861e280b7631ca252f798d25575627ee
- stable/c/dd8b13cb4ff1a4545a214ed897fdf2bc341155b6
- stable/c/76149d53502cf17ef3ae454ff384551236fba867