Vulnerabilidad en kernel de Linux (CVE-2022-48822)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-416
Utilización después de liberación
Fecha de publicación:
16/07/2024
Última modificación:
07/08/2024
Descripción
En el kernel de Linux, se resolvió la siguiente vulnerabilidad: usb: f_fs: corrige el use-after-free para epfile Considere un caso en el que se llama a ffs_func_eps_disable desde ffs_func_disable como parte del cambio de composición y al mismo tiempo se llama a ffs_epfile_release desde el espacio de usuario. ffs_epfile_release liberará el búfer de lectura y llamará a ffs_data_closed, que a su vez destruirá ffs->epfiles y lo marcará como NULL. Mientras esto sucedía, el controlador ya inicializó el archivo ep local en ffs_func_eps_disable, que ahora está liberado y esperando adquirir el spinlock. Una vez adquirido el spinlock, el controlador continúa con el valor obsoleto de epfile e intenta liberar el búfer de lectura ya liberado, lo que provoca un use-after-free. La siguiente es la ilustración de la ejecución: CPU1 CPU2 ffs_func_eps_disable epfiles (copia local) ffs_epfile_release ffs_data_closed if (último archivo cerrado) ffs_data_reset ffs_data_clear ffs_epfiles_destroy spin_lock desreferenciar epfiles Arregle estas ejecucións tomando la copia local de epfiles y asignándola bajo spinlock y si epfiles(local) es null luego actualícelo en ffs->epfiles y finalmente destrúyalo. Ampliar el alcance más allá de la ejecución, proteger las estructuras relacionadas con ep y los accesos concurrentes.
Impacto
Puntuación base 3.x
7.80
Gravedad 3.x
ALTA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.9 (incluyendo) | 4.14.267 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.15 (incluyendo) | 4.19.230 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (incluyendo) | 5.4.180 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (incluyendo) | 5.10.101 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (incluyendo) | 5.15.24 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (incluyendo) | 5.16.10 (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/0042178a69eb77a979e36a50dcce9794a3140ef8
- https://git.kernel.org/stable/c/32048f4be071f9a6966744243f1786f45bb22dc2
- https://git.kernel.org/stable/c/3e078b18753669615301d946297bafd69294ad2c
- https://git.kernel.org/stable/c/72a8aee863af099d4434314c4536d6c9a61dcf3c
- https://git.kernel.org/stable/c/c9fc422c9a43e3d58d246334a71f3390401781dc
- https://git.kernel.org/stable/c/cfe5f6fd335d882bcc829a1c8a7d462a455c626e
- https://git.kernel.org/stable/c/ebe2b1add1055b903e2acd86b290a85297edc0b3