Insufficient cleanup of passed-through device IRQs The management of IRQs associated with physical devices exposed to x86 HVM guests…
XEN·CWE-459·Published 2022-01-25
Insufficient cleanup of passed-through device IRQs The management of IRQs associated with physical devices exposed to x86 HVM guests involves an iterative operation in particular when cleaning up after the guest's use of the device. In the case where an interrupt is not quiescent yet at the time this cleanup gets invoked, the cleanup attempt may be scheduled to be retried. When multiple interrupts are involved, this scheduling of a retry may get erroneously skipped. At the same time pointers may get cleared (resulting in a de-reference of NULL) and freed (resulting in a use-after-free), while other code would continue to assume them to be valid.
Insufficient cleanup of passed-through device IRQs The management of IRQs associated with physical devices exposed to x86 HVM guests involves an iterative operation in particular when cleaning up after the guest's use of the device. In the case where an interrupt is not quiescent yet at the time this cleanup gets invoked, the cleanup attempt may be scheduled to be retried. When multiple interrupts are involved, this scheduling of a retry may get erroneously skipped. At the same time pointers may get cleared (resulting in a de-reference of NULL) and freed (resulting in a use-after-free), while other code would continue to assume them to be valid.
Un saneo insuficiente de las IRQs de dispositivos pasados. La administración de las IRQs asociadas a dispositivos físicos expuestos a huéspedes x86 HVM implica una operación iterativa en particular cuando es limpiada después del uso del dispositivo por parte del huésped. En el caso de que una interrupción no esté quieta todavía en el momento en que es invocado este saneo, el intento de saneo puede ser programado para ser reintentado. Cuando se presentan varias interrupciones involucradas, esta programación de un reintento puede omitirse erróneamente. Al mismo tiempo, los punteros pueden ser borrados (resultando en una desreferencia de NULL) y liberados (resultando en un uso de memoria previamente liberada), mientras que otro código continuaría asumiendo que son válidos
| Version | Type | Source | Base | Exp | Impact | Vector |
|---|---|---|---|---|---|---|
| 2.0 | Primary | NVD | 4.7 | 3.4 | 6.9 | AV:L/AC:M/Au:N/C:N/I:N/A:C |
| 3.1 | Primary | NVD | 4.6 | 0.9 | 3.6 | CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |