CVE-2026-72251: netfilter: nf_nat_sip: reload possible stale data pointer
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nfnatsip: reload possible stale data pointer
quoting sashiko: ------------------------------------------------------------------------ [..] noticed a potential memory bug and header corruption involving the SIP NAT helper.
In net/netfilter/nfnatsip.c:nfnatsip(): if (skbensurewritable(skb, skb->len)) { nfcthelperlog(skb, ct, "cannot mangle packet"); return NFDROP; } uh = (void )skb->data + protoff; uh->dest = ctsipinfo->forceddport; if (!nfnatmangleudppacket(skb, ct, ctinfo, protoff, 0, 0, NULL, 0)) {
If a cloned or fragmented SKB is reallocated by skbensurewritable(), the old data buffer is freed. However, nfnatsip() fails to update dptr to point to the new buffer.
It also appears to use nfnatmangleudppacket() on what could be a TCP packet, which would overwrite the sequence number with a checksum update. ------------------------------------------------------------------------
nfconntracksip linerizes skbs, hence no fragmented skb can be seen. But clones are possible, so rebuild dptr.
Disable nfnatmangleudppacket() branch for TCP streams. It doesn't look like this can ever happen, else we should have received bug reports about this, so just check the conntrack is UDP and drop otherwise.
The calling conntracksip set ->forceddport for SIPHDRVIAUDP messages, so I don't think this is ever expected to be true for a TCP stream.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
In net/netfilter/nf_nat_sip.c (nf_nat_sip), ensure the conntrack is UDP before calling nf_nat_mangle_udp_packet(); add logic to check conntrack is UDP and return NF_DROP for non-UDP so that the nf_nat_mangle_udp_packet() path is not used for TCP streams, preventing stale data pointer/header corruption.
Linux kernel netfilter (nf_nat_sip) SIP NAT mangle behavior for non-UDP streams = Drop TCP streams (verify conntrack is UDP before nf_nat_mangle_udp_packet)
Event History
Frequently Asked Questions
What is the severity of CVE-2026-72251?
The severity of CVE-2026-72251 is rated at 44, indicating a significant risk level.
How do I fix CVE-2026-72251?
To fix CVE-2026-72251, ensure that your Linux kernel is updated to the latest version that includes the patch for this vulnerability.
What type of vulnerability is CVE-2026-72251?
CVE-2026-72251 is a memory bug vulnerability in the netfilter module related to SIP NAT in the Linux kernel.
What are the implications of CVE-2026-72251?
The implications of CVE-2026-72251 may include potential memory corruption and header corruption affecting SIP NAT operations.
Who is affected by CVE-2026-72251?
All users of affected versions of the Linux kernel utilizing netfilter for SIP NAT could be vulnerable to CVE-2026-72251.