bpf: Fix stack slot index in nospec checks
- 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.261, 4.20, 5.5, 5.14
- 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: bpf: Fix stack slot index in nospec checks check_stack_write_fixed_off() computes the byte slot for a fixed-offset stack write as -off - 1, and records each written byte in slot_type[] with (slot - i) % BPF_REG_SIZE. The Spectre v4 sanitization pre-check uses slot_type[i] instead. For a 4-byte write at fp-8 after the lower half of fp-8 has been zeroed, the pre-check scans bytes 0..3 and sees STACK_ZERO while the actual write updates bytes 7..4. That can leave the second half-slot write without nospec_result even though the bytes being overwritten still require sanitization. Use the same slot index in the sanitization pre-check that the write path uses when updating slot_type[].
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 5.10.56 · fixed in 5.10.261; From 4.19.207 · fixed in 4.20; From 5.4.146 · fixed in 5.5; From 5.13.8 · fixed in 5.14
- Linux Linux
5.14
References 8
git.kernel.org
- stable/c/e62268e695075a481a6c4feeb022c19cf57422a6
- stable/c/a71eb8f730a91271cf47ce291e785b6b7e54622f
- stable/c/ca119656baa8f48a56e0c2f3ab63fdd33ca9e307
- stable/c/475405593de2b796224c6297aece44f321195919
- stable/c/f1471aa76d74e0df3b2a90731ca0208f498c670b
- stable/c/68b41e68a62299f26cb16af422b5c7d1c69dafd9
- stable/c/db8f1dcf5950b91886b9df4270bc816370d292c1
- stable/c/d1d53aa30ab3b5ae89161c9cc840b3f7489ad386