En busca del Santro Grial de la informática: el software sin bugs

  • ¿Es posible crear un programa informático que no falle? Aunque sea una tarea teóricamente imposible las técnicas de detección y reparación de fallos continúan avanzando para hacer más llevaderos esos problemas.
Lektu / Microsiervos

A menudo la gente se indigna porque el software contenga fallos (también conocidos como bugs). Parece que debería ser posible depurar un programa hasta que éste fuese perfecto.

La realidad es bien distinta. En un artículo publicado en 1986 en la prestigiosa revista IEEE Transactions on Software Engineering, se presentó la conclusión de que, por cada millón de líneas de código que se desarrollan, existen unos 1.800 errores que no se detectan. El mantenimiento y desarrollo posterior del programa repararán unos doscientos errores anuales, pero introducirán una cantidad equivalente, con lo cual el total apenas varía durante la vida útil del programa.

Para luchar contra este problema se han desarrollado multitud de herramientas, tanto teóricas (verificación formal, como la verificación formal, como prácticas (lenguajes de programación como SPARK o sistemas de detección automática de errores).

Éstos últimos fueron las estrellas de la conferencia de seguridad Black Hat que se celebró esta semana en Las Vegas. El objetivo: hacer más seguro el software y detectar los fallos más peligrosos.

Una de las técnicas más recientes en el arsenal del cazador de bugs es el llamado fuzzing, consistente en ejecutar el programa que se quiere estudiar, dándole datos de entrada modificados al azar y observando cuáles de ellos lo hacen fallar. Esto arroja pistas sobre los errores existentes y sus posibles causas.

Charlie Miller, de la firma Independent Security Evaluators expuso en una charla un enfoque más intensivo de esta técnica, llamado fuzzing sistemático, mediante el cual se estudian cientos de miles de fallos en busca de patrones que ayuden a predecir la causa de los mismos.

Asimismo se habló de una plataforma denominada BitBlaze integrada por una serie de herramientas que pueden trazar el flujo de información en un programa, ayudando a analizar los errores encontrados con la aplicación del fuzzing sistemático.

Miller ha aplicado BitBlaze al análisis de errores en aplicaciones muy populares como Adobe Reader y Open Office. Los bugs que antes requerían una semana de estudio, dice, ahora a menudo puede analizarlos de forma instantánea; los más recalcitrantes pueden llevarle un día.

Si el fuzzing sistemático funciona con todo tipo de programas, revolucionará la forma en que se depura el software. No obstante eso solo traslada el esfuerzo del análisis de los errores a su resolución. Y en cualquier caso, sigue siendo necesaria la experiencia de un ser humano para determinar la gravedad de un fallo y sus posibles implicaciones de seguridad.

Mostrar comentarios