Cuando un proyecto informático tiene el tamaño de Facebook, se hace necesario contar con herramientas que agilicen, entre otras muchas cosas, el hallazgo de bugs en sus millones de líneas de códigos. Para ello, en cuanto a seguridad, la compañía presume de haber desarrollado Zoncolan, una herramienta de análisis estático que permite encontrar bugs en ramas individuales y otros que afectan a ramas que interactúan entre sí.
Lo que aporta frente a la revisión manual es, sobre todo, velocidad, pero también mucha ayuda automatizada que, además de notificar sobre bugs, también ofrece información en tiempo real sobre posibles problemas que pueden surgir si se introducen ciertos cambios en el código.
Una vez se hacen las propuestas de cambios, Zoncolan comienza a escanear todo el código, y avisará al programador que haya introducido las líneas o a ingenieros de seguridad. Según Pieter Hooimeijer, manager de ingeniería de seguridad en Facebook, el año pasado, Zoncolan localizó 1.500 problemas en el código.
Zoncolan puede sustituir a personas en la detección de problemas, pero las sigue necesitando para mejorar
En la web que Facebook ha lanzado sobre Zoncolan, la compañía afirma que como cualquier sistema de este tipo (refiriéndose al análisis estático), Zoncolan no puede encontrar todos los problemas, pero sí **permite encontrar algunas clases de problemas (y prevenir futuros) que se pueden solucionar de una vez y retroactivamente.
El problema de Zoncolan, como todas las herramientas de su tipo, es que es muy eficaz para encontrar bugs, pero de momento no capaz aprender de forma autónoma a saber qué es un bug, sino que tienen que ser los ingenieros los que establezcan reglas que indiquen los factores que pueden ser problemáticos. Aunque en el futuro probablemente esto cambie, Zoncolan puede escanear todo el código en tan solo 30 minutos, por lo que lo que ayuda en su forma actual ya es de gran valor.
Facebook explica así cómo Zoncolan ayuda a escalar el trabajo y crear reglas:
- Un ingeniero de seguridad puede verificar los hallazgos sin tener que pasar horas incalculables revisando código manualmente.
- Podemos utilizar una regla codificada para evitar que en el futuro se repita el mismo problema. Zoncolan funciona con miles de cambios de código por día antes de que el código se envíe a producción, y nos alerta de los problemas. Nuestro repertorio de reglas ha crecido con el tiempo, y podemos agregarlo o perfeccionarlo según sea necesario.
- Las reglas por sí mismas sirven como documentación de los problemas de las clases. Una vez disponible como regla de Zoncolan, es más fácil para los ingenieros de seguridad examinar los matices de la regla en sí y los problemas que hemos encontrado como resultado. Este proceso ayuda a educar a los ingenieros sobre lo que deben buscar en el futuro. También puede informar las decisiones para construir mejores bibliotecas y marcos de trabajo, para eliminar clases de problemas por completo.
La compañía afirma que Zoncolan utiliza una técnica llamada "interpretación abstracta" para seguir las entradas controladlas por el usuario en la base del código. Analizando el código, es capaz de construir estructuras representando por una parte las funciones del código, con un gráfico de control de flujo, y por otra cómo interactúan, en un gráfico de llamadas. Zoncolan crea después un resumen del comportamiento de cada función, y registra solo propiedades relevantes para flujos de información potencialmente peligrosos.
La ejecución abstracta sigue todas las rutas del control, y analiza las ramas del código (como un "if"), individualmente y luego uniendo los resultados, de forma que se evalúan todos los caminos posibles a la vez. Facebook afirma estar trabajando para hacer proporcionar las herramientas de Zoncolan como código abierto para que otras compañías y desarrolladores puedan utilizarlas en sus productos.
Vía | Wired
Ver 6 comentarios