Cloudanix VulnDB

CVE-2025-37959

None

CVSS

—

EPSS

0.4%

Published

May 20, 2025

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A kernel networking bug can let information from one isolated network area leak into another, breaking secure communication paths and causing traffic to be dropped unexpectedly.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Data Exposure
Component
OS kernel
Class
Information Disclosure
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The flaw fails to scrub skb metadata such as XFRM extensions when bpf_redirect_peer switches a packet between network namespaces, allowing host-namespace state to be interpreted in the destination namespace and cause policy violations or information leakage.

Why it matters to the business

Organizations running container networking stacks that rely on BPF redirects across namespaces may experience unexpected traffic drops and connectivity failures; the issue is widespread in Linux-based environments but carries low immediate exploitation risk.

How an attack unfolds

An attacker with the ability to influence packet paths through bpf_redirect_peer can preserve sensitive skb extensions (for example XFRM decryption state) across a namespace boundary, leading to policy mismatches that drop traffic or expose metadata; listed threat actors have targeted similar kernel BPF and privilege-escalation issues in the Linux kernel.

How to fix it

Update the Linux kernel to the commit de1067cc8cf0e8c11ae20cbe5c467aef19d04ded or later stable releases that include the skb scrub on bpf_redirect_peer; rebuild and reboot systems or apply distribution backports as soon as available.

How to confirm the fix worked

Verify the running kernel contains commit de1067cc8cf0e8c11ae20cbe5c467aef19d04ded, confirm bpf_redirect_peer paths now clear skb extensions, and test cross-namespace redirect scenarios with IPsec or XFRM policies present.

Typical attack path

  1. Compromise or control a process that can attach BPF programs using bpf_redirect_peer
  2. Cause a packet to traverse an IPsec or XFRM path in the source namespace
  3. Redirect the packet into a different namespace via bpf_redirect_peer
  4. Trigger XFRM policy checks in the destination namespace that act on the leaked skb extensions
  5. Observe drops (e.g., XFRMINNOPOLS) or other unintended behavior

How to detect it

Search system and audit logs for repeated SKB_DROP_REASON_XFRM_POLICY or LINUX_MIB_XFRMINNOPOLS entries that coincide with bpf_redirect_peer activity across netns boundaries; inspect pwru or bpftrace traces showing non-zero active_extensions after netns switches.

  • SKB_DROP_REASON_XFRM_POLICY
  • LINUX_MIB_XFRMINNOPOLS
  • bpf_redirect_peer
  • .active_extensions = (__u8)2

What your security team should do

  • Prioritize kernel upgrades on systems using Cilium or other BPF-based cross-namespace networking
  • Monitor for SKB_DROP_REASON_XFRM_POLICY drops in container namespaces after redirects
  • Review BPF programs that call bpf_redirect_peer and consider fallback paths until patched
  • Track EPSS trend and kernel mailing list for backports in supported distributions

The record

In the Linux kernel, the following vulnerability has been resolved: bpf: Scrub packet on bpf_redirect_peer When bpf_redirect_peer is used to redirect packets to a device in another network namespace, the skb isn't scrubbed. That can lead skb information from one namespace to be "misused" in another namespace. As one example, this is causing Cilium to drop traffic when using bpf_redirect_peer to redirect packets that just went through IPsec decryption to a container namespace. The following pwru trace shows (1) the packet path from the host's XFRM layer to the container's XFRM layer where it's dropped and (2) the number of active skb extensions at each function. NETNS MARK IFACE TUPLE FUNC 4026533547 d00 eth0 10.244.3.124:35473->10.244.2.158:53 xfrm_rcv_cb .active_extensions = (__u8)2, 4026533547 d00 eth0 10.244.3.124:35473->10.244.2.158:53 xfrm4_rcv_cb .active_extensions = (__u8)2, 4026533547 d00 eth0 10.244.3.124:35473->10.244.2.158:53 gro_cells_receive .active_extensions = (__u8)2, [...] 4026533547 0 eth0 10.244.3.124:35473->10.244.2.158:53 skb_do_redirect .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473->10.244.2.158:53 ip_rcv .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473->10.244.2.158:53 ip_rcv_core .active_extensions = (__u8)2, [...] 4026534999 0 eth0 10.244.3.124:35473->10.244.2.158:53 udp_queue_rcv_one_skb .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473->10.244.2.158:53 __xfrm_policy_check .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473->10.244.2.158:53 __xfrm_decode_session .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473->10.244.2.158:53 security_xfrm_decode_session .active_extensions = (__u8)2, 4026534999 0 eth0 10.244.3.124:35473->10.244.2.158:53 kfree_skb_reason(SKB_DROP_REASON_XFRM_POLICY) .active_extensions = (__u8)2, In this case, there are no XFRM policies in the container's network namespace so the drop is unexpected. When we decrypt the IPsec packet, the XFRM state used for decryption is set in the skb extensions. This information is preserved across the netns switch. When we reach the XFRM policy check in the container's netns, __xfrm_policy_check drops the packet with LINUX_MIB_XFRMINNOPOLS because a (container-side) XFRM policy can't be found that matches the (host-side) XFRM state used for decryption. This patch fixes this by scrubbing the packet when using bpf_redirect_peer, as is done on typical netns switches via veth devices except skb->mark and skb->tstamp are not zeroed.

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 linux 0 No fix
Debian:11 linux-6.1 0 6.1.140-1~deb11u1
Debian:12 linux 0 6.1.140-1
Debian:13 linux 0 No fix
Debian:13 linux 0 6.12.29-1
Debian:14 linux 0 6.12.29-1
Linux Kernel 5.10.0 6.1.139
Mageia:9 dwarves 0 1.30-1.mga9
Mageia:9 kernel 0 6.6.93-1.mga9
Mageia:9 kernel-firmware 0 20250509-1.mga9
Mageia:9 kernel-firmware-nonfree 0 20250509-1.mga9.nonfree
Mageia:9 kernel-linus 0 6.6.93-1.mga9
Mageia:9 kmod-virtualbox 0 7.1.8-3.mga9
Mageia:9 kmod-xtables-addons 0 3.24-80.mga9
Mageia:9 libtraceevent 0 1.8.4-1.mga9
Mageia:9 libtracefs 0 1.8.2-1.mga9
Mageia:9 radeon-firmware 0 20250509-1.mga9.nonfree
Mageia:9 wireless-regdb 0 20250220-1.mga9
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_11 0 1-150600.1.3.2
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_12 0 1-150600.13.3.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.53.1.150600.12.24.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco_debug 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-source-coco 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-syms-coco 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.40.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.40.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.40.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.53.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.39.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.39.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.39.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.40.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.53.1.150600.12.24.1
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.40.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.40.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.53.1

Related vulnerabilities