Description
In the Linux kernel, the following vulnerability has been resolved: bpf: Explicitly check accesses to bpf_sock_addr Syzkaller found a kernel warning on the following sock_addr program: 0: r0 = 0 1: r2 = *(u32 *)(r1 +60) 2: exit which triggers: verifier bug: error during ctx access conversion (0) This is happening because offset 60 in bpf_sock_addr corresponds to an implicit padding of 4 bytes, right after msg_src_ip4. Access to this padding isn't rejected in sock_addr_is_valid_access and it thus later fails to convert the access. This patch fixes it by explicitly checking the various fields of bpf_sock_addr in sock_addr_is_valid_access. I checked the other ctx structures and is_valid_access functions and didn't find any other similar cases. Other cases of (properly handled) padding are covered in new tests in a subsequent patch.
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
1cedee13d25ab118d325f95588c1a084e9317229 to < de44cdc50d2dce8718cb57deddf9cf1be9a7759faffected1cedee13d25ab118d325f95588c1a084e9317229 to < 76e04bbb4296fb6eac084dbfc27e02ccc744db3eaffected1cedee13d25ab118d325f95588c1a084e9317229 to < 6d8b1a21fd5c34622b0c3893c61e4a38d8ba53ecaffected1cedee13d25ab118d325f95588c1a084e9317229 to < 4f00858cd9bbbdf67159e28b85a8ca9e77c83622affected1cedee13d25ab118d325f95588c1a084e9317229 to < cdeafacb4f9ff261a96baef519e29480fd7b1019affected1cedee13d25ab118d325f95588c1a084e9317229 to < fe9d33f0470350558cb08cecb54cf2267b3a45d2affected1cedee13d25ab118d325f95588c1a084e9317229 to < ad8b4fe5617e3c85fc23267f02500c4f3bf0ff69affected1cedee13d25ab118d325f95588c1a084e9317229 to < 6fabca2fc94d33cdf7ec102058983b086293395faffected
Linux Linux
Default version status: affected
4.18affected0 to < 4.18unaffected5.4.301 to ≤ 5.4.*unaffected5.10.246 to ≤ 5.10.*unaffected5.15.195 to ≤ 5.15.*unaffected6.1.156 to ≤ 6.1.*unaffected6.6.112 to ≤ 6.6.*unaffected6.12.53 to ≤ 6.12.*unaffected6.17.3 to ≤ 6.17.*unaffected6.18 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/de44cdc50d2dce8718cb57deddf9cf1be9a7759f ↗
- https://git.kernel.org/stable/c/76e04bbb4296fb6eac084dbfc27e02ccc744db3e ↗
- https://git.kernel.org/stable/c/6d8b1a21fd5c34622b0c3893c61e4a38d8ba53ec ↗
- https://git.kernel.org/stable/c/4f00858cd9bbbdf67159e28b85a8ca9e77c83622 ↗
- https://git.kernel.org/stable/c/cdeafacb4f9ff261a96baef519e29480fd7b1019 ↗
- https://git.kernel.org/stable/c/fe9d33f0470350558cb08cecb54cf2267b3a45d2 ↗
- https://git.kernel.org/stable/c/ad8b4fe5617e3c85fc23267f02500c4f3bf0ff69 ↗
- https://git.kernel.org/stable/c/6fabca2fc94d33cdf7ec102058983b086293395f ↗
- https://cert-portal.siemens.com/productcert/html/ssa-019113.html ↗
- https://cert-portal.siemens.com/productcert/html/ssa-457936.html ↗