« Volver al listado

CVE-2026-90054

Estado: RecibidaSin puntuar—

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:

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:

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:

Leer descripción completaMostrar menos

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.

Detalles técnicos trazas, registros y código del informe original
	/* tcp_write_xmit() */
	limit = mss_now;
	if (tso_segs > 1 && !tcp_urg_mode(tp))
		limit = tcp_mss_split_point(...);

	/* __tcp_retransmit_skb() */
	len = cur_mss * segs;		/* segs > 1, no urg_mode check */
	...
	/* tcp_gso_segment(): bumps seq only, urg_ptr is copied */

	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)

CVSS

NVD no ha asignado puntuación CVSS a esta CVE (habitual desde el cambio de política de abril de 2026).

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Tecnologías afectadas (1)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-90054",
  "cveTags": [],
  "metrics": {},
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "10d3be569243def8d92ac3722395ef5a59c504e6",
              "lessThan": "8eb51013b6308870479a64b4a2a018697b997849",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "10d3be569243def8d92ac3722395ef5a59c504e6",
              "lessThan": "711bfd762bec05fb19bc3b17cbb157c39f4e66da",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "10d3be569243def8d92ac3722395ef5a59c504e6",
              "lessThan": "3d4e005c198dc410ad568f832bffa7569c059ff8",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "10d3be569243def8d92ac3722395ef5a59c504e6",
              "lessThan": "4fd2ee4ac154c204d95d8db72221446dac5af9b8",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "10d3be569243def8d92ac3722395ef5a59c504e6",
              "lessThan": "ebe55406404f3cb28e36d2b668e2c6c05026ec29",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "10d3be569243def8d92ac3722395ef5a59c504e6",
              "lessThan": "b8f08a94b2a4addc39249dcf9c792e786108621b",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "10d3be569243def8d92ac3722395ef5a59c504e6",
              "lessThan": "47eb90299e6882d6445672530dd7c51ac33ebdbd",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "10d3be569243def8d92ac3722395ef5a59c504e6",
              "lessThan": "ce2b807f42ed5e55567b8864ab72963f90779270",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "net/ipv4/tcp_output.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.7"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "4.7",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "5.10.270",
              "versionType": "semver",
              "lessThanOrEqual": "5.10.*"
            },
            {
              "status": "unaffected",
              "version": "5.15.221",
              "versionType": "semver",
              "lessThanOrEqual": "5.15.*"
            },
            {
              "status": "unaffected",
              "version": "6.1.188",
              "versionType": "semver",
              "lessThanOrEqual": "6.1.*"
            },
            {
              "status": "unaffected",
              "version": "6.6.157",
              "versionType": "semver",
              "lessThanOrEqual": "6.6.*"
            },
            {
              "status": "unaffected",
              "version": "6.12.110",
              "versionType": "semver",
              "lessThanOrEqual": "6.12.*"
            },
            {
              "status": "unaffected",
              "version": "6.18.52",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "status": "unaffected",
              "version": "7.2.6",
              "versionType": "semver",
              "lessThanOrEqual": "7.2.*"
            },
            {
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "net/ipv4/tcp_output.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2026-09-17T17:16:53.873",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/3d4e005c198dc410ad568f832bffa7569c059ff8",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/47eb90299e6882d6445672530dd7c51ac33ebdbd",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/4fd2ee4ac154c204d95d8db72221446dac5af9b8",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/711bfd762bec05fb19bc3b17cbb157c39f4e66da",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/8eb51013b6308870479a64b4a2a018697b997849",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/b8f08a94b2a4addc39249dcf9c792e786108621b",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/ce2b807f42ed5e55567b8864ab72963f90779270",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/ebe55406404f3cb28e36d2b668e2c6c05026ec29",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Received",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ntcp: fix corruption of urgent data on multi-segment retransmit\n\nOn the normal xmit path, while in urgent mode we refuse to build a\nmulti-segment TSO packet, so every segment gets its own urg_ptr:\n\n\t/* tcp_write_xmit() */\n\tlimit = mss_now;\n\tif (tso_segs > 1 && !tcp_urg_mode(tp))\n\t\tlimit = tcp_mss_split_point(...);\n\nThe retransmit path has no such guard. __tcp_retransmit_skb() builds a\nsegs > 1 skb and hands it to the GSO layer, which only advances th->seq\nper segment and copies urg_ptr verbatim:\n\n\t/* __tcp_retransmit_skb() */\n\tlen = cur_mss * segs;\t\t/* segs > 1, no urg_mode check */\n\t...\n\t/* tcp_gso_segment(): bumps seq only, urg_ptr is copied */\n\nurg_ptr is an offset from the segment's own seq, so a copied value points\nat a different place on each segment. The receiver rebuilds the absolute\nurgent seq as seg.seq + urg_ptr, so it walks a moving urgent point instead\nof the one OOB byte:\n\n\tseg1  seq 1     urg_ptr 5001 -> urgent @ 5001   (ok)\n\tseg2  seq 1001  urg_ptr 5001 -> urgent @ 6001   (wrong, +MSS)\n\tseg3  seq 2001  urg_ptr 5001 -> urgent @ 7001   (wrong, +2*MSS)\n\nThe real OOB byte is never pointed at, so the receiver stops splicing it\nout and delivers it as normal in-band data, corrupting the stream.\n\nGuard the retransmit length like the xmit path: keep segs = 1 while in\nurgent mode."
    }
  ],
  "lastModified": "2026-09-17T17:16:53.873",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}