Vulnerabilidad en kernel de Linux (CVE-2023-52843)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
21/05/2024
Última modificación:
24/09/2025
Descripción
En el kernel de Linux se ha resuelto la siguiente vulnerabilidad: llc: verificar mac len antes de leer el encabezado de mac. LLC lee el encabezado de mac con eth_hdr sin verificar que el skb tenga un encabezado de Ethernet. Syzbot pudo ingresar llc_rcv en un dispositivo tun. Tun puede insertar paquetes sin mac len y con el protocolo skb-> configurable por el usuario (pasando un encabezado tun_pi cuando no se configura IFF_NO_PI). ERROR: KMSAN: valor uninit en llc_station_ac_send_test_r net/llc/llc_station.c:81 [en línea] BUG: KMSAN: valor uninit en llc_station_rcv+0x6fb/0x1290 net/llc/llc_station.c:111 llc_station_ac_send_test_r net/llc/llc_station. c:81 [en línea] llc_station_rcv+0x6fb/0x1290 net/llc/llc_station.c:111 llc_rcv+0xc5d/0x14a0 net/llc/llc_input.c:218 __netif_receive_skb_one_core net/core/dev.c:5523 __netif_receive_skb+ 0x1a6 /0x5a0 net/core/dev.c:5637 netif_receive_skb_internal net/core/dev.c:5723 [en línea] netif_receive_skb+0x58/0x660 net/core/dev.c:5782 tun_rx_batched+0x3ee/0x980 drivers/net/tun.c :1555 tun_get_user+0x54c5/0x69c0 drivers/net/tun.c:2002 Agregue una prueba mac_len antes de las tres llamadas eth_hdr(skb) en net/llc. Hay más usos en include/net/llc_pdu.h. Todos estos están protegidos por un protocolo de prueba skb->== ETH_P_802_2. Lo cual no protege contra este escenario tun. Pero la prueba mac_len agregada en este parche en llc_fixup_skb también los protegerá indirectamente. Esto se llama desde llc_rcv antes que cualquier otro código LLC. Es tentador simplemente agregar una verificación general de mac_len en llc_rcv, pero no estoy seguro de si eso podría interrumpir las rutas LLC válidas que no asumen un encabezado Ethernet. En principio, 802.2 LLC se puede utilizar además de protocolos que no sean 802.3. La confirmación a la que se hace referencia a continuación muestra que solía hacerlo, además de Token Ring. Al menos uno de los tres usos de eth_hdr se remonta a antes del inicio del historial de git. Pero el que ejercita syzbot se introduce en este compromiso. Ese compromiso es lo suficientemente antiguo (2008), por lo que efectivamente todos los núcleos estables deberían recibirlo.
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 2.6.26 (incluyendo) | 4.14.330 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.15 (incluyendo) | 4.19.299 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (incluyendo) | 5.4.261 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (incluyendo) | 5.10.201 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (incluyendo) | 5.15.139 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (incluyendo) | 6.1.63 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (incluyendo) | 6.5.12 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.6 (incluyendo) | 6.6.2 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:2.6.25:-:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:2.6.25:rc9:*:*:*:*:*:* |
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/0a720d0259ad3521ec6c9e4199f9f6fc75bac77a
- https://git.kernel.org/stable/c/352887b3edd007cf9b0abc30fe9d98622acd859b
- https://git.kernel.org/stable/c/3a2653828ffc6101aef80bf58d5b77484239f779
- https://git.kernel.org/stable/c/7b3ba18703a63f6fd487183b9262b08e5632da1b
- https://git.kernel.org/stable/c/900a4418e3f66a32db6baaf23f92b99c20ae6535
- https://git.kernel.org/stable/c/9a3f9054a5227d7567cba1fb821df48ccecad10c
- https://git.kernel.org/stable/c/cbdcdf42d15dac74c7287679fb2a9d955f8feb1f
- https://git.kernel.org/stable/c/f980e9a57dfb9530f1f4ee41a2420f2a256d7b29
- https://git.kernel.org/stable/c/ff5cb6a4f0c6d7fbdc84858323fb4b7af32cfd79
- https://git.kernel.org/stable/c/0a720d0259ad3521ec6c9e4199f9f6fc75bac77a
- https://git.kernel.org/stable/c/352887b3edd007cf9b0abc30fe9d98622acd859b
- https://git.kernel.org/stable/c/3a2653828ffc6101aef80bf58d5b77484239f779
- https://git.kernel.org/stable/c/7b3ba18703a63f6fd487183b9262b08e5632da1b
- https://git.kernel.org/stable/c/900a4418e3f66a32db6baaf23f92b99c20ae6535
- https://git.kernel.org/stable/c/9a3f9054a5227d7567cba1fb821df48ccecad10c
- https://git.kernel.org/stable/c/cbdcdf42d15dac74c7287679fb2a9d955f8feb1f
- https://git.kernel.org/stable/c/f980e9a57dfb9530f1f4ee41a2420f2a256d7b29
- https://git.kernel.org/stable/c/ff5cb6a4f0c6d7fbdc84858323fb4b7af32cfd79



