CVE-2025-39950: net/tcp: Fix a NULL pointer dereference when using TCP-AO with TCP_REPAIR
In the Linux kernel, the following vulnerability has been resolved:
net/tcp: Fix a NULL pointer dereference when using TCP-AO with TCP_REPAIR
A NULL pointer dereference can occur in tcp_ao_finish_connect() during a
connect() system call on a socket with a TCP-AO key added and TCP_REPAIR
enabled.
The function is called with skb being NULL and attempts to dereference it
on tcp_hdr(skb)->seq without a prior skb validation.
Fix this by checking if skb is NULL before dereferencing it.
The commentary is taken from bpf_skops_established(), which is also called
in the same flow. Unlike the function being patched,
bpf_skops_established() validates the skb before dereferencing it.
int main(void){
struct sockaddr_in sockaddr;
struct tcp_ao_add tcp_ao;
int sk;
int one = 1;
memset(&sockaddr,'\0',sizeof(sockaddr));
memset(&tcp_ao,'\0',sizeof(tcp_ao));
sk = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr.sin_family = AF_INET;
memcpy(tcp_ao.alg_name,"cmac(aes128)",12);
memcpy(tcp_ao.key,"ABCDEFGHABCDEFGH",16);
tcp_ao.keylen = 16;
memcpy(&tcp_ao.addr,&sockaddr,sizeof(sockaddr));
setsockopt(sk, IPPROTO_TCP, TCP_AO_ADD_KEY, &tcp_ao,
sizeof(tcp_ao));
setsockopt(sk, IPPROTO_TCP, TCP_REPAIR, &one, sizeof(one));
sockaddr.sin_family = AF_INET;
sockaddr.sin_port = htobe16(123);
inet_aton("127.0.0.1", &sockaddr.sin_addr);
connect(sk,(struct sockaddr *)&sockaddr,sizeof(sockaddr));
return 0;
}
$ gcc tcp-ao-nullptr.c -o tcp-ao-nullptr -Wall
$ unshare -Urn
BUG: kernel NULL pointer dereference, address: 00000000000000b6
PGD 1f648d067 P4D 1f648d067 PUD 1982e8067 PMD 0
Oops: Oops: 0000 [#1] SMP NOPTI
Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop
Reference Platform, BIOS 6.00 11/12/2020
RIP: 0010:tcp_ao_finish_connect (net/ipv4/tcp_ao.c:1182)
Security readout for executives and security teams
Plain-English summary
CVE-2025-39950 is a Linux kernel crash bug in a narrow TCP feature path. A socket using TCP-AO together with TCP_REPAIR can hit a NULL pointer dereference during connect, causing a kernel oops and possible denial of service. The sources do not show remote exploitation or active exploitation.
Executive priority
Treat as a scheduled kernel remediation item unless systems run untrusted local workloads or multi-tenant containers. Prioritize faster patching where a local crash could disrupt critical services.
Technical view
The flaw is in tcp_ao_finish_connect(), which could be called with skb set to NULL and then dereference tcp_hdr(skb)->seq. The kernel fix adds an skb NULL check, matching validation used in bpf_skops_established(). Affected Linux versions are listed from 6.7 through fixed stable releases referenced by kernel.org commits.
Likely exposure
Exposure is most relevant to Linux systems running affected kernels where local or containerized code can use TCP-AO and TCP_REPAIR socket options. The source evidence points to local denial-of-service potential, not data theft or remote code execution.
Exploitation context
The CVE record includes a local reproducer demonstrating a kernel NULL pointer dereference. CISA KEV status is false in the bundle, and no cited source claims active exploitation in the wild.
Researcher notes
Evidence supports a NULL pointer dereference in the TCP-AO connect path when TCP_REPAIR is enabled. The bundle does not provide CVSS, CWE, confirmed exploit status, or distribution-specific fixed package versions.
Mitigation direction
Update to a Linux kernel containing the referenced stable fixes.
Check your distribution vendor advisory for backported kernel packages.
Restrict untrusted local workloads where affected kernels cannot be updated promptly.
Review use of TCP_REPAIR and TCP-AO in privileged or containerized environments.
Validation and detection
Inventory Linux kernel versions across hosts and container platforms.
Confirm whether vendor kernels include the three referenced stable commits.
Review logs for kernel oops messages referencing tcp_ao_finish_connect.
Validate upgrade status through distribution package metadata, not only upstream version numbers.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2025-39950 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
0CVSS vectors
3Timeline events
0ADP providers
4Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
Oct 4, 2025, 07:31 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.