net: mana: Fix TOCTOU double-fetch of hwc_msg_id from DMA buffer
- 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.15.209, 6.1.175, 6.6.142, 6.12.92, 6.18.34, and 1 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: net: mana: Fix TOCTOU double-fetch of hwc_msg_id from DMA buffer In mana_hwc_rx_event_handler(), resp->response.hwc_msg_id is read from DMA-coherent memory and bounds-checked, then mana_hwc_handle_resp() re-reads the same field from the same DMA buffer for test_bit() and pointer arithmetic. DMA-coherent memory is mapped uncacheable on x86 and is shared, unencrypted, in Confidential VMs (SEV-SNP/TDX), so each load goes directly to host-visible memory. A H/W can modify the value between the check and the use, bypassing the bounds validation. Fix this by reading hwc_msg_id exactly once using READ_ONCE() into a stack-local variable in mana_hwc_rx_event_handler(), and passing the validated value as a parameter to mana_hwc_handle_resp().
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f · fixed in a201c66edf2ebc6cfdc3813a889ba20fecebfae3; From ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f · fixed in 70ad2dff8d052a85dfef15715b531f38a29108cf; From ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f · fixed in 566f42fb67a7ebfed6650e407e5b72e6b3e83bf7; From ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f · fixed in 6180a06bbc99fd9114b8db4be6c4d46e40f046ef; From ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f · fixed in 09ec063d87c2dd3fa6f3561361a017bd882e9f37; From ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f · fixed in 3c4db56ccd13dd020fbf43afabaee74a40ec75e4; From ca9c54d2d6a5ab2430c4eda364c77125d62e5e0f · fixed in 35f0f0a2536a4d604b4dbad92c85c4a8fdebb870
- Linux Linux
5.13
- KernelLinux
From 5.13.0 · fixed in 5.15.209; From 5.16.0 · fixed in 6.1.175; From 6.2.0 · fixed in 6.6.142; From 6.7.0 · fixed in 6.12.92; From 6.13.0 · fixed in 6.18.34; From 6.19.0 · fixed in 7.0.11
References 7
git.kernel.org
- stable/c/a201c66edf2ebc6cfdc3813a889ba20fecebfae3
- stable/c/70ad2dff8d052a85dfef15715b531f38a29108cf
- stable/c/566f42fb67a7ebfed6650e407e5b72e6b3e83bf7
- stable/c/6180a06bbc99fd9114b8db4be6c4d46e40f046ef
- stable/c/09ec063d87c2dd3fa6f3561361a017bd882e9f37
- stable/c/3c4db56ccd13dd020fbf43afabaee74a40ec75e4
- stable/c/35f0f0a2536a4d604b4dbad92c85c4a8fdebb870