Description
In the Linux kernel, the following vulnerability has been resolved: seg6: validate SRH length before reading fixed fields seg6_validate_srh() reads fixed SRH fields such as srh->type and srh->hdrlen before checking that the supplied length covers the fixed struct ipv6_sr_hdr fields. The BPF SEG6 encap path reaches this with a BPF program-supplied pointer and length: bpf_lwt_push_encap() and the SEG6 local BPF END_B6 and END_B6_ENCAP actions call bpf_push_seg6_encap(), which forwards the length to seg6_validate_srh() with no minimum-size guard. A 2-byte SEG6 encap header can therefore make the validator read srh->type at offset 2 beyond the caller-supplied buffer. Reject lengths shorter than the fixed SRH at the top of seg6_validate_srh(), before any field is read. This fixes the BPF helper path and keeps the common validator robust.
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
fe94cc290f535709d3c5ebd1e472dfd0aec7ee79 to < 715eb12e453df752f1b4baaf972c3acff0ab9402affectedfe94cc290f535709d3c5ebd1e472dfd0aec7ee79 to < 7247d05c987c3eec4bb7c2306dbd77ecdf3b7c73affectedfe94cc290f535709d3c5ebd1e472dfd0aec7ee79 to < 071f1a38d7ddbadee29c09b9e3ee0ff3a61e6a0eaffectedfe94cc290f535709d3c5ebd1e472dfd0aec7ee79 to < 804bb969f194c93497ba632b98343794c6367fdcaffectedfe94cc290f535709d3c5ebd1e472dfd0aec7ee79 to < 0fc7069d39239978130c37ebceaec85c8948d3f1affectedfe94cc290f535709d3c5ebd1e472dfd0aec7ee79 to < 8dba7a94a269b88e500aafc25ad567ef6a423698affectedfe94cc290f535709d3c5ebd1e472dfd0aec7ee79 to < c9961336aa5ff83092f23e33ee86666a9dbd1b2aaffectedfe94cc290f535709d3c5ebd1e472dfd0aec7ee79 to < a75d99f46bf21b45965ce39c5cfb3b8bb5ffb1aaaffected
Linux Linux
Default version status: affected
4.18affected0 to < 4.18unaffected5.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/715eb12e453df752f1b4baaf972c3acff0ab9402 ↗
- https://git.kernel.org/stable/c/7247d05c987c3eec4bb7c2306dbd77ecdf3b7c73 ↗
- https://git.kernel.org/stable/c/071f1a38d7ddbadee29c09b9e3ee0ff3a61e6a0e ↗
- https://git.kernel.org/stable/c/804bb969f194c93497ba632b98343794c6367fdc ↗
- https://git.kernel.org/stable/c/0fc7069d39239978130c37ebceaec85c8948d3f1 ↗
- https://git.kernel.org/stable/c/8dba7a94a269b88e500aafc25ad567ef6a423698 ↗
- https://git.kernel.org/stable/c/c9961336aa5ff83092f23e33ee86666a9dbd1b2a ↗
- https://git.kernel.org/stable/c/a75d99f46bf21b45965ce39c5cfb3b8bb5ffb1aa ↗