Skip to content
Fencer Vulns
critical 9.8

CVE-2023-52881 in the critical feed json

tcp: do not accept ACK of bytes we never sent

published 2024-05-29 2 y ago modified 2026-08-05 3 mo ago also EUVD-2023-59594

cvss
9.8
version 3.1, CNA
cisa kev
Not listed
not in CISA's catalog
epss
0.6%
EPSS 0.6% chance of exploitation in 30 days, percentile 49%
public exploits
0
none known

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

Patch / fix

  • Linux Linux 3.1, 3.3, 3.5, 4.14.333, 4.19.302, 5.4.264, 5.10.204, 5.15.143, 6.1.68, 6.6.7, 6.7
  • linux Debian 12 6.1.69-1
  • linux Debian 14, Debian 13 6.6.8-1

debian advisories DEBIAN-CVE-2023-52881

  • linux Ubuntu 20.04 LTS 5.4.0-173.191
  • linux Ubuntu 22.04 LTS 5.15.0-100.110
  • linux-aws Ubuntu 20.04 LTS 5.4.0-1120.130
  • linux-aws Ubuntu 22.04 LTS 5.15.0-1056.61
  • linux-gcp Ubuntu 20.04 LTS 5.4.0-1124.133
  • linux-gcp Ubuntu 22.04 LTS 5.15.0-1053.61
  • linux-gke Ubuntu 22.04 LTS 5.15.0-1052.57
  • linux-ibm Ubuntu 20.04 LTS 5.4.0-1067.72

ubuntu advisories UBUNTU-CVE-2023-52881

Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0

  • kernel RHEL 8 4.18.0-553.8.1.el8_10
  • perf RHEL 8 4.18.0-553.8.1.el8_10
  • bpftool RHEL 8 4.18.0-553.8.1.el8_10
  • kernel-core RHEL 8 4.18.0-553.8.1.el8_10
  • kernel-tools RHEL 8 4.18.0-553.8.1.el8_10
  • python3-perf RHEL 8 4.18.0-553.8.1.el8_10
  • kernel-modules RHEL 8 4.18.0-553.8.1.el8_10
  • kernel-zfcpdump RHEL 8 4.18.0-553.8.1.el8_10

red hat advisories RHSA-2024:10773RHSA-2024:10772RHSA-2024:6206RHSA-2024:5281RHSA-2024:4211RHSA-2024:4352

  • kernel-source Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
  • kernel-default Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
  • kernel-kvmsmall Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
  • kernel-default-base Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1.21.4
  • kernel-livepatch-MICRO-6-0_Update_4 Linux Micro 6.1, Linux Micro 6.0 1-1.2
  • kernel-rt Linux Micro 6.1, Linux Micro 6.0 6.4.0-22.1
  • kernel-source-rt Linux Micro 6.1, Linux Micro 6.0 6.4.0-22.1
  • kernel-livepatch-MICRO-6-0-RT_Update_4 Linux Micro 6.1, Linux Micro 6.0 1-1.1

suse advisories SUSE-SU-2025:20164-1SUSE-SU-2025:20247-1SUSE-SU-2025:20163-1SUSE-SU-2025:20246-1SUSE-SU-2025:20028-1SUSE-SU-2025:20008-1

  • kernel-rt AlmaLinux 8 4.18.0-553.8.1.rt7.349.el8_10
  • kernel-rt-kvm AlmaLinux 8 4.18.0-553.8.1.rt7.349.el8_10
  • kernel-rt-core AlmaLinux 8 4.18.0-553.8.1.rt7.349.el8_10
  • kernel-rt-modules AlmaLinux 8 4.18.0-553.8.1.rt7.349.el8_10
  • kernel-rt-debug-kvm AlmaLinux 8 4.18.0-553.8.1.rt7.349.el8_10
  • kernel-rt-debug-core AlmaLinux 8 4.18.0-553.8.1.rt7.349.el8_10
  • kernel-rt-debug-modules AlmaLinux 8 4.18.0-553.8.1.rt7.349.el8_10
  • kernel-rt-modules-extra AlmaLinux 8 4.18.0-553.8.1.rt7.349.el8_10

almalinux advisories ALSA-2024:4352ALSA-2024:4211

  • kernel-rt Rocky Linux 8 4.18.0-553.8.1.rt7.349.el8_10
  • kernel Rocky Linux 8 4.18.0-553.8.1.el8_10

rocky linux advisories RLSA-2024:4352RLSA-2024:4211

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2023-52881 updated cvss 5.9

