15 enero 2009

Esta semana se ha celebrado en Washington D.C. una convención de seguridad que reuniría a expertos en seguridad informática de todo el mundo, con el instituto SANS y el MITRE como máximos exponentes, para elaborar un TOP que constataría los 25 errores de programación más peligrosos.

En el documento, que podéis encontrar aquí, se detallan las 25 categorías de vulnerabilidades, ofreciendo tanto la descripción como un conjunto de medidas para solventarlas y educar a los programadores para que no las cometan. Cuanto antes se conozcan los problemas, menos dolores de cabeza darán luego las vulnerabilidades y como no, el tener que estar sacando parches cada poco tiempo.

Al ser un documento muy educativo y detallado, os podéis imaginar su extensión (ronda las 40 páginas). Recomendamos su lectura encarecidamente, pero aún así, os ofrecemos un resumen de los puntos "ganadores" que son tratados en el TOP, englobados en 3 categorías:

  • Categoría sobre la interacción insegura entre componentes
En esta categoría encontramos, en otras palabras, los típicos errores por una incorrecta validación de los parámetros que maneja la aplicación, y que tanto han dado que hablar, sin ir más lejos, en nuestro blog. Aquí podemos encontrar técnicas de ataque como son inyecciones SQL, Cross-Site Scripting, Cross-Site Request Forgery o la obtención de información mediante los errores que arroja la aplicación, y que en múltiples ocasiones, nos ofrecen datos sensibles y muy útiles para encontrar puntos de entrada.

Como contramedidas, es más que obvio: validar todos y cada uno de los datos de entrada, más preferiblemente basándonos en listas blancas, no confiar en validaciones en la parte cliente, utilizar procedimientos almacenados para el caso de operaciones a bases de datos, etc.

  • Categoría sobre la gestión incorrecta de los recursos
Aquí nos encontramos errores que se dan tanto en la creación y la utilización como liberación de los recursos del sistema. En ella nos encontramos las vulnerabilidades que pueden llegar a ocasionar una denegación del servicio ofrecido o una ejecución de código por desbordamiento de búfer. También se encuentra lo relacionado con ficheros importantes del sistema que en ningún caso deben ser accesibles por un usuario cualquiera (Vulnerabilidades de "Path Traversal"), así como la información que deposita la aplicación remotamente en clientes (ya sea mediante cookies u otro tipo de ficheros de registro).

En este caso, para evitar tales vulnerabilidades, se recomienda siempre gestionar de manera adecuada la memoria que utiliza la aplicación, inicializar y definir correctamente todas las variables y rebajar al mínimo los permisos necesarios por el software para que, en caso de ataque, el usuario no obtenga demasiados privilegios en el sistema afectado.

  • Categoría relacionada con técnicas de protección que suelen ser infravaloradas
Los puntos que se engloban en esta categoría son, entre otros, los controles de acceso no adecuados derivando en un proceso de autorización insuficiente en la aplicación, carencias en los algoritmos de cifrado utilizados y predicción de valores que se suponían ser aleatorios, así como por ejemplo el incluir credenciales válidas en el propio código fuente (hay veces que un click botón derecho -> Ver Código Fuente nos puede deparar tantísimas sorpresas...).

Según se informa en el anuncio, todos los puntos de este TOP se irán actualizando y completando con más información, pero no deja de ser un documento muy completo a tener en cuenta y como exigencias a un equipo de desarrollo, ya sea propio o antes de llevar a su contratación.

[+] TOP25 en SANS y en MITRE
[+] Documento en PDF aquí y aquí.