La suposición que falló
CVE-2024-26855 afecta a ice_bridge_setlink(), en el controlador de red ice de Intel. La función busca en un mensaje netlink el atributo de puente IFLA_AF_SPEC. Su búsqueda, nlmsg_find_attr(), puede devolver NULL cuando ese atributo no está presente. La ruta vulnerable pasaba el resultado a la iteración de atributos anidados sin comprobarlo antes.
La pregunta clave en la revisión es el contrato entre dos operaciones: ¿la búsqueda promete un objeto o devuelve un resultado opcional? Que un mensaje llegue al manejador no garantiza que estén presentes todos los atributos que el código posterior espera.
Validar el resultado antes de usarlo
La corrección aceptada comprueba br_spec inmediatamente después de la búsqueda y devuelve -EINVAL cuando falta. Así se detiene el valor no válido antes de la iteración anidada. El fragmento siguiente muestra esa comprobación; no es un reproductor independiente.
Colocar la comprobación en el punto de transición hace visible la suposición para el siguiente lector. El código establece ahora la condición que necesita la operación siguiente.
if (!br_spec)
return -EINVAL;Qué comprobar en su propio analizador
Siga cada búsqueda opcional hasta su primer uso. Examine los campos ausentes, las colecciones vacías y las entradas malformadas por separado de la ruta normal. Compruebe si una función auxiliar informa del fallo mediante NULL, un valor de error o un estado aparte. Después, confirme que todos los llamadores respetan ese contrato.
Una prueba de regresión útil ejercita la ruta del atributo ausente y verifica el error esperado. Una prueba que solo contiene un mensaje completo puede pasar y dejar intacta la suposición original.
La lección práctica para un equipo de producto
Se trata de un defecto acotado, a nivel de código, con una corrección concreta. El patrón de revisión también importa en los analizadores de aplicaciones, los manejadores de protocolos y los cargadores de configuración: los datos opcionales deben seguir siéndolo hasta que se validen.
Para un sistema Linux instalado, consulte el registro CVE vigente y el aviso de paquetes de su distribución. Las correcciones retroportadas hacen que el estado del paquete sea más útil que una comparación superficial con la versión upstream. En su propio código, una revisión centrada puede rastrear estos contratos a través de los componentes que procesan entradas no fiables.
Fuentes
Registro de la vulnerabilidad
CVE-2024-26855¿Necesita que se compruebe esto en su propio producto?
Revisión de seguridad del código¿Quiere aprender a encontrar vulnerabilidades como esta por su cuenta?
Curso individual de revisión de código seguro