ipv6: mcast: fix RCU list diversion in ip6_mc_del1_src()
- 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.11, 6.6.158, 6.12.111, 6.18.53, 7.2.7
- 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
Summary
In the Linux kernel, the following vulnerability has been resolved: ipv6: mcast: fix RCU list diversion in ip6_mc_del1_src() When removing a source filter whose count reaches zero, ip6_mc_del1_src() unlinks psf from pmc->mca_sources. If the filter was previously active, the code moved psf directly into pmc->mca_tomb by updating psf->sf_next. Because pmc->mca_sources is traversed locklessly under RCU (e.g. by ipv6_chk_mcast_addr()), mutating psf->sf_next before a grace period elapses diverts concurrent readers to the tombstone list. Consequently, readers miss remaining active sources in pmc->mca_sources and improperly examine deleted tombstone entries. Fix this by allocating a new tombstone node for pmc->mca_tomb (as done in sf_setstate()) and retiring the original psf via kfree_rcu().
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 4b200e398953c237c86d32bf26d4cb2a96556a6f · fixed in c3343cd7ec8706c221e52b782f386b9af14a928a; From 4b200e398953c237c86d32bf26d4cb2a96556a6f · fixed in 4352737297b262e8367675c19a7dc6a9f53c97af; From 4b200e398953c237c86d32bf26d4cb2a96556a6f · fixed in 8d4fe5c13f5056faa6deb09a90e24a89f9ebfad4; From 4b200e398953c237c86d32bf26d4cb2a96556a6f · fixed in 5149c60c406595b56fda0c6e9aae7fd287f636aa; From 4b200e398953c237c86d32bf26d4cb2a96556a6f · fixed in 93b49239840b91313adbd77b8b52993eff2d08c1; From 5.10.261 · fixed in 5.11
- Linux Linux
5.13
- KernelLinux
From 5.13.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.53; From 6.19.0 · fixed in 7.2.7