In the Linux kernel, the following vulnerability has been resolved:
netfilter: flowtable: support IPIP tunnel with direct xmit
The combination of IPIP tunnel with direct xmit, eg. bridge device,
breaks because no dst_entry is provided to check the skb headroom and to
set the iph->frag_off field. This leads to invalid dst usage and can
trigger a crash in the tunnel transmit path.
Fix this by moving dst_cache and dst_cookie out of the runtime union so
that they can be shared by neighbour, xfrm, and direct tunnel flows.
For FLOW_OFFLOAD_XMIT_DIRECT tuples carrying tunnel metadata, preserve
route state in these shared fields and release it through the common
dst release path.
Since dst_entry is now available to the three supported xmit modes and
dst_release() already deals with NULL dst, remove the xmit type check
in nft_flow_dst_release(). Moreover, skip the check if the dst entry
is NULL in nf_flow_dst_check() which is now the case for the direct
xmit case.
Based on patch from Rein Wei n05ec@lzu.edu.cn.
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 remotely sourced TCP/UDP packets matching an offloaded flow are received on flowtable-bound interfaces, not via netlink configuration APIs.
AC:L - An attacker can reliably establish the offloaded flow by sending matching traffic and then repeatedly trigger the faulty IPIP direct-xmit tunnel push on subsequent packets without depending on uncontrollable timing or memory layout.
PR:N - Exploitation requires only the ability to send network traffic through an already deployed IPIP-through-bridge flowtable offload path; no local account, authentication, or CAP_NET_ADMIN on the target is needed to trigger the crash.
UI:N - No victim interaction is required beyond normal network traffic delivery; the attacker does not need the user to open files, mount filesystems, or perform any deliberate action.
S:U - Impact is confined to kernel memory corruption and denial of service on the affected network namespace/host; it does not cross a VM, container, or IOMMU security boundary to compromise a separate authority.
C:H - FLOW_OFFLOAD_XMIT_DIRECT stores MAC/ifindex data in a union aliasing dst_cache, so nf_flow_tunnel_ipip_push dereferences attacker-influenced bytes as a dst_entry/rtable, enabling uncontrolled kernel memory reads before the fault.
I:H - The same invalid dst pointer drives skb_cow_head/headroom calculations and tunnel header writes in kernel transmit context, giving a plausible path to heap corruption and control-flow disruption beyond a simple NULL dereference.
A:H - Invalid dst usage in the IPIP tunnel transmit path can cause kernel oops/panic or hard lockup when offloaded flows are exercised, fully denying availability of the affected system.
| 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 remotely sourced TCP/UDP packets matching an offloaded flow are received on flowtable-bound interfaces, not via netlink configuration APIs.
AC:L - An attacker can reliably establish the offloaded flow by sending matching traffic and then repeatedly trigger the faulty IPIP direct-xmit tunnel push on subsequent packets without depending on uncontrollable timing or memory layout.
PR:N - Exploitation requires only the ability to send network traffic through an already deployed IPIP-through-bridge flowtable offload path; no local account, authentication, or CAP_NET_ADMIN on the target is needed to trigger the crash.
UI:N - No victim interaction is required beyond normal network traffic delivery; the attacker does not need the user to open files, mount filesystems, or perform any deliberate action.
S:U - Impact is confined to kernel memory corruption and denial of service on the affected network namespace/host; it does not cross a VM, container, or IOMMU security boundary to compromise a separate authority.
C:H - FLOW_OFFLOAD_XMIT_DIRECT stores MAC/ifindex data in a union aliasing dst_cache, so nf_flow_tunnel_ipip_push dereferences attacker-influenced bytes as a dst_entry/rtable, enabling uncontrolled kernel memory reads before the fault.
I:H - The same invalid dst pointer drives skb_cow_head/headroom calculations and tunnel header writes in kernel transmit context, giving a plausible path to heap corruption and control-flow disruption beyond a simple NULL dereference.
A:H - Invalid dst usage in the IPIP tunnel transmit path can cause kernel oops/panic or hard lockup when offloaded flows are exercised, fully denying availability of the affected system.
CVSS 3.1