jueves, 15 de mayo de 2008

Cuidado con lo que dicen las herramientas


Creo que a estas alturas, todo el mundo se ha enterado del fallo gordo de OpenSSL en Debian (y derivados). Casi nada: el generador de números aleatorios es predecible. Cualquier herramienta que utilizara ese generador para securizar los datos que transmite podría ser vulnerable, al ser posible, offline, descifrar ese tráfico. Cualquier servidor SSH que use claves generadas por el sistema vulnerable podría ser objeto de man-in-the-middle, y el usuario ni se enteraría.

El problema vino al corregir un fallo detectado al usar dos herramientas de análisis dinámico (Valgrind y Purify), que indicaban que se estaba usando memoria no inicializada. Esto sería un defecto en otras aplicaciones, pero en este caso, se estaba usando para inicializar la semilla con que se genera el número aleatorio necesario para crear las claves criptográficas. Para corregir el problema, se eliminó algo más de código del necesario, debido a que no se sabía muy bien qué hacía, con el resultado de que ese número aleatorio tiene muy poca entropía.

A lo que voy: el problema viene por una costumbre muy común en los programadores, y muy mala, que es "comentar y a ver qué pasa", cuando el código no se comprende. ¡Cuidado con lo que dice una herramienta!. El bug original era, en este caso, un falso positivo de las herramientas (yo lo considero así) y hay que discernirlo correctamente. Eso sí, creo que el que sabe hacerlo siempre es un programador de bandera (todos podemos cometer un fallo, ¿no?).

Me ha gustado mucho el chiste que se ha puesto en la página de Metasploit:


Más enlaces:
el fallo reportado
sitio del descubridor
exploit posible

Actualización: preguntas frecuentes

No hay comentarios: