In the Linux kernel, the following vulnerability has been resolved:
netfilter: flowtable: use dst in this direction when pushing IPIP header
When pushing the IPIP header, the route of the other direction is used
to calculate the headroom, use the route in this direction. Accessing
the other tuple to set the IP source and destination is fine because
this tuple does not provide such information to avoid storing redundant
information. However, this tuple already provides the dst for this
direction, this went unnoticed because this bug affects headroom and
iph->frag_off only at this stage.
CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS Score: 9.8
AV:N - The bug is hit in the netfilter flowtable ingress fast path when offloaded TCP/UDP packets are received on bound netdevs and tunnel encapsulation runs; a remote peer can trigger it by sending traffic through an IPIP flow-offload gateway without local access.
AC:L - After a flow is offloaded (easily created by the attacker's own connections), asymmetric IPIP gateway routing predictably makes the reverse-direction dst underestimate headroom, so skb_cow_head undersizes and skb_push corrupts memory on each matching packet.
PR:N - The attacker only needs to send network packets that match an established offloaded flow; nftables flowtable/IPIP setup is an administrator deployment precondition, not a privilege the attacker must hold on the target system.
UI:N - No victim user action is required beyond normal network traffic once flow offload is enabled; exploitation is driven entirely by packets the attacker sends to the gateway.
S:U - Impact is confined to kernel heap memory corruption and potential local privilege escalation within the same host; it does not cross VM, container, or IOMMU security boundaries.
C:H - Undersized headroom lets skb_push write before skb->head, causing out-of-bounds heap corruption that can expose adjacent kernel objects and be leveraged into arbitrary memory disclosure primitives.
I:H - The same skb head underflow is a writable heap corruption primitive that can overwrite adjacent allocator metadata or object contents and be developed into arbitrary kernel code execution.
A:H - Heap corruption from skb_push underflow can immediately kernel oops/panic the system or be triggered repeatedly to deny service on an internet-facing VPN/edge gateway.
| Attack Vector |
Network |
Scope |
Unchanged |
| Attack Complexity |
Low |
Confidentiality Impact |
High |
| Privileges Required |
None |
Integrity Impact |
High |
| User Interaction |
None |
Availability Impact |
High |
AV:N - The bug is hit in the netfilter flowtable ingress fast path when offloaded TCP/UDP packets are received on bound netdevs and tunnel encapsulation runs; a remote peer can trigger it by sending traffic through an IPIP flow-offload gateway without local access.
AC:L - After a flow is offloaded (easily created by the attacker's own connections), asymmetric IPIP gateway routing predictably makes the reverse-direction dst underestimate headroom, so skb_cow_head undersizes and skb_push corrupts memory on each matching packet.
PR:N - The attacker only needs to send network packets that match an established offloaded flow; nftables flowtable/IPIP setup is an administrator deployment precondition, not a privilege the attacker must hold on the target system.
UI:N - No victim user action is required beyond normal network traffic once flow offload is enabled; exploitation is driven entirely by packets the attacker sends to the gateway.
S:U - Impact is confined to kernel heap memory corruption and potential local privilege escalation within the same host; it does not cross VM, container, or IOMMU security boundaries.
C:H - Undersized headroom lets skb_push write before skb->head, causing out-of-bounds heap corruption that can expose adjacent kernel objects and be leveraged into arbitrary memory disclosure primitives.
I:H - The same skb head underflow is a writable heap corruption primitive that can overwrite adjacent allocator metadata or object contents and be developed into arbitrary kernel code execution.
A:H - Heap corruption from skb_push underflow can immediately kernel oops/panic the system or be triggered repeatedly to deny service on an internet-facing VPN/edge gateway.
CVSS 3.1