Vulnerabilidad en kernel de Linux (CVE-2025-38632)
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:
22/08/2025
Última modificación:
26/11/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: pinmux: corrección de la carrera que causaba que mux_owner fuera nulo con el commit 5a3e85c3c397 de mux_usecount activa ("pinmux: Usar acceso secuencial para acceder a los datos de desc->pinmux"). Se intentó solucionar el problema cuando dos clientes del mismo GPIO llamaban a pinctrl_select_state() para la misma funcionalidad, lo que provocaba un problema de puntero nulo al acceder a desc->mux_owner. Sin embargo, el problema no se solucionó por completo debido a la forma en que se gestionó y aún puede resultar en el mismo puntero nulo. El problema se produce debido a la siguiente intercalación: cpu0 (proceso A) cpu1 (proceso B) pin_request() { pin_free() { mutex_lock() desc->mux_usecount--; //se convierte en 0 .. mutex_unlock() mutex_lock(desc->mux) desc->mux_usecount++; // se convierte en 1 desc->mux_owner = owner; mutex_unlock(desc->mux) mutex_lock(desc->mux) desc->mux_owner = NULL; mutex_unlock(desc->mux) Esta secuencia lleva a un estado donde el pin parece estar en uso (`mux_usecount == 1`) pero no tiene propietario (`mux_owner == NULL`), lo que puede generar un puntero nulo en la siguiente solicitud de pin en el mismo pin. Asegúrese de que las actualizaciones de mux_usecount y mux_owner se realicen automáticamente bajo el mismo bloqueo. Solo borre mux_owner cuando mux_usecount llegue a cero y no se haya asignado un nuevo propietario.
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:*:*:*:*:*:*:*:* | 6.6.66 (incluyendo) | 6.6.102 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.12.5 (incluyendo) | 6.12.42 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (incluyendo) | 6.15.10 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.16 (incluyendo) | 6.16.1 (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/0b075c011032f88d1cfde3b45d6dcf08b44140eb
- https://git.kernel.org/stable/c/22b585cbd67d14df3b91529d1b990661c300faa9
- https://git.kernel.org/stable/c/9b2a3e7189028aa7c4d53a84364f2ea9fb209787
- https://git.kernel.org/stable/c/9ea3f6b9a67be3476e331ce51cac316c2614a564
- https://git.kernel.org/stable/c/b7bd6e3971eb7f0e34d2fdce1b18b08094e0c804



