KernelScan.io

HIGH Introduced in 5.14

tcp FastOpenQlen Bypass

CVE-2026-74696

CVSS 7.5 / 10.0 NVD

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

KernelScan AI7.5HIGH

01

In the Linux kernel, the following vulnerability has been resolved: tcp: fix TFO max_qlen accounting across reuseport migration A listener's TCP_FASTOPEN max_qlen stops being accurate and lets through far more pending Fast Open requests than it was configured for. This only shows up with SO_REUSEPORT listener migration, where closing a listener hands its still-pending TFO children over to a surviving one. fastopenq.qlen is charged in tcp_fastopen_create_child() when the child is created and uncharged in reqsk_fastopen_remove() when the handshake completes. The uncharge follows rsk_listener of the request the child points at, and inet_reqsk_clone() has repointed the child at a new request owned by the new listener, so the ++ and the -- land on two different sockets. The new listener's qlen drifts negative and its limit no longer binds. Charge the new listener during migration, like reqsk_queue_migrated() already does for queue->young and queue->qlen.

02

Engine v0.6.0

Risk summary

A remote, unauthenticated attacker can bypass the TCP Fast Open pending-request limit on servers using SO_REUSEPORT with listener migration. By flooding TFO requests after a listener migration occurs, the attacker can queue unlimited pending connections, exhausting kernel memory and causing denial of service. Any network-exposed service using TFO with SO_REUSEPORT is at risk.

Affectednet/ipv4/inet_connection_sock.c (tcp)

Vulnerability analysis

When a TCP listener using SO_REUSEPORT is closed, its pending TCP Fast Open child sockets are migrated to a surviving listener. During this migration, the child's internal reference is repointed to the new listener, but the pending-request counter that enforces the TFO queue limit is not adjusted for the new listener. As a result, the new listener's counter drifts negative each time a migrated child's handshake later completes and decrements it, and the configured maximum pending-request limit stops binding. An attacker can then send far more Fast Open requests than the server was configured to accept, exhausting kernel memory. The fix charges the new listener's counter at migration time so that the increment and decrement both land on the same socket. The vulnerable path is reachable by any remote, unauthenticated client sending TCP Fast Open SYNs to a server that has TFO enabled and uses SO_REUSEPORT with listener migration.

03

BranchIntroducedFixed inPatch commit
5.155.145.15.216e98f0d80b9cc
6.15.146.1.183b6247e0f96bd
6.125.146.12.1046e10ee56524a
6.185.146.18.45a66e869cf0c9
6.65.146.6.152585fc5247d14
7.15.147.1.9d974618b2097
mainline5.147.2a0ab2ba83e35
cip/6.15.146.1.187-cip60b6247e0f96bd
cip/6.1-rt5.146.1.189-cip61-rt32b6247e0f96bd
cip/6.125.146.12.104-cip306e10ee56524a

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.104-cip30
cip/6.1Fixed in 6.1.187-cip60
cip/6.1-rtFixed in 6.1.189-cip61-rt32