Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en kernel de Linux (CVE-2024-42302)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-416 Utilización después de liberación
Fecha de publicación:
17/08/2024
Última modificación:
22/08/2024

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: PCI/DPC: corrige el use-after-free en DPC simultáneos y la eliminación en caliente. Keith informa un use-after-free cuando ocurre un evento de DPC simultáneamente con la eliminación en caliente del mismo. parte de la jerarquía: dpc_handler() espera que el bus secundario esté listo debajo del puerto descendente donde ocurrió el evento DPC. Para hacerlo, sondea el espacio de configuración del primer dispositivo secundario en el bus secundario. Si ese dispositivo secundario se elimina simultáneamente, los accesos a su estructura pci_dev hacen que el kernel falle. Esto se debe a que pci_bridge_wait_for_secondary_bus() no mantiene una referencia en el dispositivo secundario. Antes de v6.3, la función solo se llamaba al reanudar desde la suspensión del sistema o al reanudar el tiempo de ejecución. Mantener una referencia no era necesario en aquel entonces porque el subproceso pciehp IRQ nunca podía ejecutarse al mismo tiempo. (Al reanudar desde la suspensión del sistema, las IRQ no se habilitan hasta después de la fase resume_noirq. Y la reanudación del tiempo de ejecución siempre se espera antes de que se elimine un dispositivo PCI). Sin embargo, a partir de v6.3, pci_bridge_wait_for_secondary_bus() también se llama en un evento DPC. El commit 53b54ad074de ("PCI/DPC: Esperar la preparación del bus secundario después del reinicio"), que introdujo eso, no pudo apreciar que pci_bridge_wait_for_secundary_bus() ahora necesita mantener una referencia en el dispositivo secundario porque dpc_handler() y pciehp pueden ejecutarse simultáneamente. El commit fue respaldada a núcleos estables v5.10+, por lo que ese es el más antiguo afectado. Agregue la adquisición de referencia que falta. Seguimiento de pila abreviado: ERROR: no se puede manejar el error de página para la dirección: 00000000091400c0 CPU: 15 PID: 2464 Comm: irq/53-pcie-dpc 6.9.0 RIP: pci_bus_read_config_dword+0x17/0x50 pci_dev_wait() pci_bridge_wait_for_secondary_bus() dpc_reset_link() _hacer_recuperación () dpc_handler()

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.10.224 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (incluyendo) 5.15.165 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 6.1.103 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (incluyendo) 6.6.44 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.10.3 (excluyendo)