Linux: bpf: Fix bpf_sock context code generation
What fixes it
- 4a41d064facc3330e176ecbbf5b0026ed18a5c69LinuxCVE List
- 70288599d1754e157df8326239316dbdf08ea33cLinuxCVE List
- 84ebb991ae985149079ae9ab51b7e3ba25a9ff53LinuxCVE List
- 4a4852376e3a2727ea40e61143d6d7c22bb6dfadLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
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).
Text from CVE List
Affected versions 18
- Linuxaffected: c3c16f2ea6d20159903cf93afbb1155f3d8348d5 before e3ddcf4aeb342d4de2e5761c7042270d454752deCVE List
- Linuxaffected: c3c16f2ea6d20159903cf93afbb1155f3d8348d5 before 4a41d064facc3330e176ecbbf5b0026ed18a5c69CVE List
- Linuxaffected: c3c16f2ea6d20159903cf93afbb1155f3d8348d5 before 70288599d1754e157df8326239316dbdf08ea33cCVE List
- Linuxaffected: c3c16f2ea6d20159903cf93afbb1155f3d8348d5 before ea4dc96c902ccfa49dd3e4f23c443dab4a74b018CVE List
- Linuxaffected: c3c16f2ea6d20159903cf93afbb1155f3d8348d5 before b3f37afc7fd7c52bc2114310aff1eb24c7cd4d73CVE List
- Linuxaffected: c3c16f2ea6d20159903cf93afbb1155f3d8348d5 before d95dd5a6c6cd08d5ae466d3aed27b3cf59155a6cCVE List
- Linuxaffected: c3c16f2ea6d20159903cf93afbb1155f3d8348d5 before 84ebb991ae985149079ae9ab51b7e3ba25a9ff53CVE List
- Linuxaffected: c3c16f2ea6d20159903cf93afbb1155f3d8348d5 before 4a4852376e3a2727ea40e61143d6d7c22bb6dfadCVE List
- Linuxaffected: 5.8CVE List
- Linuxunaffected: all versions before 5.8CVE List
- Linuxunaffected: 5.10.271 through 5.10.*CVE List
- Linuxunaffected: 5.15.222 through 5.15.*CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.55 through 6.18.*CVE List
- Linuxunaffected: 7.2.9 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 8
- git.kernel.org/stable/c/e3ddcf4aeb342d4de2e5761c7042270d454752deReferencevia CVE List
- git.kernel.org/stable/c/4a41d064facc3330e176ecbbf5b0026ed18a5c69Referencevia CVE List
- git.kernel.org/stable/c/70288599d1754e157df8326239316dbdf08ea33cReferencevia CVE List
- git.kernel.org/stable/c/ea4dc96c902ccfa49dd3e4f23c443dab4a74b018Referencevia CVE List
- git.kernel.org/stable/c/b3f37afc7fd7c52bc2114310aff1eb24c7cd4d73Referencevia CVE List
- git.kernel.org/stable/c/d95dd5a6c6cd08d5ae466d3aed27b3cf59155a6cReferencevia CVE List
- git.kernel.org/stable/c/84ebb991ae985149079ae9ab51b7e3ba25a9ff53Referencevia CVE List
- git.kernel.org/stable/c/4a4852376e3a2727ea40e61143d6d7c22bb6dfadReferencevia CVE List