Description
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[].
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
0e9280654aa482088ee6ef3deadef331f5ac5fb0 to < e62268e695075a481a6c4feeb022c19cf57422a6affected2039f26f3aca5b0e419b98f65dd36481337b86ee to < a71eb8f730a91271cf47ce291e785b6b7e54622faffected2039f26f3aca5b0e419b98f65dd36481337b86ee to < ca119656baa8f48a56e0c2f3ab63fdd33ca9e307affected2039f26f3aca5b0e419b98f65dd36481337b86ee to < 475405593de2b796224c6297aece44f321195919affected2039f26f3aca5b0e419b98f65dd36481337b86ee to < f1471aa76d74e0df3b2a90731ca0208f498c670baffected2039f26f3aca5b0e419b98f65dd36481337b86ee to < 68b41e68a62299f26cb16af422b5c7d1c69dafd9affected2039f26f3aca5b0e419b98f65dd36481337b86ee to < db8f1dcf5950b91886b9df4270bc816370d292c1affected2039f26f3aca5b0e419b98f65dd36481337b86ee to < d1d53aa30ab3b5ae89161c9cc840b3f7489ad386affected872968502114d68c21419cf7eb5ab97717e7b803affectedf5893af2704eb763eb982f01d573f5b19f06b623affected0b27bdf02c400684225ee5ee99970bcbf5082282affected5.10.56 to < 5.10.261affected4.19.207 to < 4.20affected5.4.146 to < 5.5affected5.13.8 to < 5.14affected
Linux Linux
Default version status: affected
5.14affected0 to < 5.14unaffected5.10.261 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.97 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/e62268e695075a481a6c4feeb022c19cf57422a6 ↗
- https://git.kernel.org/stable/c/a71eb8f730a91271cf47ce291e785b6b7e54622f ↗
- https://git.kernel.org/stable/c/ca119656baa8f48a56e0c2f3ab63fdd33ca9e307 ↗
- https://git.kernel.org/stable/c/475405593de2b796224c6297aece44f321195919 ↗
- https://git.kernel.org/stable/c/f1471aa76d74e0df3b2a90731ca0208f498c670b ↗
- https://git.kernel.org/stable/c/68b41e68a62299f26cb16af422b5c7d1c69dafd9 ↗
- https://git.kernel.org/stable/c/db8f1dcf5950b91886b9df4270bc816370d292c1 ↗
- https://git.kernel.org/stable/c/d1d53aa30ab3b5ae89161c9cc840b3f7489ad386 ↗