kernel: TCP-spoofed ghost ACKs and leak leak initial sequence number

  • Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more
    affected: no fix planned “Out of support scope”
  • Red Hat Enterprise Linux 9 kernel-rt, kernel-rt-kvm, kernel-rt-core, kernel-rt-modules, kernel-rt-debug-kvm, kernel-rt-debug-core, +12 more
    affected: no fix available
  • Red Hat CodeReady Linux Builder EUS (v.8.8) kernel-debuginfo-common-x86_64 4.18.0-477.70.1.el8_8, kernel-debuginfo-common-aarch64 4.18.0-477.70.1.el8_8, kernel-debuginfo-common-ppc64le 4.18.0-477.70.1.el8_8
    fixed: vendor fix RHSA-2024:6206
  • Red Hat CodeReady Linux Builder EUS (v.9.2) kernel-debuginfo-common-s390x 5.14.0-284.95.1.el9_2, kernel-debuginfo-common-x86_64 5.14.0-284.95.1.el9_2, kernel-debuginfo-common-aarch64 5.14.0-284.95.1.el9_2, kernel-debuginfo-common-ppc64le 5.14.0-284.95.1.el9_2
    fixed: vendor fix RHSA-2024:10772
  • Red Hat Enterprise Linux AppStream (v. 9) rv 5.14.0-427.13.1.el9_4, perf 5.14.0-427.13.1.el9_4, rtla 5.14.0-427.13.1.el9_4, kernel-devel-matched 5.14.0-427.13.1.el9_4, kernel-64k-devel-matched 5.14.0-427.13.1.el9_4, kernel-debug-devel-matched 5.14.0-427.13.1.el9_4, +6 more
    fixed: vendor fix RHSA-2024:2394
  • Red Hat Enterprise Linux AppStream EUS (v.9.2) perf 5.14.0-284.95.1.el9_2, rtla 5.14.0-284.95.1.el9_2, kernel-devel-matched 5.14.0-284.95.1.el9_2, kernel-64k-devel-matched 5.14.0-284.95.1.el9_2, kernel-debug-devel-matched 5.14.0-284.95.1.el9_2, kernel-debuginfo-common-s390x 5.14.0-284.95.1.el9_2, +5 more
    fixed: vendor fix RHSA-2024:10772
  • Red Hat Enterprise Linux BaseOS (v. 8) perf 4.18.0-553.8.1.el8_10, kernel 4.18.0-553.8.1.el8_10, bpftool 4.18.0-553.8.1.el8_10, kernel-core 4.18.0-553.8.1.el8_10, kernel-tools 4.18.0-553.8.1.el8_10, python3-perf 4.18.0-553.8.1.el8_10, +15 more
    fixed: vendor fix RHSA-2024:4211
  • 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, kernel-core 5.14.0-427.13.1.el9_4, kernel-tools 5.14.0-427.13.1.el9_4, python3-perf 5.14.0-427.13.1.el9_4, +28 more
    fixed: vendor fix RHSA-2024:2394
