lib: cpu_rmap: Avoid use after free on rmap->obj array entries
- 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 4.14.316, 4.19.284, 5.4.244, 5.10.181, 5.15.113, 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: lib: cpu_rmap: Avoid use after free on rmap->obj array entries When calling irq_set_affinity_notifier() with NULL at the notify argument, it will cause freeing of the glue pointer in the corresponding array entry but will leave the pointer in the array. A subsequent call to free_irq_cpu_rmap() will try to free this entry again leading to possible use after free. Fix that by setting NULL to the array entry and checking that we have non-zero at the array entry when iterating over the array in free_irq_cpu_rmap(). The current code does not suffer from this since there are no cases where irq_set_affinity_notifier(irq, NULL) (note the NULL passed for the notify arg) is called, followed by a call to free_irq_cpu_rmap() so we don't hit and issue. Subsequent patches in this series excersize this flow, hence the required fix.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 896f97ea95c1d29c0520ee0766b66b7f64cb967c · fixed in 981f339d2905b6a92ef59358158b326493aecac5; From 896f97ea95c1d29c0520ee0766b66b7f64cb967c · fixed in d1308bd0b24cb1d78fa2747d5fa3e055cc628a48; From 896f97ea95c1d29c0520ee0766b66b7f64cb967c · fixed in cc2d2b3dbfb0ba57bc027fb7e1121250c50e4000; From 896f97ea95c1d29c0520ee0766b66b7f64cb967c · fixed in f748e15253833b771acbede14ea98f50831ac289; From 896f97ea95c1d29c0520ee0766b66b7f64cb967c · fixed in c6ed54dd90698dc0744d669524cc1c122ded8a16; From 896f97ea95c1d29c0520ee0766b66b7f64cb967c · fixed in c9115f49cf260d24d8b5f2d9a4b63cb31a627bb4; From 896f97ea95c1d29c0520ee0766b66b7f64cb967c · fixed in 67bca5f1d644f4e79b694abd8052a177de81c37f; From 896f97ea95c1d29c0520ee0766b66b7f64cb967c · fixed in 4e0473f1060aa49621d40a113afde24818101d37
- Linux Linux
3.8
- KernelLinux
From 3.8.0 · fixed in 4.14.316; From 4.15.0 · fixed in 4.19.284; From 4.20.0 · fixed in 5.4.244; From 5.5.0 · fixed in 5.10.181; From 5.11.0 · fixed in 5.15.113; From 5.16.0 · fixed in 6.1.30; From 6.2.0 · fixed in 6.3.4
References 8
git.kernel.org
- stable/c/981f339d2905b6a92ef59358158b326493aecac5
- stable/c/d1308bd0b24cb1d78fa2747d5fa3e055cc628a48
- stable/c/cc2d2b3dbfb0ba57bc027fb7e1121250c50e4000
- stable/c/f748e15253833b771acbede14ea98f50831ac289
- stable/c/c6ed54dd90698dc0744d669524cc1c122ded8a16
- stable/c/c9115f49cf260d24d8b5f2d9a4b63cb31a627bb4
- stable/c/67bca5f1d644f4e79b694abd8052a177de81c37f
- stable/c/4e0473f1060aa49621d40a113afde24818101d37