CVE-2026-98766
En el kernel de Linux se ha resuelto la siguiente vulnerabilidad:
usb: gadget: aspeed-vhub: cancel wake work on device removal
wake_work se arma desde el callback .wakeup del gadget para reanudar los puertos descendentes suspendidos, y nunca se cancela en ast_vhub_remove(), por lo que un elemento de trabajo encolado antes o durante la eliminación puede ejecutarse después de que devm haya liberado vhub y sus puertos, un use-after-free (uso de memoria liberada).
Cancelar solo el trabajo no es suficiente: usb_gadget_wakeup() no toma ningún bloqueo y la ruta de desvinculación nunca limpia wakeup_en, por lo que una solicitud de remote-wakeup en curso en otra CPU puede volver a armar el trabajo después de la cancelación y antes de que vhub sea liberado.
Leer descripción completaMostrar menos
ast_vhub_del_dev() ya limpia d->registered bajo vhub->lock antes de desregistrar el gadget. Rechazar el wakeup en ast_vhub_udc_wakeup() una vez que d->registered está limpio: la comprobación y schedule_work() quedan entonces atómicas frente a la desvinculación, de modo que un wakeup que superó la comprobación antes de limpiar el flag se vacía mediante cancel_work_sync() tras el bucle de del_dev, y uno que llega después regresa sin armar el trabajo. Además, mover INIT_WORK() al inicio de ast_vhub_probe(), ya que la ruta de error de probe reutiliza ast_vhub_remove() y, de otro modo, cancelaría un elemento de trabajo nunca inicializado.
Este problema fue encontrado por una herramienta interna de análisis estático.
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
- 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-98766",
"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": "7ecca2a4080cb6b1fa174adc588fce9e9014c43c",
"lessThan": "f343bfa3fc9f6255602d66f4a7dbe7ddef13ba41",
"versionType": "git"
},
{
"status": "affected",
"version": "7ecca2a4080cb6b1fa174adc588fce9e9014c43c",
"lessThan": "474e9e1852fb5ba0bfb26f123dd0cb361d0f4f4d",
"versionType": "git"
},
{
"status": "affected",
"version": "7ecca2a4080cb6b1fa174adc588fce9e9014c43c",
"lessThan": "c81504dfd2d93e345c98e7a012c2f2e74ce5b6a1",
"versionType": "git"
},
{
"status": "affected",
"version": "7ecca2a4080cb6b1fa174adc588fce9e9014c43c",
"lessThan": "20388c8d1d74c203fec8194c45cd31afdfab934e",
"versionType": "git"
}
],
"programFiles": [
"drivers/usb/gadget/udc/aspeed-vhub/core.c",
"drivers/usb/gadget/udc/aspeed-vhub/dev.c",
"drivers/usb/gadget/udc/aspeed-vhub/hub.c",
"drivers/usb/gadget/udc/aspeed-vhub/vhub.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.113",
"versionType": "semver",
"lessThanOrEqual": "6.12.*"
},
{
"status": "unaffected",
"version": "6.18.56",
"versionType": "semver",
"lessThanOrEqual": "6.18.*"
},
{
"status": "unaffected",
"version": "7.2.10",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"drivers/usb/gadget/udc/aspeed-vhub/core.c",
"drivers/usb/gadget/udc/aspeed-vhub/dev.c",
"drivers/usb/gadget/udc/aspeed-vhub/hub.c",
"drivers/usb/gadget/udc/aspeed-vhub/vhub.h"
],
"defaultStatus": "affected"
}
]
}
],
"published": "2026-10-18T16:17:30.440",
"references": [
{
"url": "https://git.kernel.org/stable/c/20388c8d1d74c203fec8194c45cd31afdfab934e",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/474e9e1852fb5ba0bfb26f123dd0cb361d0f4f4d",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/c81504dfd2d93e345c98e7a012c2f2e74ce5b6a1",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/f343bfa3fc9f6255602d66f4a7dbe7ddef13ba41",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"vulnStatus": "Received",
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: aspeed-vhub: cancel wake work on device removal\n\nwake_work is armed from the gadget .wakeup callback to resume suspended\ndownstream ports, and it is never cancelled in ast_vhub_remove(), so a\nwork item queued before or during removal can run after devm has freed\nvhub and its ports, a use-after-free.\n\nCancelling the work alone is not sufficient: usb_gadget_wakeup() takes\nno lock and the unbind path never clears wakeup_en, so a remote-wakeup\nrequest in flight on another CPU can re-arm the work after the cancel\nand before vhub is freed.\n\nast_vhub_del_dev() already clears d->registered under vhub->lock before\nunregistering the gadget. Refuse the wakeup in ast_vhub_udc_wakeup()\nonce d->registered is clear: the check and the schedule_work() are then\natomic against the unbind, so a wakeup that passed before the flag was\ncleared is drained by the cancel_work_sync() after the del_dev loop,\nand one that arrives later returns without arming. Also move INIT_WORK()\nto the top of ast_vhub_probe(), since the probe error path reuses\nast_vhub_remove() and would otherwise cancel a never-initialized work\nitem.\n\nThis issue was found by an in-house static analysis tool."
}
],
"lastModified": "2026-10-19T10:19:40.727",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}