Vulnerabilidad en kernel de Linux (CVE-2023-52771)
Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-362
Ejecución concurrente utilizando recursos compartidos con una incorrecta sincronización (Condición de carrera)
Fecha de publicación:
21/05/2024
Última modificación:
23/09/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: cxl/port: corrige delete_endpoint() frente a la ejecución de cancelación del registro principal. El subsistema CXL, en el momento cxl_mem ->probe(), establece un linaje de puertos (objetos struct cxl_port) entre un punto final y la raíz de una topología CXL. Cada puerto, incluido el puerto del punto final, está conectado al controlador cxl_port. Dada esa configuración, se deduce que cuando cualquier puerto en ese linaje pasa por un evento cxl_port ->remove(), o el memdev pasa por un evento cxl_mem ->remove(). La jerarquía debajo del puerto eliminado, o toda la jerarquía si se elimina el memdev, debe bajar. La devolución de llamada delete_endpoint() tiene cuidado de verificar si se llama para derribar la jerarquía o si solo se llama para derribar memdev porque un puerto ancestro está pasando por ->remove(). Ese cuidado debe tenerse en cuenta con el dispositivo_lock() del padre del punto final. Lo que requiere la corrección de 2 errores: 1/ Se necesita una referencia en el padre para evitar escenarios de use after free como esta firma: ERROR: spinlock bad magic en CPU#0, kworker/u56:0/11 Nombre del hardware: QEMU PC estándar (Q35 + ICH9, 2009), BIOS edk2-20230524-3.fc38 24/05/2023 Cola de trabajo: cxl_port detach_memdev [cxl_core] RIP: 0010:spin_bug+0x65/0xa0 Seguimiento de llamadas: do_raw_spin_lock+0x69/0xa0 5 /0xb80 delete_endpoint+0xad/0x150 [cxl_core] devres_release_all+0xb8/0x110 device_unbind_cleanup+0xe/0x70 device_release_driver_internal+0x1d2/0x210 detach_memdev+0x15/0x20 [cxl_core] proceso_one_work+0x1e3/0x4c0 _thread+0x1dd/0x3d0 2/ En el caso de RCH topologías, el dispositivo principal que debe bloquearse no siempre es @port->dev como lo devuelve cxl_mem_find_port(); utilice endpoint->dev.parent en su lugar.
Impacto
Puntuación base 3.x
4.70
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.18 (incluyendo) | 6.5.13 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.6 (incluyendo) | 6.6.3 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/37179fcc916bce8c3cc7b36d67ef814cce55142b
- https://git.kernel.org/stable/c/6b2e428e673b3f55965674a426c40922e91388aa
- https://git.kernel.org/stable/c/8d2ad999ca3c64cb08cf6a58d227b9d9e746d708
- https://git.kernel.org/stable/c/37179fcc916bce8c3cc7b36d67ef814cce55142b
- https://git.kernel.org/stable/c/6b2e428e673b3f55965674a426c40922e91388aa
- https://git.kernel.org/stable/c/8d2ad999ca3c64cb08cf6a58d227b9d9e746d708



