CVE-2026-98619
En el kernel de Linux se ha resuelto la siguiente vulnerabilidad:
net: ethtool: mantener rtnl_lock para la autoprueba de ioctl
Una autoprueba offline que baja la interfaz y vuelve a subirla con netif_close() / netif_open() requiere rtnl_lock para ambas operaciones. Desde que la ruta de ioctl de ethtool pasó a ser opcional respecto a rtnl para los controladores con bloqueo de operaciones (ops-locked), el ioctl ETHTOOL_TEST se ejecuta manteniendo únicamente el bloqueo de instancia de netdev, por lo que, en un controlador ops-locked, la autoprueba ahora desmonta el dispositivo sin rtnl_lock.
Con lockdep, esto se reproduce de forma determinista en cada autoprueba offline de un controlador de este tipo; obsérvese que el único bloqueo retenido es el de instancia, no rtnl:
Leer descripción completaMostrar menos
Sin lockdep, la misma condición activa ASSERT_RTNL() en __dev_close_many() / __dev_open; esa comprobación solo muestrea el estado global de rtnl, por lo que puede quedar enmascarada por un titular concurrente de rtnl, pero el dispositivo sigue reconfigurándose sin el bloqueo que requiere.
La autoprueba ethtool self_test es un comando heredado que solo existe en la vía de ioctl, por lo que basta con un caso ETHTOOL_TEST en dicha vía. Se añade un bit de adhesión voluntaria para los controladores cuya autoprueba necesita rtnl_lock, y se activa en los controladores ops-locked cuya autoprueba offline desmonta y vuelve a levantar la interfaz:
Detalles técnicos trazas, registros y código del informe original
WARNING: suspicious RCU usage
net/core/netpoll.c:207 suspicious rcu_dereference_protected() usage!
1 lock held by ethtool/107:
#0: (&dev->lock){+.+.}, at: dev_ethtool
Call Trace:
netpoll_poll_disable
__dev_close_many
netif_close_many
netif_close
fbnic_self_test
dev_ethtool_locked
dev_ethtool
dev_ioctl
sock_ioctl
__x64_sys_ioctl
- fbnic (ops-locked mediante queue_mgmt_ops): la ruta offline de fbnic_self_test() usa netif_close() / netif_open().
- bnxt (ops-locked mediante queue_mgmt_ops): la ruta offline de bnxt_self_test() pasa por bnxt_close_nic() / bnxt_half_open_nic() / bnxt_half_close_nic() / bnxt_open_nic(), que cierran y reabren el dispositivo.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.15 %
- Percentil entre todas las CVEs puntuadas
- 4
- 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
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-98619",
"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": "f994752b11273ded7ec6b49ae5c1d319eef21743",
"lessThan": "4ca1503491f1f25a954c13ac5775bf6775c5abc8",
"versionType": "git"
},
{
"status": "affected",
"version": "f994752b11273ded7ec6b49ae5c1d319eef21743",
"lessThan": "1b82958f3f035df5ccaab5430a2302f08a5d5351",
"versionType": "git"
}
],
"programFiles": [
"drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c",
"drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c",
"include/linux/ethtool.h",
"net/ethtool/common.h"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "7.2"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "7.2",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "7.2.9",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c",
"drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c",
"include/linux/ethtool.h",
"net/ethtool/common.h"
],
"defaultStatus": "affected"
}
]
}
],
"published": "2026-10-18T16:17:14.787",
"references": [
{
"url": "https://git.kernel.org/stable/c/1b82958f3f035df5ccaab5430a2302f08a5d5351",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/4ca1503491f1f25a954c13ac5775bf6775c5abc8",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"vulnStatus": "Received",
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: ethtool: keep rtnl_lock for the ioctl self test\n\nAn offline self test that brings the interface down and back up with\nnetif_close() / netif_open() requires rtnl_lock for both. Since the\nethtool IOCTL path became rtnl-optional for ops-locked drivers, the\nETHTOOL_TEST ioctl runs holding only the netdev instance lock, so on an\nops-locked driver the self test now tears the device down without\nrtnl_lock.\n\nWith lockdep this reproduces deterministically on every offline self\ntest on such a driver; note the sole lock held is the instance lock, not\nrtnl:\n\n WARNING: suspicious RCU usage\n net/core/netpoll.c:207 suspicious rcu_dereference_protected() usage!\n 1 lock held by ethtool/107:\n #0: (&dev->lock){+.+.}, at: dev_ethtool\n Call Trace:\n netpoll_poll_disable\n __dev_close_many\n netif_close_many\n netif_close\n fbnic_self_test\n dev_ethtool_locked\n dev_ethtool\n dev_ioctl\n sock_ioctl\n __x64_sys_ioctl\n\nWithout lockdep the same condition trips ASSERT_RTNL() in\n__dev_close_many() / __dev_open(); that check only samples the global\nrtnl state, so it can be masked by a concurrent rtnl holder, but the\ndevice is still being reconfigured without the lock it requires.\n\nThe ethtool self_test is a legacy ioctl-only command, so an ETHTOOL_TEST\ncase is only needed on the ioctl path. Add an opt-in bit for drivers whose\nself test needs rtnl_lock and set it on the ops-locked drivers whose\noffline self test tears the interface down and up:\n\n - fbnic (ops-locked via queue_mgmt_ops): fbnic_self_test() offline path\n uses netif_close() / netif_open().\n - bnxt (ops-locked via queue_mgmt_ops): bnxt_self_test() offline path\n goes through bnxt_close_nic() / bnxt_half_open_nic() /\n bnxt_half_close_nic() / bnxt_open_nic(), which close and reopen the\n device."
}
],
"lastModified": "2026-10-19T10:19:26.000",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}