Description
In the Linux kernel, the following vulnerability has been resolved: bpf: Fix bpf_sock context code generation Currently, the ctx access code reads the rx_queue_mapping field with either a 4-byte or 2-byte load. The rest of the bits in the register are marked known zero by the verifier. However, the emitted ctx access code places in the register on certain the special value (-1) using BPF_MOV_IMM64, which gets sign-extended to turn on all the bits in the register. By shifting this value right, the program ends up with a value at runtime above what the verifier assumes is possible. Fix this by ensuring the read value is as wide as the assumed size. Use MOV32 instructions instead of MOV64 instructions to keep the upper bits zero as assumed by the verifier. Also properly report the size of the destination variable (the bpf_sock field, 4 bytes) instead of the source (the socket field, 2 bytes).
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
c3c16f2ea6d20159903cf93afbb1155f3d8348d5 to < e3ddcf4aeb342d4de2e5761c7042270d454752deaffectedc3c16f2ea6d20159903cf93afbb1155f3d8348d5 to < 4a41d064facc3330e176ecbbf5b0026ed18a5c69affectedc3c16f2ea6d20159903cf93afbb1155f3d8348d5 to < 70288599d1754e157df8326239316dbdf08ea33caffectedc3c16f2ea6d20159903cf93afbb1155f3d8348d5 to < ea4dc96c902ccfa49dd3e4f23c443dab4a74b018affectedc3c16f2ea6d20159903cf93afbb1155f3d8348d5 to < b3f37afc7fd7c52bc2114310aff1eb24c7cd4d73affectedc3c16f2ea6d20159903cf93afbb1155f3d8348d5 to < d95dd5a6c6cd08d5ae466d3aed27b3cf59155a6caffectedc3c16f2ea6d20159903cf93afbb1155f3d8348d5 to < 84ebb991ae985149079ae9ab51b7e3ba25a9ff53affectedc3c16f2ea6d20159903cf93afbb1155f3d8348d5 to < 4a4852376e3a2727ea40e61143d6d7c22bb6dfadaffected
Linux Linux
Default version status: affected
5.8affected0 to < 5.8unaffected5.10.271 to ≤ 5.10.*unaffected5.15.222 to ≤ 5.15.*unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.112 to ≤ 6.12.*unaffected6.18.55 to ≤ 6.18.*unaffected7.2.9 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/e3ddcf4aeb342d4de2e5761c7042270d454752de ↗
- https://git.kernel.org/stable/c/4a41d064facc3330e176ecbbf5b0026ed18a5c69 ↗
- https://git.kernel.org/stable/c/70288599d1754e157df8326239316dbdf08ea33c ↗
- https://git.kernel.org/stable/c/ea4dc96c902ccfa49dd3e4f23c443dab4a74b018 ↗
- https://git.kernel.org/stable/c/b3f37afc7fd7c52bc2114310aff1eb24c7cd4d73 ↗
- https://git.kernel.org/stable/c/d95dd5a6c6cd08d5ae466d3aed27b3cf59155a6c ↗
- https://git.kernel.org/stable/c/84ebb991ae985149079ae9ab51b7e3ba25a9ff53 ↗
- https://git.kernel.org/stable/c/4a4852376e3a2727ea40e61143d6d7c22bb6dfad ↗