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

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

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
27/12/2024
Última modificación:
19/09/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: vfio/pci: Ocultar correctamente la primera capacidad extendida PCIe de la lista Hay casos en los que una capacidad extendida PCIe debería estar oculta al usuario. Por ejemplo, una capacidad desconocida (es decir, una capacidad con un ID mayor que PCI_EXT_CAP_ID_MAX) o una capacidad que se elige intencionalmente para que esté oculta al usuario. Para ocultar una capacidad, se virtualiza y modifica el campo "Next Capability Offset" de la capacidad anterior para que apunte a la capacidad después de la que debería estar oculta. El caso especial en el que la primera capacidad de la lista debería estar oculta se gestiona de forma diferente porque no hay ninguna capacidad anterior que pueda modificarse. En este caso, el ID y la versión de la capacidad se ponen a cero mientras que el siguiente puntero queda intacto. Esto oculta la capacidad y deja un ancla para el resto de la lista de capacidades. Sin embargo, hoy en día, ocultar la primera capacidad en la lista no se hace correctamente si la capacidad es desconocida, ya que struct vfio_pci_core_device->pci_config_map se establece en el ID de capacidad durante la inicialización, pero el ID de capacidad no se verifica correctamente más tarde cuando se usa en vfio_config_do_rw(). Esto lleva a la siguiente advertencia [1] y a un acceso fuera de los límites a la matriz ecap_perms. Arréglelo verificando cap_id en vfio_config_do_rw(), y si es mayor que PCI_EXT_CAP_ID_MAX, use un struct perm_bits alternativo para acceso directo de solo lectura en lugar de la matriz ecap_perms. Tenga en cuenta que esto es seguro ya que el anterior es el único caso en el que cap_id puede superar a PCI_EXT_CAP_ID_MAX (excepto para las capacidades especiales, que ya se verificaron antes). [1] ADVERTENCIA: CPU: 118 PID: 5329 en drivers/vfio/pci/vfio_pci_config.c:1900 vfio_pci_config_rw+0x395/0x430 [vfio_pci_core] CPU: 118 UID: 0 PID: 5329 Comm: simx-qemu-syste No contaminado 6.12.0+ #1 (fragmento) Seguimiento de llamadas: ? show_regs+0x69/0x80 ? __warn+0x8d/0x140 ? vfio_pci_config_rw+0x395/0x430 [vfio_pci_core] ? report_bug+0x18f/0x1a0 ? handle_bug+0x63/0xa0 ? vfio_pci_config_rw+0x395/0x430 [núcleo vfio_pci] vfio_pci_rw+0x244/0x430 [núcleo vfio_pci] vfio_pci_rw+0x101/0x1b0 [núcleo vfio_pci] vfio_pci_core_read+0x1d/0x30 [núcleo vfio_pci] vfio_device_fops_read+0x27/0x40 [vfio] vfs_read+0xbd/0x340 ? vfio_device_fops_unl_ioctl+0xbb/0x740 [vfio] ? __rseq_handle_notify_resume+0xa4/0x4b0 __x64_sys_pread64+0x96/0xc0 x64_sys_call+0x1c3d/0x20d0 do_syscall_64+0x4d/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 3.6 (incluyendo) 4.19.325 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.20 (incluyendo) 5.4.287 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (incluyendo) 5.10.231 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (incluyendo) 5.15.174 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 6.1.120 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (incluyendo) 6.6.64 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.11.11 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.12 (incluyendo) 6.12.2 (excluyendo)