rxrpc: serialize kernel accept preallocation with socket teardown
- 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.266, 5.15.217, 6.1.184, 6.6.148, 6.12.101, 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: yes
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: rxrpc: serialize kernel accept preallocation with socket teardown rxrpc_kernel_charge_accept() reads rx->backlog without any socket/backlog synchronization and passes that raw pointer into rxrpc_service_prealloc_one(). A concurrent rxrpc_discard_prealloc() sets rx->backlog = NULL and frees the backlog rings, so a kernel preallocation worker can keep using a freed struct rxrpc_backlog while updating *_backlog_head/tail and array slots. Serialize the state check and backlog lookup with the socket lock, and reject kernel preallocation once teardown has disabled listening or discarded the service backlog.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 00e907127e6f86d0f9b122d9b4347a8aa09a8b61 · fixed in d6207326b4ca0ae1041281b6af9df53f8080669a; From 00e907127e6f86d0f9b122d9b4347a8aa09a8b61 · fixed in 11b429b84c87cb5a0152f14e7d6cb649ed363901; From 00e907127e6f86d0f9b122d9b4347a8aa09a8b61 · fixed in c20d983968f239574290cf804a58cde18ad1c559; From 00e907127e6f86d0f9b122d9b4347a8aa09a8b61 · fixed in 0337cdba0c477f176c0459bed012109453184573; From 00e907127e6f86d0f9b122d9b4347a8aa09a8b61 · fixed in dfa0b2bbc5e50119f89c6b5407faa5ed86dfa7c5; From 00e907127e6f86d0f9b122d9b4347a8aa09a8b61 · fixed in 35a967ff8b24db09ee429c39c5b5e6571639997d; From 00e907127e6f86d0f9b122d9b4347a8aa09a8b61 · fixed in 1741378a7a83dfd8e53a9196730df709b903cd33; From 00e907127e6f86d0f9b122d9b4347a8aa09a8b61 · fixed in dc175389b18c29a5303ee83169ec653adfae3e17
- Linux Linux
4.9
- KernelLinux
From 4.9.0 · fixed in 5.10.266; From 5.11.0 · fixed in 5.15.217; From 5.16.0 · fixed in 6.1.184; From 6.2.0 · fixed in 6.6.148; From 6.7.0 · fixed in 6.12.101; From 6.13.0 · fixed in 6.18.40; From 6.19.0 · fixed in 7.1.5
References 8
git.kernel.org
- stable/c/d6207326b4ca0ae1041281b6af9df53f8080669a
- stable/c/11b429b84c87cb5a0152f14e7d6cb649ed363901
- stable/c/c20d983968f239574290cf804a58cde18ad1c559
- stable/c/0337cdba0c477f176c0459bed012109453184573
- stable/c/dfa0b2bbc5e50119f89c6b5407faa5ed86dfa7c5
- stable/c/35a967ff8b24db09ee429c39c5b5e6571639997d
- stable/c/1741378a7a83dfd8e53a9196730df709b903cd33
- stable/c/dc175389b18c29a5303ee83169ec653adfae3e17