Vulnerabilidad en kernel de Linux (CVE-2022-48818)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
16/07/2024
Última modificación:
06/10/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net: dsa: mv88e6xxx: no use devres para mdiobus Como se explica en los commits: 74b6d7d13307 ("net: dsa: realtek: registre el bus MDIO en devres") 5135e96a3dd2 (" net: dsa: no asigne el esclavo_mii_bus usando devres") mdiobus_free() entrará en pánico cuando se llame desde devm_mdiobus_free() <- devres_release_all() <- __device_release_driver(), y ese mdiobus no fue anulado previamente. El mv88e6xxx es un dispositivo MDIO, por lo que el conjunto inicial de restricciones que pensé que causaría esto (buses I2C o SPI que llaman ->eliminar en ->apagar) no se aplican. Pero hay algo más que se aplica aquí. Si el maestro DSA está en un bus que llama ->remove from ->shutdown (como dpaa2-eth, que está en el bus fsl-mc), hay un enlace de dispositivo entre el conmutador y el maestro DSA, y device_links_unbind_consumers( ) desvinculará el controlador del interruptor Marvell al apagarlo. systemd-shutdown[1]: Apagando. mv88e6085 0x0000000008b96000:00 sw_gl0: El enlace está inactivo fsl-mc dpbp.9: Eliminando del grupo iommu 7 fsl-mc dpbp.8: Eliminando del grupo iommu 7 ------------[ cortar aquí ]- ----------- ¡ERROR del kernel en drivers/net/phy/mdio_bus.c:677! Error interno: Ups - ERROR: 0 [#1] PREEMPT Módulos SMP vinculados en: CPU: 0 PID: 1 Comm: systemd-shutdow Not tainted 5.16.5-00040-gdc05f73788e5 #15 pc: mdiobus_free+0x44/0x50 lr: devm_mdiobus_free +0x10/0x20 Rastreo de llamadas: mdiobus_free+0x44/0x50 devm_mdiobus_free+0x10/0x20 devres_release_all+0xa0/0x100 __device_release_driver+0x190/0x220 device_release_driver_internal+0xac/0xb0 device_links_unbind_consumers+0xd4/0x 100 __device_release_driver+0x4c/0x220 dispositivo_release_driver_internal+0xac/0xb0 device_links_unbind_consumers+0xd4 /0x100 __device_release_driver+0x94/0x220 dispositivo_release_driver+0x28/0x40 bus_remove_device+0x118/0x124 device_del+0x174/0x420 fsl_mc_device_remove+0x24/0x40 __fsl_mc_device_remove+0xc/0x20 _for_each_child+0x58/0xa0 dprc_remove+0x90/0xb0 fsl_mc_driver_remove+0x20/0x5c __device_release_driver+0x21c /0x220 dispositivo_liberación_controlador+0x28/0x40 bus_remove_device+0x118/0x124 dispositivo_del+0x174/0x420 fsl_mc_bus_remove+0x80/0x100 fsl_mc_bus_shutdown+0xc/0x1c plataforma_apagado+0x20/0x30 54/0x330 kernel_power_off+0x34/0x6c __do_sys_reboot+0x15c/0x250 __arm64_sys_reboot+0x20 /0x30 invoke_syscall.constprop.0+0x4c/0xe0 do_el0_svc+0x4c/0x150 el0_svc+0x24/0xb0 el0t_64_sync_handler+0xa8/0xb0 el0t_64_sync+0x178/0x17c Por lo tanto, se debe aplicar el mismo tratamiento a todos los controladores de conmutador DSA, que es: usar devres tanto para la asignación como para el registro de mdiobus, o no utilice devres en absoluto. El controlador Marvell ya tiene una buena estructura para la eliminación de mdiobus, así que simplemente conecte mdiobus_free y elimine los devres.
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:*:*:*:*:*:*:*:* | 5.9 (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) |
| cpe:2.3:o:linux:linux_kernel:5.17:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:5.17:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:5.17:rc3:*:*:*:*:*:* |
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/1b451c3994a2d322f8e55032c62c8b47b7d95900
- https://git.kernel.org/stable/c/8b626d45127d6f5ada7d815b83cfdc09e8cb1394
- https://git.kernel.org/stable/c/8ccebe77df6e0d88c72ba5e69cf1835927e53b6c
- https://git.kernel.org/stable/c/f53a2ce893b2c7884ef94471f170839170a4eba0
- https://git.kernel.org/stable/c/1b451c3994a2d322f8e55032c62c8b47b7d95900
- https://git.kernel.org/stable/c/8b626d45127d6f5ada7d815b83cfdc09e8cb1394
- https://git.kernel.org/stable/c/8ccebe77df6e0d88c72ba5e69cf1835927e53b6c
- https://git.kernel.org/stable/c/f53a2ce893b2c7884ef94471f170839170a4eba0



