kernel/sys.c: fix the racy usage of task_lock(tsk->group_leader) in sys_prlimit64() paths
- 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 6.1.157, 6.6.113, 6.12.54, 6.17.4
- 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: kernel/sys.c: fix the racy usage of task_lock(tsk->group_leader) in sys_prlimit64() paths The usage of task_lock(tsk->group_leader) in sys_prlimit64()->do_prlimit() path is very broken. sys_prlimit64() does get_task_struct(tsk) but this only protects task_struct itself. If tsk != current and tsk is not a leader, this process can exit/exec and task_lock(tsk->group_leader) may use the already freed task_struct. Another problem is that sys_prlimit64() can race with mt-exec which changes ->group_leader. In this case do_prlimit() may take the wrong lock, or (worse) ->group_leader may change between task_lock() and task_unlock(). Change sys_prlimit64() to take tasklist_lock when necessary. This is not nice, but I don't see a better fix for -stable.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 18c91bb2d87268d23868bf13508f5bc9cf04e89a · fixed in 1bc0d9315ef5296abb2c9fd840336255850ded18; From 18c91bb2d87268d23868bf13508f5bc9cf04e89a · fixed in 132f827e7bac7373e1522e89709d70b43cae5342; From 18c91bb2d87268d23868bf13508f5bc9cf04e89a · fixed in 19b45c84bd9fd42fa97ff80c6350d604cb871c75; From 18c91bb2d87268d23868bf13508f5bc9cf04e89a · fixed in 6796412decd2d8de8ec708213bbc958fab72f143; From 18c91bb2d87268d23868bf13508f5bc9cf04e89a · fixed in a15f37a40145c986cdf289a4b88390f35efdecc4
- Linux Linux
5.18
- KernelLinux
From 5.18.0 · fixed in 6.1.157; From 6.2.0 · fixed in 6.6.113; From 6.7.0 · fixed in 6.12.54; From 6.13.0 · fixed in 6.17.4