Description
In the Linux kernel, the following vulnerability has been resolved: ipv6: sit: reload inner IPv6 header after GSO offloads ipip6_tunnel_xmit() caches the inner IPv6 header pointer at function entry and continues using it after iptunnel_handle_offloads(). For GSO skbs, iptunnel_handle_offloads() calls skb_header_unclone(). When the skb header is cloned, skb_header_unclone() can call pskb_expand_head(), which may move the skb head. The pskb_expand_head() contract requires pointers into the skb header to be reloaded after the call. If the later skb_realloc_headroom() branch is not taken, SIT uses the stale iph6 pointer to read the inner hop limit and DS field. That can read from a freed skb head after the old head's remaining clone is released. Reload iph6 after the offload helper succeeds and before subsequent reads from the inner IPv6 header. Keep the existing reload after skb_realloc_headroom(), since that branch can also replace the skb.
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
14909664e4e192f4c6f6fcdccd9919af7cf783ab to < fddd41445a0537b093e6b3f6232c9933cad1e48baffected14909664e4e192f4c6f6fcdccd9919af7cf783ab to < 1132e5edc2866c3530be17622153a597095f0e43affected14909664e4e192f4c6f6fcdccd9919af7cf783ab to < 9c67b44edb3598d234efae6e44649eb993c03da5affected14909664e4e192f4c6f6fcdccd9919af7cf783ab to < 0bfa7bba1f41aaf5f0604dc712bb4701493e3aa0affected14909664e4e192f4c6f6fcdccd9919af7cf783ab to < 59f80c919713250fe5d25a4d9aea4e49580fa1d4affected14909664e4e192f4c6f6fcdccd9919af7cf783ab to < 2fa49b2715e1bad12ce3b0fa64e234d9582c8193affected14909664e4e192f4c6f6fcdccd9919af7cf783ab to < cb658c2f5f7977c2a1c77c9f239f4bc8196edb5caffected14909664e4e192f4c6f6fcdccd9919af7cf783ab to < f0e42f0c4337b1f220de1ddd63f47197c7dee4deaffected
Linux Linux
Default version status: affected
3.18affected0 to < 3.18unaffected5.10.259 to ≤ 5.10.*unaffected5.15.210 to ≤ 5.15.*unaffected6.1.176 to ≤ 6.1.*unaffected6.6.143 to ≤ 6.6.*unaffected6.12.94 to ≤ 6.12.*unaffected6.18.36 to ≤ 6.18.*unaffected7.0.13 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/fddd41445a0537b093e6b3f6232c9933cad1e48b ↗
- https://git.kernel.org/stable/c/1132e5edc2866c3530be17622153a597095f0e43 ↗
- https://git.kernel.org/stable/c/9c67b44edb3598d234efae6e44649eb993c03da5 ↗
- https://git.kernel.org/stable/c/0bfa7bba1f41aaf5f0604dc712bb4701493e3aa0 ↗
- https://git.kernel.org/stable/c/59f80c919713250fe5d25a4d9aea4e49580fa1d4 ↗
- https://git.kernel.org/stable/c/2fa49b2715e1bad12ce3b0fa64e234d9582c8193 ↗
- https://git.kernel.org/stable/c/cb658c2f5f7977c2a1c77c9f239f4bc8196edb5c ↗
- https://git.kernel.org/stable/c/f0e42f0c4337b1f220de1ddd63f47197c7dee4de ↗
- https://cert-portal.siemens.com/productcert/html/ssa-784472.html ↗