http://jarlsberg.appspot.com

 
Alberto Partida Rodríguez
Especialista en Seguridad TI
Securityandrisk.blogspot.com
apartidar@gmail.com

El sitio que recomiendo esta vez es un proyecto de Google, valioso para aquellos desarrolladores de aplicaciones web que quieran mejorar la seguridad de su código. Su nombre, jarlsberg, es idéntico a una clase de queso con muchos agujeros. Una imagen muy apropiada para muchas de las actuales aplicaciones web presentes en Internet.
Mandeep Khera, de Cenzic, marca que ofrece Hailstorm, un escáner de aplicaciones web, estimó en 2009 que existían entre 100 y 150 millones de aplicaciones web en Internet. De ellas, sólo el 10% ha pasado algún tipo de prueba de seguridad.
Bruce Leban, Mugdha Bendre y Parisa Tabriz son los creadores de jarlsberg, una aplicación web escrita en python y, dada su finalidad didáctica, con múltiples agujeros de seguridad. Es un verdadero curso de concienciación de seguridad para desarrolladores y, cómo no, para auditores de aplicaciones web.
Jarlsberg tiene una estructura muy práctica: cada una de sus 15 lecciones comienza con una explicación de la vulnerabilidad que trata, sugiere cómo encontrarla, explotarla y, finalmente, propone cómo se puede prevenir. A su vez, menciona el uso de herramientas tan necesarias como los “proxies” HTTP “Burp” o “WebScarab”, o tan básicas y potentes como “curl”, función en línea de comando, útil entre otras muchas cosas, para descargar páginas web.
El abanico de vulnerabilidades que trata jarlsberg es muy amplio. Destaco tres de ellas:
• Ejecución de código interpretado (“cross-site scripting”), sobre todo en javascript, utilizando la subida de ficheros o de datos de usuario al servidor o manipulando la URL de la aplicación. La principal recomendación no es novedosa: es necesario filtrar todos los datos procedentes del navegador del usuario. Así, no podrán ser ni (mal)-interpretados ni ejecutados. El uso de dominios distintos para albergar los datos de usuario es otra buena idea. El código malicioso puede incluso estar insertado dentro de atributos HTML. Para evitar esto, se recomienda el uso de limpiadores de texto de entrada (“text escapers”). Los autores de jarlsberg siguen la filosofía de seguridad de ‘defensa en profundidad,’ de modo que no sólo sugieren filtrar el flujo de entrada de datos, sino que también hay que controlar el flujo de salida de datos que la aplicación ofrece al usuario. De esta forma, si una de las dos medidas falla, la aplicación web se mantendrá segura.
• Manipulación del estado de la sesión del cliente. Es posible elevar los privilegios del usuario modificando URLs y “cookies” si no se valida la petición de usuario en el servidor, en especial justo en el momento de su recepción.
• Ejecución de una acción del usuario sin su conocimiento (“cross-site request forgery”). Las recomendaciones sobre esta vulnerabilidad pasan por el uso del método POST, versus el método GET, en HTTP y por la introducción de sellos de tiempo (“timestamps”) en las “cookies” de usuario.
El resto de vulnerabilidades abarcadas son ya antiguas conocidas, como el recorrido de directorios (“path transversal”), la inyección de comandos SQL en la base de datos, el desbordamiento de zonas de memoria o la configuración insegura del servidor o de la aplicación.
Para completar este tema tan complejo y relevante de la seguridad en aplicaciones web, recomiendo la lectura de la última versión del documento de OWASP, publicado el 19 de abril de este 2010, sobre los 10 riesgos más importantes de las aplicaciones web y cómo mitigarlos. El pdf está enlazado desde el sitio de OWASP: http://www.owasp.org/index.php/ Category:OWASP_Top_Ten_Project

* Corrección sobre el artículo anterior: Los creadores de social-engineer.org son Chris Hadnagy, Mari Ahaoni, Paul Hand y Jim O’Gorman.


Documento en PDF
 

<volver