Description
In the Linux kernel, the following vulnerability has been resolved: net: skbuff: fix pull-bound underflow in skb_checksum_setup_ipv6() skb_maybe_pull_tail() subtracts skb_headlen(skb) from the unsigned max argument and passes the result to __pskb_pull_tail() as a signed int. The function does not ensure that max is at least skb_headlen(skb). This can happen while parsing IPv6 extension headers when an skb already has a linear area larger than MAX_IPV6_HDR_LEN. Once the parser needs data beyond the linear area, max - skb_headlen(skb) wraps and is converted to a negative delta. __pskb_pull_tail() then passes that negative length to skb_copy_bits(), where it can become a very large copy length. Pass the requested length itself as the pull bound at the three extension-header call sites, so the delta can no longer go negative.
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
1431fb31ecbaba1b5718006128f0f2ed0b94e1c3 to < 9c4e432132a97b82edf28fa172c39f743e6bfb26affected1431fb31ecbaba1b5718006128f0f2ed0b94e1c3 to < 718747afa5463d9cc5fd9a09f03b2a492edd9b78affected1431fb31ecbaba1b5718006128f0f2ed0b94e1c3 to < a0ad0473c09d2e947aecac5c82e637ec85924b12affected1431fb31ecbaba1b5718006128f0f2ed0b94e1c3 to < b2da5ed3d8c75e1b729a21b6d3beaed415e263f6affected1431fb31ecbaba1b5718006128f0f2ed0b94e1c3 to < 6c28c31f051dbf49c71ba7ab7bb9bc905fa1d14baffected1431fb31ecbaba1b5718006128f0f2ed0b94e1c3 to < cfa643f2ca36c6f913fe1a2ceb12412ebb0fd962affected1431fb31ecbaba1b5718006128f0f2ed0b94e1c3 to < d7f474226809471dc7877435e9c492cc914df0bfaffected1431fb31ecbaba1b5718006128f0f2ed0b94e1c3 to < 3b4e0b0c008a8c1b474730248cd5b873026c74bdaffected
Linux Linux
Default version status: affected
3.13affected0 to < 3.13unaffected5.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/9c4e432132a97b82edf28fa172c39f743e6bfb26 ↗
- https://git.kernel.org/stable/c/718747afa5463d9cc5fd9a09f03b2a492edd9b78 ↗
- https://git.kernel.org/stable/c/a0ad0473c09d2e947aecac5c82e637ec85924b12 ↗
- https://git.kernel.org/stable/c/b2da5ed3d8c75e1b729a21b6d3beaed415e263f6 ↗
- https://git.kernel.org/stable/c/6c28c31f051dbf49c71ba7ab7bb9bc905fa1d14b ↗
- https://git.kernel.org/stable/c/cfa643f2ca36c6f913fe1a2ceb12412ebb0fd962 ↗
- https://git.kernel.org/stable/c/d7f474226809471dc7877435e9c492cc914df0bf ↗
- https://git.kernel.org/stable/c/3b4e0b0c008a8c1b474730248cd5b873026c74bd ↗