CVE-2026-98441
En el kernel de Linux se ha resuelto la siguiente vulnerabilidad:
net/sched: act_ct: evitar la modificación de la entrada ct no confirmada compartida
En un caso en el que un skb con una entrada ct no confirmada se clona, puede que ambos clones acaben procesándose de nuevo, pero con conjuntos distintos de extensiones.
La secuencia de eventos es la siguiente:
1. El primer clon quiere confirmar y ejecuta los helpers, que enlazan el puntero de la extensión en la lista de expectativas. 2. Después pierde la confirmación, con lo que la entrada se mantiene sin confirmar. 3.
Leer descripción completaMostrar menos
El segundo clon quiere ahora confirmar etiquetas o ejecutar NAT y añade la nueva extensión para ello, rompiendo el puntero de la lista de expectativas y provocando un use-after-free (uso de memoria liberada) más adelante, en la ruta de destrucción.
Aunque es posible provocarlo, no debería existir ninguna cadena de red práctica en la que haya que procesar ambos clones sin modificaciones en la misma zona. Por tanto, reiniciemos simplemente la entrada en caso de que, por algún motivo, se reciba un skb con una entrada compartida. Esto no afecta a ningún caso de uso conocido, pero evita posibles problemas derivados de la compartición y modificación de la entrada ct no confirmada.
A diferencia del módulo openvswitch, act_ct permite NAT sin confirmación. Cambiar eso supondría una ruptura de la uAPI. Por ello, act_ct necesita reiniciar en NAT independientemente de la marca de confirmación, para evitar la reasignación del espacio de extensiones. Sin embargo, esto no altera realmente el panorama en escenarios de red razonables, ya que no debería ser necesario hacer pasar el mismo paquete dos veces (antes y después del clonado) por conntrack sin cambios en la cabecera del paquete ni en la zona, y sin confirmación.
La etiqueta Fixes apunta a la introducción de los helpers, ya que ese es el principal desencadenante del use-after-free por compartició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.17 %
- Percentil entre todas las CVEs puntuadas
- 6
- Fecha de la puntuación
- 21/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 5 referencias
- https://git.kernel.org/stable/c/2b783c562c3238ff50c34fd7a72a735c9cc73d9a
- https://git.kernel.org/stable/c/4a04ed91575819fb1859311113e95700b709bec7
- https://git.kernel.org/stable/c/b097d9d7a5b09c8ec5c4c1a08e35ac5a66b06b44
- https://git.kernel.org/stable/c/c812bb4aea13d385d048b5b24756aee2edf6f99e
- https://git.kernel.org/stable/c/f85009dfcd65e5969526b0db7a49b5413746e630
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-98441",
"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": "a21b06e7319129994f339ed47f512bbe57b77f5b",
"lessThan": "c812bb4aea13d385d048b5b24756aee2edf6f99e",
"versionType": "git"
},
{
"status": "affected",
"version": "a21b06e7319129994f339ed47f512bbe57b77f5b",
"lessThan": "2b783c562c3238ff50c34fd7a72a735c9cc73d9a",
"versionType": "git"
},
{
"status": "affected",
"version": "a21b06e7319129994f339ed47f512bbe57b77f5b",
"lessThan": "4a04ed91575819fb1859311113e95700b709bec7",
"versionType": "git"
},
{
"status": "affected",
"version": "a21b06e7319129994f339ed47f512bbe57b77f5b",
"lessThan": "b097d9d7a5b09c8ec5c4c1a08e35ac5a66b06b44",
"versionType": "git"
},
{
"status": "affected",
"version": "a21b06e7319129994f339ed47f512bbe57b77f5b",
"lessThan": "f85009dfcd65e5969526b0db7a49b5413746e630",
"versionType": "git"
}
],
"programFiles": [
"net/sched/act_ct.c"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "6.2"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "6.2",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "6.6.160",
"versionType": "semver",
"lessThanOrEqual": "6.6.*"
},
{
"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": [
"net/sched/act_ct.c"
],
"defaultStatus": "affected"
}
]
}
],
"published": "2026-10-18T16:16:54.393",
"references": [
{
"url": "https://git.kernel.org/stable/c/2b783c562c3238ff50c34fd7a72a735c9cc73d9a",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/4a04ed91575819fb1859311113e95700b709bec7",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/b097d9d7a5b09c8ec5c4c1a08e35ac5a66b06b44",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/c812bb4aea13d385d048b5b24756aee2edf6f99e",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/f85009dfcd65e5969526b0db7a49b5413746e630",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"vulnStatus": "Received",
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: act_ct: avoid modifying shared unconfirmed ct entry\n\nIn a case where skb with an unconfirmed ct entry gets cloned, we may\nend up processing both again but with different sets of extensions.\n\nThe series of events:\n\n 1. The first clone wants to commit and runs the helpers wiring up\n the extension pointer into the expectation list.\n 2. Then it looses the confirmation keeping the entry unconfirmed.\n 3. Second clone now wants to commit labels or run NAT and adds the\n new extension for that breaking the pointer in the expectation\n list causing UAF on the destruction path later.\n\nWhile this is possible to trigger, there should be no practical\nnetwork pipeline where we need to process both clones without\nmodifications in the same zone. So, let's just reset the entry in\ncase for some reason we got an skb with a shared one. This doesn't\naffect any known use cases, but avoids any potential problems with\nsharing and modification of the unconfirmed ct entry.\n\nUnlike openvswitch module, act_ct allows for NAT without commit.\nChanging that would be a uAPI break. So, act_ct needs to reset on NAT\nregardless of the commit flag to avoid reallocation of the extension\nspace. This, however, doesn't really change the picture for sensible\nnetworking cases as there should be no need to run the same packet\ntwice (before and after the clone) through conntrack without packet\nheader or zone changes and without commit.\n\nThe fixes tag points to the introduction of helpers, since that's the\nmain UAF trigger for the sharing."
}
],
"lastModified": "2026-10-21T13:21:28.893",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}