tcp: do not accept ACK of bytes we never sent
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- —
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- Partial Red Hat: 19 fixed, 3 without a fix
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and Red Hat.
Summary
In the Linux kernel, the following vulnerability has been resolved: tcp: do not accept ACK of bytes we never sent This patch is based on a detailed report and ideas from Yepeng Pan and Christian Rossow. ACK seq validation is currently following RFC 5961 5.2 guidelines: The ACK value is considered acceptable only if it is in the range of ((SND.UNA - MAX.SND.WND) <= SEG.ACK <= SND.NXT). All incoming segments whose ACK value doesn't satisfy the above condition MUST be discarded and an ACK sent back. It needs to be noted that RFC 793 on page 72 (fifth check) says: "If the ACK is a duplicate (SEG.ACK < SND.UNA), it can be ignored. If the ACK acknowledges something not yet sent (SEG.ACK > SND.NXT) then send an ACK, drop the segment, and return". The "ignored" above implies that the processing of the incoming data segment continues, which means the ACK value is treated as acceptable. This mitigation makes the ACK check more stringent since any ACK < SND.UNA wouldn't be accepted, instead only ACKs that are in the range ((SND.UNA - MAX.SND.WND) <= SEG.ACK <= SND.NXT) get through. This can be refined for new (and possibly spoofed) flows, by not accepting ACK for bytes that were never sent. This greatly improves TCP security at a little cost. I added a Fixes: tag to make sure this patch will reach stable trees, even if the 'blamed' patch was adhering to the RFC. tp->bytes_acked was added in linux-4.2 Following packetdrill test (courtesy of Yepeng Pan) shows the issue at hand: 0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3 +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 +0 bind(3, ..., ...) = 0 +0 listen(3, 1024) = 0 // ---------------- Handshake ------------------- // // when window scale is set to 14 the window size can be extended to // 65535 * (2^14) = 1073725440. Linux would accept an ACK packet // with ack number in (Server_ISN+1-1073725440. Server_ISN+1) // ,though this ack number acknowledges some data never // sent by the server. +0 < S 0:0(0) win 65535 <mss 1400,nop,wscale 14> +0 > S. 0:0(0) ack 1 <...> +0 < . 1:1(0) ack 1 win 65535 +0 accept(3, ..., ...) = 4 // For the established connection, we send an ACK packet, // the ack packet uses ack number 1 - 1073725300 + 2^32, // where 2^32 is used to wrap around. // Note: we used 1073725300 instead of 1073725440 to avoid possible // edge cases. // 1 - 1073725300 + 2^32 = 3221241997 // Oops, old kernels happily accept this packet. +0 < . 1:1001(1000) ack 3221241997 win 65535 // After the kernel fix the following will be replaced by a challenge ACK, // and prior malicious frame would be dropped. +0 > . 1:1(0) ack 1001
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| Linux | Linux | 3.0.58 to before 3.1; 3.2.37 to before 3.3; 3.4.25 to before 3.5 | 3.1, 3.3, 3.5 | Patch available | CNA |
| Linux | Linux | 3.8 and later | 4.14.333, 4.19.302, 5.4.264, 5.10.204, 5.15.143, 6.1.68, 6.6.7, 6.7 | Patch available | CNA |
- Linux VendorLinux Affected 3.0.58 to before 3.1; 3.2.37 to before 3.3; 3.4.25 to before 3.5 Fixed in 3.1, 3.3, 3.5 Patch available CNA
- Linux VendorLinux Affected 3.8 and later Fixed in 4.14.333, 4.19.302, 5.4.264, 5.10.204, 5.15.143, 6.1.68, 6.6.7, 6.7 Patch available CNA
CPE configurations NVD · 5
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.0.58 to before 3.1; 3.2.37 to before 3.3; 3.4.25 to before 3.5; 3.8 to before 4.14.333; 4.15 to before 4.19.302; 4.20 to before 5.4.264; 5.5 to before 5.10.204; 5.11 to before 5.15.143; 5.16 to before 6.1.68; 6.2 to before 6.6.7 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.7:rc1:*:*:*:*:*:* | 6.7 rc1 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.7:rc2:*:*:*:*:*:* | 6.7 rc2 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.7:rc3:*:*:*:*:*:* | 6.7 rc3 | Vulnerable | Linux |
| cpe:2.3:o:linux:linux_kernel:6.7:rc4:*:*:*:*:*:* | 6.7 rc4 | Vulnerable | Linux |
- cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 3.0.58 to before 3.1; 3.2.37 to before 3.3; 3.4.25 to before 3.5; 3.8 to before 4.14.333; 4.15 to before 4.19.302; 4.20 to before 5.4.264; 5.5 to before 5.10.204; 5.11 to before 5.15.143; 5.16 to before 6.1.68; 6.2 to before 6.6.7 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.7:rc1:*:*:*:*:*:* Versions 6.7 rc1 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.7:rc2:*:*:*:*:*:* Versions 6.7 rc2 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.7:rc3:*:*:*:*:*:* Versions 6.7 rc3 Vulnerable ·Linux
- cpe:2.3:o:linux:linux_kernel:6.7:rc4:*:*:*:*:*:* Versions 6.7 rc4 Vulnerable ·Linux
Remediation
- Fix · CNA Linux (Linux) Fixed in 3.1, 3.3, 3.5
- Fix · CNA Linux (Linux) Fixed in 4.14.333, 4.19.302, 5.4.264, 5.10.204, 5.15.143, 6.1.68, 6.6.7, 6.7
Red Hat 7 advisories
- RHSA-2024:10772 Released 2024-12-04 · Red Hat rating Moderatekernel security update
- Red Hat CodeReady Linux Builder EUS (v.9.2) kernel-tools-libs-devel-5.14.0-284.95.1.el9_2
- Red Hat Enterprise Linux AppStream EUS (v.9.2) kernel-64k-debug-devel-5.14.0-284.95.1.el9_2, kernel-64k-debug-devel-matched-5.14.0-284.95.1.el9_2, kernel-64k-devel-5.14.0-284.95.1.el9_2 +10
- Red Hat Enterprise Linux BaseOS EUS (v.9.2) bpftool-7.0.0-284.95.1.el9_2, kernel-5.14.0-284.95.1.el9_2, kernel-64k-5.14.0-284.95.1.el9_2 +29
- RHSA-2024:10773 Released 2024-12-04 · Red Hat rating Moderatekernel-rt security update
- Red Hat Enterprise Linux Real Time EUS (v.9.2) kernel-rt-5.14.0-284.95.1.rt14.380.el9_2, kernel-rt-core-5.14.0-284.95.1.rt14.380.el9_2, kernel-rt-debug-5.14.0-284.95.1.rt14.380.el9_2 +9
- Red Hat Enterprise Linux Real Time for NFV EUS (v.9.2) kernel-rt-5.14.0-284.95.1.rt14.380.el9_2, kernel-rt-core-5.14.0-284.95.1.rt14.380.el9_2, kernel-rt-debug-5.14.0-284.95.1.rt14.380.el9_2 +11
- RHSA-2024:6206 Released 2024-09-03 · Red Hat rating Importantkernel security update
- Red Hat CodeReady Linux Builder EUS (v.8.8) kernel-tools-libs-devel-4.18.0-477.70.1.el8_8
- Red Hat Enterprise Linux BaseOS EUS (v.8.8) bpftool-4.18.0-477.70.1.el8_8, kernel-4.18.0-477.70.1.el8_8, kernel-abi-stablelists-4.18.0-477.70.1.el8_8 +19
Show 4 more Red Hat advisories
- RHSA-2024:5281 Released 2024-08-13 · Red Hat rating Importantkernel security update
- Red Hat Enterprise Linux BaseOS AUS (v.8.6) bpftool-4.18.0-372.118.1.el8_6, kernel-4.18.0-372.118.1.el8_6, kernel-abi-stablelists-4.18.0-372.118.1.el8_6 +14
- Red Hat Enterprise Linux BaseOS E4S (v.8.6) bpftool-4.18.0-372.118.1.el8_6, kernel-4.18.0-372.118.1.el8_6, kernel-abi-stablelists-4.18.0-372.118.1.el8_6 +19
- Red Hat Enterprise Linux BaseOS TUS (v.8.6) bpftool-4.18.0-372.118.1.el8_6, kernel-4.18.0-372.118.1.el8_6, kernel-abi-stablelists-4.18.0-372.118.1.el8_6 +14
- RHSA-2024:4352 Released 2024-07-08 · Red Hat rating Importantkernel-rt security and bug fix update
- Red Hat Enterprise Linux NFV (v. 8) kernel-rt-4.18.0-553.8.1.rt7.349.el8_10, kernel-rt-core-4.18.0-553.8.1.rt7.349.el8_10, kernel-rt-debug-4.18.0-553.8.1.rt7.349.el8_10 +9
- Red Hat Enterprise Linux RT (v. 8) kernel-rt-4.18.0-553.8.1.rt7.349.el8_10, kernel-rt-core-4.18.0-553.8.1.rt7.349.el8_10, kernel-rt-debug-4.18.0-553.8.1.rt7.349.el8_10 +7
- RHSA-2024:4211 Released 2024-07-02 · Red Hat rating Importantkernel security and bug fix update
- Red Hat Enterprise Linux BaseOS (v. 8) bpftool-4.18.0-553.8.1.el8_10, kernel-4.18.0-553.8.1.el8_10, kernel-abi-stablelists-4.18.0-553.8.1.el8_10 +19
- Red Hat Enterprise Linux CRB (v. 8) kernel-tools-libs-devel-4.18.0-553.8.1.el8_10
- RHSA-2024:2394 Released 2024-04-30 · Red Hat rating Importantkernel security, bug fix, and enhancement update
- Red Hat Enterprise Linux AppStream (v. 9) kernel-64k-debug-devel-5.14.0-427.13.1.el9_4, kernel-64k-debug-devel-matched-5.14.0-427.13.1.el9_4, kernel-64k-devel-5.14.0-427.13.1.el9_4 +11
- Red Hat Enterprise Linux BaseOS (v. 9) bpftool-7.3.0-427.13.1.el9_4, kernel-5.14.0-427.13.1.el9_4, kernel-64k-5.14.0-427.13.1.el9_4 +29
- Red Hat Enterprise Linux CRB (v. 9) kernel-tools-libs-devel-5.14.0-427.13.1.el9_4, libperf-5.14.0-427.13.1.el9_4
- Red Hat Enterprise Linux NFV (v. 9) kernel-rt-5.14.0-427.13.1.el9_4, kernel-rt-core-5.14.0-427.13.1.el9_4, kernel-rt-debug-5.14.0-427.13.1.el9_4 +11
- Red Hat Enterprise Linux RT (v. 9) kernel-rt-5.14.0-427.13.1.el9_4, kernel-rt-core-5.14.0-427.13.1.el9_4, kernel-rt-debug-5.14.0-427.13.1.el9_4 +9
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat Enterprise Linux 6 | Affected | No fix planned: Out of support scope |
| Red Hat Enterprise Linux 7 | Affected | No fix planned: Out of support scope |
| Red Hat Enterprise Linux 9 | Affected | No fix yet |
| Red Hat CodeReady Linux Builder EUS (v.8.8) | Fixed | RHSA-2024:6206 |
| Red Hat CodeReady Linux Builder EUS (v.9.2) | Fixed | RHSA-2024:10772 |
| Red Hat Enterprise Linux AppStream (v. 9) | Fixed | RHSA-2024:2394 |
| Red Hat Enterprise Linux AppStream EUS (v.9.2) | Fixed | RHSA-2024:10772 |
| Red Hat Enterprise Linux BaseOS (v. 8) | Fixed | RHSA-2024:4211 |
| Red Hat Enterprise Linux BaseOS (v. 9) | Fixed | RHSA-2024:2394 |
| Red Hat Enterprise Linux BaseOS AUS (v.8.6) | Fixed | RHSA-2024:5281 |
| Red Hat Enterprise Linux BaseOS E4S (v.8.6) | Fixed | RHSA-2024:5281 |
| Red Hat Enterprise Linux BaseOS EUS (v.8.8) | Fixed | RHSA-2024:6206 |
| Red Hat Enterprise Linux BaseOS EUS (v.9.2) | Fixed | RHSA-2024:10772 |
| Red Hat Enterprise Linux BaseOS TUS (v.8.6) | Fixed | RHSA-2024:5281 |
| Red Hat Enterprise Linux CRB (v. 8) | Fixed | RHSA-2024:4211 |
| Red Hat Enterprise Linux CRB (v. 9) | Fixed | RHSA-2024:2394 |
| Red Hat Enterprise Linux NFV (v. 8) | Fixed | RHSA-2024:4352 |
| Red Hat Enterprise Linux NFV (v. 9) | Fixed | RHSA-2024:2394 |
| Red Hat Enterprise Linux RT (v. 8) | Fixed | RHSA-2024:4352 |
| Red Hat Enterprise Linux RT (v. 9) | Fixed | RHSA-2024:2394 |
| Red Hat Enterprise Linux Real Time EUS (v.9.2) | Fixed | RHSA-2024:10773 |
| Red Hat Enterprise Linux Real Time for NFV EUS (v.9.2) | Fixed | RHSA-2024:10773 |
Not affected: 5 products
- Red Hat Enterprise Linux AppStream EUS (v.9.2)
- Red Hat Enterprise Linux BaseOS (v. 8)
- Red Hat Enterprise Linux BaseOS AUS (v.8.6)
- Red Hat Enterprise Linux BaseOS E4S (v.8.6)
- Red Hat Enterprise Linux BaseOS TUS (v.8.6)
Timeline
- 2026-10-02 Threatist record created from CVE-2023-52881
- 2026-10-29 Affected versions changed · Red Hat
References
Patch 8
- https://git.kernel.org/stable/c/69eae75ca5255e876628ac5cee9eaab31f644b57
- https://git.kernel.org/stable/c/458f07ffeccd17f99942311e09ef574ddf4a414a
- https://git.kernel.org/stable/c/7ffff0cc929fdfc62a74b384c4903d6496c910f0
- https://git.kernel.org/stable/c/b17a886ed29f3b70b78ccf632dad03e0c69e3c1a
- https://git.kernel.org/stable/c/0d4e0afdd6658cd21dd5be61880411a2553fd1fc
- https://git.kernel.org/stable/c/008b807fe487e0b15a3a6c39add4eb477f73e440
- https://git.kernel.org/stable/c/2087d53a66e97a5eb5d1bf558d5bef9e5f891757
- https://git.kernel.org/stable/c/3d501dd326fb1c73f1b8206d4c6e1d7b15c07e27
More Linux Kernel vulnerabilities
- TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
- TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
- TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
- TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
- TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
- TI-2021-05514 Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACE KEVCVSS 3.1HIGH 8.3
Sources
- CVE-2023-52881 · CVE Program
- CVE-2023-52881 · NVD
- FIRST EPSS
- CVE-2023-52881 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences