Description
In the Linux kernel, the following vulnerability has been resolved: xfrm: fix stale skb->prev after async crypto steals a GSO segment skb_gso_segment() leaves the segment list head with ->prev pointing at the last segment, an invariant validate_xmit_skb_list() relies on when it sets its tail pointer (tail = skb->prev). When validate_xmit_xfrm() walks a GSO list and some segments are stolen by async crypto (->xmit() returns -EINPROGRESS), those segments are unlinked from the list but the head ->prev is never updated. If the last segment is the one stolen, the returned head still has ->prev pointing at it, even though it is now owned by the crypto engine and may be freed. validate_xmit_skb_list() later does tail->next = skb, writing through that stale pointer -- a use-after-free. Repoint skb->prev at the last retained segment before returning.
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
f53c723902d1ac5f0b0a11d7c9dcbff748dde74e to < 4927ab8a8acc8db4fad33e803d1d35e0b16cef83affectedf53c723902d1ac5f0b0a11d7c9dcbff748dde74e to < b58731e0570bfd3989999fc2baf9ee4fecd5bec6affectedf53c723902d1ac5f0b0a11d7c9dcbff748dde74e to < 33e1b0d25ca0d2818c635ff80e6aa0d295e08a98affectedf53c723902d1ac5f0b0a11d7c9dcbff748dde74e to < bbca7cc3b2b4b10afbfee99b81d9ee78f5423046affectedf53c723902d1ac5f0b0a11d7c9dcbff748dde74e to < 3f4c3919baf0944ad96580467c302bc6c7758b00affected
Linux Linux
Default version status: affected
4.16affected0 to < 4.16unaffected6.6.160 to ≤ 6.6.*unaffected6.12.114 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/4927ab8a8acc8db4fad33e803d1d35e0b16cef83 ↗
- https://git.kernel.org/stable/c/b58731e0570bfd3989999fc2baf9ee4fecd5bec6 ↗
- https://git.kernel.org/stable/c/33e1b0d25ca0d2818c635ff80e6aa0d295e08a98 ↗
- https://git.kernel.org/stable/c/bbca7cc3b2b4b10afbfee99b81d9ee78f5423046 ↗
- https://git.kernel.org/stable/c/3f4c3919baf0944ad96580467c302bc6c7758b00 ↗