show 12 more
  • Red Hat Enterprise Linux BaseOS AUS (v.8.6) perf 4.18.0-372.118.1.el8_6, kernel 4.18.0-372.118.1.el8_6, bpftool 4.18.0-372.118.1.el8_6, kernel-core 4.18.0-372.118.1.el8_6, kernel-tools 4.18.0-372.118.1.el8_6, python3-perf 4.18.0-372.118.1.el8_6, +8 more Red Hat Enterprise Linux BaseOS E4S (v.8.6) perf 4.18.0-372.118.1.el8_6, kernel 4.18.0-372.118.1.el8_6, bpftool 4.18.0-372.118.1.el8_6, kernel-core 4.18.0-372.118.1.el8_6, kernel-tools 4.18.0-372.118.1.el8_6, python3-perf 4.18.0-372.118.1.el8_6, +15 more
    fixed: vendor fix RHSA-2024:5281
  • Red Hat Enterprise Linux BaseOS EUS (v.8.8) perf 4.18.0-477.70.1.el8_8, kernel 4.18.0-477.70.1.el8_8, bpftool 4.18.0-477.70.1.el8_8, kernel-core 4.18.0-477.70.1.el8_8, kernel-tools 4.18.0-477.70.1.el8_8, python3-perf 4.18.0-477.70.1.el8_8, +15 more
    fixed: vendor fix RHSA-2024:6206
  • 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, kernel-core 5.14.0-284.95.1.el9_2, kernel-tools 5.14.0-284.95.1.el9_2, python3-perf 5.14.0-284.95.1.el9_2, +28 more
    fixed: vendor fix RHSA-2024:10772
  • Red Hat Enterprise Linux BaseOS TUS (v.8.6) perf 4.18.0-372.118.1.el8_6, kernel 4.18.0-372.118.1.el8_6, bpftool 4.18.0-372.118.1.el8_6, kernel-core 4.18.0-372.118.1.el8_6, kernel-tools 4.18.0-372.118.1.el8_6, python3-perf 4.18.0-372.118.1.el8_6, +8 more
    fixed: vendor fix RHSA-2024:5281
  • Red Hat Enterprise Linux CRB (v. 8) kernel-debuginfo-common-x86_64 4.18.0-553.8.1.el8_10, kernel-debuginfo-common-aarch64 4.18.0-553.8.1.el8_10, kernel-debuginfo-common-ppc64le 4.18.0-553.8.1.el8_10
    fixed: vendor fix RHSA-2024:4211
  • Red Hat Enterprise Linux CRB (v. 9) libperf 5.14.0-427.13.1.el9_4, kernel-debuginfo-common-s390x 5.14.0-427.13.1.el9_4, kernel-debuginfo-common-x86_64 5.14.0-427.13.1.el9_4, kernel-debuginfo-common-aarch64 5.14.0-427.13.1.el9_4, kernel-debuginfo-common-ppc64le 5.14.0-427.13.1.el9_4
    fixed: vendor fix RHSA-2024:2394
  • Red Hat Enterprise Linux NFV (v. 8) kernel-rt 4.18.0-553.8.1.rt7.349.el8_10, kernel-rt-kvm 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-modules 4.18.0-553.8.1.rt7.349.el8_10, kernel-rt-debug-kvm 4.18.0-553.8.1.rt7.349.el8_10, kernel-rt-debug-core 4.18.0-553.8.1.rt7.349.el8_10, +4 more
    fixed: vendor fix RHSA-2024:4352
  • Red Hat Enterprise Linux NFV (v. 9) kernel-rt 5.14.0-427.13.1.el9_4, kernel-rt-kvm 5.14.0-427.13.1.el9_4, kernel-rt-core 5.14.0-427.13.1.el9_4, kernel-rt-modules 5.14.0-427.13.1.el9_4, kernel-rt-debug-kvm 5.14.0-427.13.1.el9_4, kernel-rt-debug-core 5.14.0-427.13.1.el9_4, +6 more
    fixed: vendor fix RHSA-2024:2394
  • 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-modules 5.14.0-284.95.1.rt14.380.el9_2, kernel-rt-debug-core 5.14.0-284.95.1.rt14.380.el9_2, kernel-rt-modules-core 5.14.0-284.95.1.rt14.380.el9_2, kernel-rt-debug-modules 5.14.0-284.95.1.rt14.380.el9_2, +4 more 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-kvm 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-modules 5.14.0-284.95.1.rt14.380.el9_2, kernel-rt-debug-kvm 5.14.0-284.95.1.rt14.380.el9_2, kernel-rt-debug-core 5.14.0-284.95.1.rt14.380.el9_2, +6 more
    fixed: vendor fix RHSA-2024:10773
  • 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-modules 4.18.0-553.8.1.rt7.349.el8_10, kernel-rt-debug-core 4.18.0-553.8.1.rt7.349.el8_10, kernel-rt-debug-modules 4.18.0-553.8.1.rt7.349.el8_10, kernel-rt-modules-extra 4.18.0-553.8.1.rt7.349.el8_10, +2 more
    fixed: vendor fix RHSA-2024:4352
  • 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-modules 5.14.0-427.13.1.el9_4, kernel-rt-debug-core 5.14.0-427.13.1.el9_4, kernel-rt-modules-core 5.14.0-427.13.1.el9_4, kernel-rt-debug-modules 5.14.0-427.13.1.el9_4, +4 more
    fixed: vendor fix RHSA-2024:2394
  • Red Hat Enterprise Linux AppStream EUS (v.9.2) kernel-doc 5.14.0-284.95.1.el9_2 Red Hat Enterprise Linux BaseOS (v. 8) kernel-headers 4.18.0-553.8.1.el8_10, kernel-cross-headers 4.18.0-553.8.1.el8_10 Red Hat Enterprise Linux BaseOS AUS (v.8.6) kernel-headers 4.18.0-372.118.1.el8_6, kernel-cross-headers 4.18.0-372.118.1.el8_6 Red Hat Enterprise Linux BaseOS E4S (v.8.6) kernel-headers 4.18.0-372.118.1.el8_6, kernel-cross-headers 4.18.0-372.118.1.el8_6 Red Hat Enterprise Linux BaseOS TUS (v.8.6) kernel-headers 4.18.0-372.118.1.el8_6, kernel-cross-headers 4.18.0-372.118.1.el8_6
    not affected: vulnerable code not present

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

cisa ICSA-25-226-15 updated

Siemens SINEC OS

  • Siemens RUGGEDCOM RST2428P (6GK6242-6PA00) Siemens SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family Siemens SCALANCE XCM-/XRM-/XCH-/XRH-300 family
    not affected

Facts from CISA's republication of the vendor's own advisory (CSAF); the linked advisory is the authoritative source. CISA notification · csaf

CISA SSVC

Exploitation
none
Automatable
no
Technical impact
partial
Assessed
2 y ago

Exploit prediction

0.61% chance of exploitation in the next 30 days, higher than 49% of all scored CVEs (FIRST EPSS, 2026-11-08).

CVSS scores

assigned by version score vector
CNA 3.1 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
NVD 3.1 5.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Affected products

  • Linux Linux

Classification

Technology feeds

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.