Vulnerabilidad en kernel de Linux (CVE-2024-43880)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
21/08/2024
Última modificación:
03/11/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: mlxsw: espectro_acl_erp: corrige la advertencia de anidamiento de objetos. Las ACL en Spectrum-2 y los ASIC más nuevos pueden residir en el TCAM algorítmico (A-TCAM) o en el TCAM de circuito ordinario (C-TCAM). El primero puede contener más ACL (es decir, filtros tc), pero el número de máscaras en cada región (es decir, cadena tc) es limitado. Para mitigar los efectos de la limitación anterior, el dispositivo permite que los filtros compartan una única máscara si sus máscaras solo difieren en hasta 8 bits consecutivos. Por ejemplo, dst_ip/25 se puede representar usando dst_ip/24 con un delta de 1 bit. C-TCAM no tiene un límite en la cantidad de máscaras que se utilizan (y por lo tanto no admite la agregación de máscaras), pero puede contener una cantidad limitada de filtros. El controlador utiliza la librería "objagg" para realizar la agregación de máscaras pasándole objetos que constan de la máscara del filtro y si el filtro se insertará en la A-TCAM o en la C-TCAM, ya que los filtros en diferentes TCAM no pueden compartir una máscara. El conjunto de objetos creados depende del orden de inserción de los filtros y no es necesariamente óptimo. Por lo tanto, el controlador solicitará periódicamente a la librería que calcule un conjunto más óptimo ("sugerencias") observando todos los objetos existentes. Cuando la librería pregunta al controlador si se pueden agregar dos objetos, el controlador solo compara las máscaras proporcionadas e ignora la indicación A-TCAM/C-TCAM. Esto es lo correcto ya que el objetivo es mover tantos filtros como sea posible a la A-TCAM. El driver también prohíbe agregar dos máscaras idénticas, ya que esto solo puede suceder si una se colocó intencionalmente en la C-TCAM para evitar un conflicto en la A-TCAM. Lo anterior puede dar como resultado el siguiente conjunto de sugerencias: H1: {máscara X, A-TCAM} -> H2: {máscara Y, A-TCAM} // X es Y + delta H3: {máscara Y, C-TCAM} -> H4: {máscara Z, A-TCAM} // Y es Z + delta Después de obtener las sugerencias de la librería, el controlador comenzará a migrar filtros de una región a otra mientras consulta las sugerencias calculadas e indica al dispositivo que realice una búsqueda. en ambas regiones durante la transición. Suponiendo que se está migrando un filtro con máscara X a la A-TCAM en la nueva región, la búsqueda de sugerencias devolverá H1. Dado que H2 es el padre de H1, la librería intentará encontrar el objeto asociado con él y crearlo si es necesario, en cuyo caso se realizará otra búsqueda de sugerencias (recursiva). Esta búsqueda de sugerencias para {máscara Y, A-TCAM} devolverá H2 o H3 ya que el controlador pasa a la librería una función de comparación de objetos que ignora la indicación A-TCAM/C-TCAM. En última instancia, esto puede conducir a objetos anidados que no son compatibles con la librería [1]. Para solucionarlo, elimine la función de comparación de objetos tanto del controlador como de la librería, ya que el controlador era el único usuario. De esa forma, la búsqueda solo arrojará coincidencias exactas. No tengo un reproductor confiable que pueda reproducir el problema de manera oportuna, pero antes de solucionarlo, el problema se reproducía en varios minutos y con la solución no se reproduce en más de una hora. Tenga en cuenta que la utilidad actual de las sugerencias es limitada porque incluyen la indicación C-TCAM y representan una agregación que en realidad no puede ocurrir. Esto se abordará en net-next. [1] ADVERTENCIA: CPU: 0 PID: 153 en lib/objagg.c:170 objagg_obj_parent_assign+0xb5/0xd0 Módulos vinculados en: CPU: 0 PID: 153 Comm: kworker/0:18 No contaminado 6.9.0-rc6-custom -g70fbc2c1c38b #42 Nombre del hardware: Mellanox Technologies Ltd. MSN3700C/VMOD0008, BIOS 5.11 10/10/2018 Cola de trabajo: mlxsw_core mlxsw_sp_acl_tcam_vregion_rehash_work RIP: 0010:objagg_obj_parent_assign+0xb5/0xd0 [...] Seguimiento de llamadas: < TAREA> ---truncado----
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.1 (incluyendo) | 5.4.282 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (incluyendo) | 5.10.224 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (incluyendo) | 5.15.165 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (incluyendo) | 6.1.103 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (incluyendo) | 6.6.44 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (incluyendo) | 6.10.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/0e59c2d22853266704e127915653598f7f104037
- https://git.kernel.org/stable/c/25c6fd9648ad05da493a5d30881896a78a08b624
- https://git.kernel.org/stable/c/36a9996e020dd5aa325e0ecc55eb2328288ea6bb
- https://git.kernel.org/stable/c/4dc09f6f260db3c4565a4ec52ba369393598f2fb
- https://git.kernel.org/stable/c/97d833ceb27dc19f8777d63f90be4a27b5daeedf
- https://git.kernel.org/stable/c/9a5261a984bba4f583d966c550fa72c33ff3714e
- https://git.kernel.org/stable/c/fb5d4fc578e655d113f09565f6f047e15f7ab578
- https://lists.debian.org/debian-lts-announce/2024/10/msg00003.html
- https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html



