CVE-2026-98549
En el kernel de Linux se ha resuelto la siguiente vulnerabilidad:
tcp: prevent collapsing skbs across boundary in rtx queue
tcp_write_collapse_fence() establece TCP_SKB_CB(skb)->eor = 1 en tcp_write_queue_tail(sk) para evitar que los skb encolados tras un cambio a cifrado en el dispositivo se fusionen con skb anteriores.
La barrera no tiene efecto si todos los datos anteriores ya se han transmitido en el momento del cambio: sk->sk_write_queue está vacía. Los skb anteriores aún no confirmados esperan en sk->tcp_rtx_queue con eor 0.
En una retransmisión posterior o en un desplazamiento por SACK, tcp_retrans_try_collapse() o tcp_shift_skb_data() pueden entonces fusionar un skb encolado tras el cambio con uno encolado antes de él.
Leer descripción completaMostrar menos
Ambos usos de la barrera se ven afectados:
- psp: los dispositivos solo cifran skb con skb->decrypted establecido. El skb fusionado conserva decrypted = 0 del skb anterior, de modo que los datos fusionados enviados tras psp_sock_assoc_set_tx() se retransmiten en texto claro.
- descarga de TLS en dispositivo: el skb fusionado atraviesa el marcador de inicio establecido en tls_set_device_offload(). La alternativa por software (fill_sg_in() devuelve -EINVAL) y los controladores mlx5, nfp y funeth no pueden manejar un skb así y lo descartan. Cada retransmisión reconstruye el mismo skb, por lo que la conexión se bloquea.
Se corrige en dos puntos, como defensa en profundidad:
1. Recurrir a tcp_rtx_queue_tail(sk) en tcp_write_collapse_fence() cuando tcp_write_queue_tail(sk) es NULL.
2. Comprobar !skb_cmp_decrypted(to, from) en tcp_skb_can_collapse(), como hace tcp_skb_can_collapse_rx() en la recepción. skb_shift(), que llaman ambas rutas de fusión, ya tiene un DEBUG_NET_WARN_ON_ONCE() para esta condición.
Traducción automática del texto original de NVD (en inglés).
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)
- Probabilidad de explotación en los próximos 30 días
- 0.13 %
- Percentil entre todas las CVEs puntuadas
- 2
- Fecha de la puntuación
- 20/10/2026
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
Mostrar las 4 referencias
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-98549",
"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": "e8f69799810c32dd40c6724d829eccc70baad07f",
"lessThan": "1ae7aee395245874d797890380d9192bd858fb7e",
"versionType": "git"
},
{
"status": "affected",
"version": "e8f69799810c32dd40c6724d829eccc70baad07f",
"lessThan": "7ba87509c54cd519e7ed362e0c85e8431f066a18",
"versionType": "git"
},
{
"status": "affected",
"version": "e8f69799810c32dd40c6724d829eccc70baad07f",
"lessThan": "08e835f5ec6e261c79d8c39f8618b3af29e3b0da",
"versionType": "git"
},
{
"status": "affected",
"version": "e8f69799810c32dd40c6724d829eccc70baad07f",
"lessThan": "fc6d80eb504458d6416b75a94188b268c95c6533",
"versionType": "git"
}
],
"programFiles": [
"include/net/tcp.h"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "4.18"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "4.18",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "6.12.112",
"versionType": "semver",
"lessThanOrEqual": "6.12.*"
},
{
"status": "unaffected",
"version": "6.18.55",
"versionType": "semver",
"lessThanOrEqual": "6.18.*"
},
{
"status": "unaffected",
"version": "7.2.9",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"include/net/tcp.h"
],
"defaultStatus": "affected"
}
]
}
],
"published": "2026-10-18T16:17:06.913",
"references": [
{
"url": "https://git.kernel.org/stable/c/08e835f5ec6e261c79d8c39f8618b3af29e3b0da",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/1ae7aee395245874d797890380d9192bd858fb7e",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/7ba87509c54cd519e7ed362e0c85e8431f066a18",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/fc6d80eb504458d6416b75a94188b268c95c6533",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"vulnStatus": "Received",
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ntcp: prevent collapsing skbs across boundary in rtx queue\n\ntcp_write_collapse_fence() sets TCP_SKB_CB(skb)->eor = 1 on\ntcp_write_queue_tail(sk) to prevent skbs queued after a switch to\ndevice encryption from being collapsed into earlier skbs.\n\nThe fence is a no-op if all earlier data has already been transmitted\nwhen the switch happens: sk->sk_write_queue is empty. The not yet\nacknowledged earlier skbs wait in sk->tcp_rtx_queue with eor 0.\n\nOn a subsequent retransmit or SACK shift, tcp_retrans_try_collapse() or\ntcp_shift_skb_data() can then merge an skb queued after the switch into\none queued before it.\n\nBoth users of the fence are affected:\n\n- psp: devices only encrypt skbs with skb->decrypted set. The merged skb\n keeps decrypted = 0 from the earlier skb, so merged data sent after\n psp_sock_assoc_set_tx() is retransmitted in cleartext.\n\n- tls device offload: the merged skb straddles the start marker set in\n tls_set_device_offload(). The software fallback (fill_sg_in() returns\n -EINVAL) and the mlx5, nfp and funeth drivers cannot handle such an\n skb and drop it. Every retransmit rebuilds the same skb, so the\n connection stalls.\n\nFix this in two places, for defense in depth:\n\n1. Fall back to tcp_rtx_queue_tail(sk) in tcp_write_collapse_fence()\n when tcp_write_queue_tail(sk) is NULL.\n\n2. Check !skb_cmp_decrypted(to, from) in tcp_skb_can_collapse(), as\n tcp_skb_can_collapse_rx() does on receive. skb_shift(), which both\n collapse paths call, already has a DEBUG_NET_WARN_ON_ONCE() for this\n condition."
}
],
"lastModified": "2026-10-19T10:19:11.063",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}