CVE-2026-90054

CVE-2026-90054

published September 17, 2026

CVSS
—
EPSS
0%
Percentile
11.5
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

tcp: fix corruption of urgent data on multi-segment retransmit

On the normal xmit path, while in urgent mode we refuse to build a

multi-segment TSO packet, so every segment gets its own urg_ptr:

/* tcp_write_xmit() */

limit = mss_now;

if (tso_segs > 1 && !tcp_urg_mode(tp))

limit = tcp_mss_split_point(...);

The retransmit path has no such guard. __tcp_retransmit_skb() builds a

segs > 1 skb and hands it to the GSO layer, which only advances th->seq

per segment and copies urg_ptr verbatim:

/* __tcp_retransmit_skb() */

len = cur_mss * segs; /* segs > 1, no urg_mode check */

...

/* tcp_gso_segment(): bumps seq only, urg_ptr is copied */

urg_ptr is an offset from the segment's own seq, so a copied value points

at a different place on each segment. The receiver rebuilds the absolute

urgent seq as seg.seq + urg_ptr, so it walks a moving urgent point instead

of the one OOB byte:

seg1 seq 1 urg_ptr 5001 -> urgent @ 5001 (ok)

seg2 seq 1001 urg_ptr 5001 -> urgent @ 6001 (wrong, +MSS)

seg3 seq 2001 urg_ptr 5001 -> urgent @ 7001 (wrong, +2*MSS)

The real OOB byte is never pointed at, so the receiver stops splicing it

out and delivers it as normal in-band data, corrupting the stream.

Guard the retransmit length like the xmit path: keep segs = 1 while in

urgent mode.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00216 · 11.5th percentile
Published
2026-09-17T21:16Z
References (8)
EPSS history
Timeline
  • 19 SEP 03:55Z
    EPSS moved — → 0%
    epss
  • 17 SEP 16:05Z
    tcp: fix corruption of urgent data on multi-segment retransmit
    cvelistv5