CVE-2025-37882 (GCVE-0-2025-37882)
Vulnerability from cvelistv5
Published
2025-05-09 06:45
Modified
2025-05-26 05:22
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
usb: xhci: Fix isochronous Ring Underrun/Overrun event handling
The TRB pointer of these events points at enqueue at the time of error
occurrence on xHCI 1.1+ HCs or it's NULL on older ones. By the time we
are handling the event, a new TD may be queued at this ring position.
I can trigger this race by rising interrupt moderation to increase IRQ
handling delay. Similar delay may occur naturally due to system load.
If this ever happens after a Missed Service Error, missed TDs will be
skipped and the new TD processed as if it matched the event. It could
be given back prematurely, risking data loss or buffer UAF by the xHC.
Don't complete TDs on xrun events and don't warn if queued TDs don't
match the event's TRB pointer, which can be NULL or a link/no-op TRB.
Don't warn if there are no queued TDs at all.
Now that it's safe, also handle xrun events if the skip flag is clear.
This ensures completion of any TD stuck in 'error mid TD' state right
before the xrun event, which could happen if a driver submits a finite
number of URBs to a buggy HC and then an error occurs on the last TD.
References
Impacted products
{ "containers": { "cna": { "affected": [ { "defaultStatus": "unaffected", "product": "Linux", "programFiles": [ "drivers/usb/host/xhci-ring.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "lessThan": "16a7a8e6c47fea5c847beb696c8c21a7a44c1915", "status": "affected", "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2", "versionType": "git" }, { "lessThan": "39a080a2925c81b0f1da0add44722ef2b78e5454", "status": "affected", "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2", "versionType": "git" }, { "lessThan": "906dec15b9b321b546fd31a3c99ffc13724c7af4", "status": "affected", "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2", "versionType": "git" } ] }, { "defaultStatus": "affected", "product": "Linux", "programFiles": [ "drivers/usb/host/xhci-ring.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "lessThanOrEqual": "6.12.*", "status": "unaffected", "version": "6.12.26", "versionType": "semver" }, { "lessThanOrEqual": "6.14.*", "status": "unaffected", "version": "6.14.5", "versionType": "semver" }, { "lessThanOrEqual": "*", "status": "unaffected", "version": "6.15", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "cpeMatch": [ { "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.12.26", "vulnerable": true }, { "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.14.5", "vulnerable": true }, { "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.15", "vulnerable": true } ], "negate": false, "operator": "OR" } ] } ], "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nusb: xhci: Fix isochronous Ring Underrun/Overrun event handling\n\nThe TRB pointer of these events points at enqueue at the time of error\noccurrence on xHCI 1.1+ HCs or it\u0027s NULL on older ones. By the time we\nare handling the event, a new TD may be queued at this ring position.\n\nI can trigger this race by rising interrupt moderation to increase IRQ\nhandling delay. Similar delay may occur naturally due to system load.\n\nIf this ever happens after a Missed Service Error, missed TDs will be\nskipped and the new TD processed as if it matched the event. It could\nbe given back prematurely, risking data loss or buffer UAF by the xHC.\n\nDon\u0027t complete TDs on xrun events and don\u0027t warn if queued TDs don\u0027t\nmatch the event\u0027s TRB pointer, which can be NULL or a link/no-op TRB.\nDon\u0027t warn if there are no queued TDs at all.\n\nNow that it\u0027s safe, also handle xrun events if the skip flag is clear.\nThis ensures completion of any TD stuck in \u0027error mid TD\u0027 state right\nbefore the xrun event, which could happen if a driver submits a finite\nnumber of URBs to a buggy HC and then an error occurs on the last TD." } ], "providerMetadata": { "dateUpdated": "2025-05-26T05:22:57.713Z", "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux" }, "references": [ { "url": "https://git.kernel.org/stable/c/16a7a8e6c47fea5c847beb696c8c21a7a44c1915" }, { "url": "https://git.kernel.org/stable/c/39a080a2925c81b0f1da0add44722ef2b78e5454" }, { "url": "https://git.kernel.org/stable/c/906dec15b9b321b546fd31a3c99ffc13724c7af4" } ], "title": "usb: xhci: Fix isochronous Ring Underrun/Overrun event handling", "x_generator": { "engine": "bippy-1.2.0" } } }, "cveMetadata": { "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "assignerShortName": "Linux", "cveId": "CVE-2025-37882", "datePublished": "2025-05-09T06:45:45.936Z", "dateReserved": "2025-04-16T04:51:23.962Z", "dateUpdated": "2025-05-26T05:22:57.713Z", "state": "PUBLISHED" }, "dataType": "CVE_RECORD", "dataVersion": "5.1", "vulnerability-lookup:meta": { "nvd": "{\"cve\":{\"id\":\"CVE-2025-37882\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-05-09T07:16:09.497\",\"lastModified\":\"2025-05-12T17:32:32.760\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nusb: xhci: Fix isochronous Ring Underrun/Overrun event handling\\n\\nThe TRB pointer of these events points at enqueue at the time of error\\noccurrence on xHCI 1.1+ HCs or it\u0027s NULL on older ones. By the time we\\nare handling the event, a new TD may be queued at this ring position.\\n\\nI can trigger this race by rising interrupt moderation to increase IRQ\\nhandling delay. Similar delay may occur naturally due to system load.\\n\\nIf this ever happens after a Missed Service Error, missed TDs will be\\nskipped and the new TD processed as if it matched the event. It could\\nbe given back prematurely, risking data loss or buffer UAF by the xHC.\\n\\nDon\u0027t complete TDs on xrun events and don\u0027t warn if queued TDs don\u0027t\\nmatch the event\u0027s TRB pointer, which can be NULL or a link/no-op TRB.\\nDon\u0027t warn if there are no queued TDs at all.\\n\\nNow that it\u0027s safe, also handle xrun events if the skip flag is clear.\\nThis ensures completion of any TD stuck in \u0027error mid TD\u0027 state right\\nbefore the xrun event, which could happen if a driver submits a finite\\nnumber of URBs to a buggy HC and then an error occurs on the last TD.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: usb: xhci: Arreglar el manejo de eventos is\u00f3cronos de Infraeje/Desbordamiento de Anillo El puntero TRB de estos eventos apunta a enqueue en el momento de ocurrencia del error en HCs xHCI 1.1+ o es NULL en los m\u00e1s antiguos. En el momento en que manejamos el evento, un nuevo TD puede estar en cola en esta posici\u00f3n de anillo. Puedo desencadenar esta ejecuci\u00f3n aumentando la moderaci\u00f3n de interrupciones para aumentar el retraso en el manejo de IRQ. Un retraso similar puede ocurrir naturalmente debido a la carga del sistema. Si esto sucede alguna vez despu\u00e9s de un Error de Servicio Perdido, los TD perdidos se omitir\u00e1n y el nuevo TD se procesar\u00e1 como si coincidiera con el evento. Podr\u00eda devolverse prematuramente, con el riesgo de p\u00e9rdida de datos o UAF de b\u00fafer por parte del xHC. No complete los TD en eventos xrun y no advierta si los TD en cola no coinciden con el puntero TRB del evento, que puede ser NULL o un TRB de enlace/no operaci\u00f3n. No avisar si no hay ning\u00fan TD en cola. Ahora que es seguro, tambi\u00e9n se gestionan los eventos xrun si el indicador de omisi\u00f3n est\u00e1 desactivado. Esto garantiza la finalizaci\u00f3n de cualquier TD bloqueado en estado de \\\"error a mitad de TD\\\" justo antes del evento xrun, lo que podr\u00eda ocurrir si un controlador env\u00eda un n\u00famero finito de URB a un HC con errores y luego se produce un error en el \u00faltimo TD.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/16a7a8e6c47fea5c847beb696c8c21a7a44c1915\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/39a080a2925c81b0f1da0add44722ef2b78e5454\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/906dec15b9b321b546fd31a3c99ffc13724c7af4\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}" } }
Loading…
Loading…
Sightings
Author | Source | Type | Date |
---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…