In the Linux kernel, the following vulnerability has been resolved:
xfrm: reject optional IPTFS templates in outbound policies
syzbot reported a stack-out-of-bounds read in xfrm_state_find() which flows from xfrm_tmpl_resolve_one().
Commit 3d776e31c841 ("xfrm: Reject optional tunnel/BEET mode templates in outbound policies") disallowed optional tunnel and BEET in outbound policies to prevent this. Later when IPTFS added, it was not covered by that fix and can still trigger the out-of-bounds read;
Extend the check to disallow optional IPTFS in outbound policies as well. IPTFS should be identical to tunnel mode. IN and FWD policies are not affected: xfrm_tmpl_resolve_one() is only reachable via the outbound path.
Reproducer, before:
ip link add dummy0 type dummy ip link set dummy0 up ip addr add 10.1.1.1/24 dev dummy0 ip xfrm policy add src 10.1.1.1/32 dst 10.1.1.2/32 dir out tmpl src fc00::dead:1 dst fc00::dead:2 proto esp reqid 1 mode iptfs level use tmpl src fc00::dead:1 dst fc00::dead:2 proto esp reqid 2 mode transport ping -W 1 -c 1 10.1.1.2 PING 10.1.1.2 (10.1.1.2) 56(84) bytes of data.
[ 64.168420] ================================================================== [ 64.169977] BUG: KASAN: stack-out-of-bounds in __xfrm6_addr_hash+0x11e/0x170 [ 64.169977] Read of size 4 at addr ffff88800e1ffd20 by task ping/2844
[ 64.169977] CPU: 2 UID: 0 PID: 2844 Comm: ping Not tainted 7.1.0-rc7-00180-geb23b588430a #98 PREEMPT(full) [ 64.169977] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [ 64.169977] Call Trace: [ 64.169977] <TASK> [ 64.169977] dump_stack_lvl+0x47/0x70 [ 64.169977] ? __xfrm6_addr_hash+0x11e/0x170 [ 64.169977] print_report+0x152/0x4b0 [ 64.169977] ? ksys_mmap_pgoff+0x6d/0xa0 [ 64.169977] ? entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 64.169977] ? rcu_read_unlock_sched+0xa/0x20 [ 64.169977] ? __virt_addr_valid+0x21b/0x230 [ 64.169977] ? __xfrm6_addr_hash+0x11e/0x170 [ 64.169977] kasan_report+0xa8/0xd0 [ 64.169977] ? __xfrm6_addr_hash+0x11e/0x170 [ 64.169977] __xfrm6_addr_hash+0x11e/0x170 [ 64.169977] __xfrm_dst_hash+0x24/0xc0 [ 64.169977] xfrm_state_find+0xa2d/0x2f90 [ 64.169977] ? __pfx_xfrm_state_find+0x10/0x10 [ 64.169977] ? __pfx_ftrace_graph_ret_addr+0x10/0x10 [ 64.169977] ? __pfx_ftrace_graph_ret_addr+0x10/0x10 [ 64.169977] xfrm_tmpl_resolve_one+0x210/0x570 [ 64.169977] ? __pfx_xfrm_tmpl_resolve_one+0x10/0x10 [ 64.169977] ? __pfx_stack_trace_consume_entry+0x10/0x10 [ 64.169977] ? kernel_text_address+0x5b/0x80 [ 64.169977] ? __kernel_text_address+0xe/0x30 [ 64.169977] ? unwind_get_return_address+0x5e/0x90 [ 64.169977] ? arch_stack_walk+0x8c/0xe0 [ 64.169977] xfrm_tmpl_resolve+0x130/0x200 [ 64.169977] ? __pfx_xfrm_tmpl_resolve+0x10/0x10 [ 64.169977] ? __pfx_xfrm_policy_inexact_lookup_rcu+0x10/0x10 [ 64.169977] ? __refcount_add_not_zero.constprop.0+0xb2/0x110 [ 64.169977] ? __pfx___refcount_add_not_zero.constprop.0+0x10/0x10 [ 64.169977] xfrm_resolve_and_create_bundle+0xd5/0x310 [ 64.169977] ? __pfx_xfrm_resolve_and_create_bundle+0x10/0x10 [ 64.169977] ? __pfx_xfrm_policy_lookup_bytype+0x10/0x10 [ 64.169977] ? __pfx_xfrm_policy_lookup_bytype+0x10/0x10 [ 64.169977] xfrm_lookup_with_ifid+0x3d8/0xb80 [ 64.169977] ? __pfx_xfrm_lookup_with_ifid+0x10/0x10 [ 64.169977] ? ip_route_output_key_hash+0xc6/0x110 [ 64.169977] ? kasan_save_track+0x10/0x30 [ 64.169977] xfrm_lookup_route+0x18/0xe0 [ 64.169977] ip4_datagram_release_cb+0x4c9/0x530 [ 64.169977] ? __pfx_ip4_datagram_release_cb+0x10/0x10 [ 64.169977] ? do_raw_spin_lock+0x71/0xc0 [ 64.169977] ? __pfx_do_raw_spin_lock+0x10/0x10 [ 64.169977] release_sock+0xb0/0x170 [ 64.169977] udp_connect+0x43/0x50 [ 64.169977] __sys_connect+0xa6/0x100 [ 64.169977] ? alloc_fd+0x2e9/0x300 [ 64.169977] ? __pfx___sys_connect+0x10/0x10 [ 64.169977] ? preempt_latency ---truncated---
CVSS Details
- CVSS 3.1 Base Score: 7.1
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade perf6.18Upgrade kernel6.18-tools-develUpgrade kernel6.18-modules-extraUpgrade kernel6.18-toolsUpgrade kernel6.18-debuginfoUpgrade python3-perf6.18Upgrade python3-perf6.18-debuginfoUpgrade kernel6.18-develUpgrade kernel6.18-tools-debuginfoUpgrade microvm-kernel6.18Upgrade kernel6.18-debuginfo-common-x86_64Upgrade kernel6.18-headersUpgrade kernel-livepatch-6.18.44-99.149Upgrade bpftool6.18-debuginfoUpgrade kernel6.18Upgrade perf6.18-debuginfoUpgrade kernel6.18-debuginfo-common-aarch64Upgrade kernel6.18-modules-extra-commonUpgrade bpftool6.18 | Sep 30, 2026 | Aug 10, 2026 |
| Redhat_linux | — | No solution exists | Aug 13, 2026 | Aug 10, 2026 |
| Ubuntu | — | Upgrade linux-image-realtime-hwe-26.04Upgrade linux-image-realtime-64kUpgrade linux-image-virtualUpgrade linux-image-gke-7.0Upgrade linux-image-generic-64k-7.0Upgrade linux-image-azure-fde-lts-26.04Upgrade linux-image-7.0.0-38-realtimeUpgrade linux-image-realtime-7.0Upgrade linux-image-gke-64k-7.0Upgrade linux-image-7.0.0-38-realtime-64kUpgrade linux-image-aws-64kUpgrade linux-image-generic-7.0Upgrade linux-image-oem-26.04aUpgrade linux-image-7.0.0-1014-gcpUpgrade linux-image-oracleUpgrade linux-image-gke-hwe-26.04Upgrade linux-image-realtimeUpgrade linux-image-7.0.0-1017-azureUpgrade linux-image-gcp-64k-7.0Upgrade linux-image-virtual-7.0Upgrade linux-image-oem-7.0Upgrade linux-image-aws-64k-7.0Upgrade linux-image-genericUpgrade linux-image-generic-hwe-26.04Upgrade linux-image-7.0.0-1013-oracle-64kUpgrade linux-image-generic-64k-hwe-26.04Upgrade linux-image-realtime-64k-7.0Upgrade linux-image-7.0.0-1015-oemUpgrade linux-image-7.0.0-1016-azure-fdeUpgrade linux-image-7.0.0-1014-aws-64kUpgrade linux-image-gke-64k-hwe-26.04Upgrade linux-image-aws-7.0Upgrade linux-image-gcp-64kUpgrade linux-image-gkeUpgrade linux-image-7.0.0-1008-gke-64kUpgrade linux-image-ibm-7.0Upgrade linux-image-virtual-hwe-26.04Upgrade linux-image-azure-lts-26.04Upgrade linux-image-azure-fde-7.0Upgrade linux-image-oem-26.04Upgrade linux-image-oracle-64k-7.0Upgrade linux-image-gke-64kUpgrade linux-image-gcp-7.0Upgrade linux-image-awsUpgrade linux-image-7.0.0-38-genericUpgrade linux-image-7.0.0-38-generic-64kUpgrade linux-image-ibmUpgrade linux-image-7.0.0-1014-awsUpgrade linux-image-generic-64kUpgrade linux-image-7.0.0-1013-oracleUpgrade linux-image-realtime-64k-hwe-26.04Upgrade linux-image-7.0.0-1015-ibmUpgrade linux-image-7.0.0-1008-gkeUpgrade linux-image-azureUpgrade linux-image-azure-7.0Upgrade linux-image-azure-fdeUpgrade linux-image-7.0.0-1014-gcp-64kUpgrade linux-image-oracle-7.0Upgrade linux-image-gcpUpgrade linux-image-oracle-64k | Oct 7, 2026 | Oct 6, 2026 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub