inet: frags: publish queues before arming timer
- 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.5, 5.10.267, 5.15.218, 6.1.185, 6.6.154, and 3 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: inet: frags: publish queues before arming timer inet_frag_create() arms the fragment queue timer before inserting the queue into the fqdir rhashtable. If the namespace fragment timeout is zero or negative, the timer can run before the queue is published. The timer callback then marks the queue complete, tries to remove a node that is not in the hash table yet, and drops the anticipated hash reference. Creation can subsequently publish the completed queue without restoring that reference, leaving a stale hash node after the caller drops the remaining reference. Publish the queue first and arm the timer while holding the queue lock. This makes timer expiry wait until the queue is visible in the hash table, so inet_frag_kill() can remove the node and balance the hash reference.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 648700f76b03b7e8149d13cc2bdb3355035258a9 · fixed in f4e4dab62181b7fe7c011bed6fbef9fc3d48c769; From 648700f76b03b7e8149d13cc2bdb3355035258a9 · fixed in 4ed0681dc2c1e0538b79d2fc56190ffcb369dacd; From 648700f76b03b7e8149d13cc2bdb3355035258a9 · fixed in 08a04d7bfb9c103432561aff8a62b6872e694a6a; From 648700f76b03b7e8149d13cc2bdb3355035258a9 · fixed in d3ffb89b2944672cf7bdd8e9ee577d2043b4a956; From 648700f76b03b7e8149d13cc2bdb3355035258a9 · fixed in 39c6c4b267b65f00e0b0335a2ae00cbe9e3174f0; From 648700f76b03b7e8149d13cc2bdb3355035258a9 · fixed in 9f904dd3e455750e5d4ec9b2f134835811b85a2f; From 648700f76b03b7e8149d13cc2bdb3355035258a9 · fixed in 928128865e43b197e30688dc1bc991592c97edcf; From 648700f76b03b7e8149d13cc2bdb3355035258a9 · fixed in 653d7ddf6cba867777a3d14c4f83ace008c5ad13; From 4.4.174 · fixed in 4.5
- Linux Linux
4.17
- KernelLinux
From 4.17.0 · fixed in 5.10.267; From 5.11.0 · fixed in 5.15.218; From 5.16.0 · fixed in 6.1.185; From 6.2.0 · fixed in 6.6.154; From 6.7.0 · fixed in 6.12.106; From 6.13.0 · fixed in 6.18.45; From 6.19.0 · fixed in 7.1.9
References 8
git.kernel.org
- stable/c/f4e4dab62181b7fe7c011bed6fbef9fc3d48c769
- stable/c/4ed0681dc2c1e0538b79d2fc56190ffcb369dacd
- stable/c/08a04d7bfb9c103432561aff8a62b6872e694a6a
- stable/c/d3ffb89b2944672cf7bdd8e9ee577d2043b4a956
- stable/c/39c6c4b267b65f00e0b0335a2ae00cbe9e3174f0
- stable/c/9f904dd3e455750e5d4ec9b2f134835811b85a2f
- stable/c/928128865e43b197e30688dc1bc991592c97edcf
- stable/c/653d7ddf6cba867777a3d14c4f83ace008c5ad13