CVE-2025-22021

CVE-2025-22021

Critical · published April 16, 2025

CVSS v3.1
10.0
EPSS
0%
Percentile
39.8
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

netfilter: socket: Lookup orig tuple for IPv6 SNAT

nf_sk_lookup_slow_v4 does the conntrack lookup for IPv4 packets to

restore the original 5-tuple in case of SNAT, to be able to find the

right socket (if any). Then socket_match() can correctly check whether

the socket was transparent.

However, the IPv6 counterpart (nf_sk_lookup_slow_v6) lacks this

conntrack lookup, making xt_socket fail to match on the socket when the

packet was SNATed. Add the same logic to nf_sk_lookup_slow_v6.

IPv6 SNAT is used in Kubernetes clusters for pod-to-world packets, as

pods' addresses are in the fd00::/8 ULA subnet and need to be replaced

with the node's external address. Cilium leverages Envoy to enforce L7

policies, and Envoy uses transparent sockets. Cilium inserts an iptables

prerouting rule that matches on `-m socket --transparent` and redirects

the packets to localhost, but it fails to match SNATed IPv6 packets due

to that missing conntrack lookup.

The record
Technical detail
CVSS v3.1
10.0 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00471 · 39.8th percentile
Published
2025-04-16T15:15Z
Affected products (8)
ProductVersionsFixed in
linux/linux_kernel≥ 3.13, < 5.4.2925.4.292
linux/linux_kernel≥ 5.5, < 5.10.2365.10.236
linux/linux_kernel≥ 5.11, < 5.15.1805.15.180
linux/linux_kernel≥ 5.16, < 6.1.1336.1.133
linux/linux_kernel≥ 6.2, < 6.6.866.6.86
linux/linux_kernel≥ 6.7, < 6.12.226.12.22
linux/linux_kernel≥ 6.13, < 6.13.106.13.10
linux/linux_kernelall versions—
References (11)
EPSS history
Timeline
  • 16 APR 10:20Z
    netfilter: socket: Lookup orig tuple for IPv6 SNAT
    cvelistv5