| Artículos | 01 OCT 2009

¿Están seguras sus aplicaciones web?

Tags: Histórico
Herramientas automatizadas de escaneo de vulnerabilidades web
Gonzalo Álvarez.
"Las aplicaciones web cobran cada día mayor importancia en el ámbito empresarial. ¿Cómo saber si son seguras? ¿Qué tipos de vulnerabilidades presentan? ¿Podrían robarse gracias a ellas los datos del backend? En este artículo se repasan las herramientas automatizadas de análisis de la seguridad de aplicaciones web que pueden ayudar a responder a estos interrogantes.

Cuando le duele algo debería visitar al especialista para que le cure en vez de automedicarse. Para saber si una aplicación web tiene algún problema, también debería acudir al especialista y contratar una auditoría de seguridad. Sin embargo, las auditorías de seguridad, también llamadas a veces tests de intrusión o hacking ético, tienen el inconveniente de costar muchísimo dinero y tardar mucho tiempo en su realización. Por otro lado, la validez de sus resultados pierde vigencia con rapidez: una aplicación diagnosticada como segura hoy puede dejar de serlo dentro de 10 días o de 10 semanas, ya que van apareciendo nuevas vulnerabilidades, se va modificando la plataforma, se añaden funcionalidades a las ya existentes, etc. En definitiva, las auditorías de seguridad son costosas, lentas y sus resultados rápidamente quedan obsoletos. ¿Debe renunciar entonces a saber si sus aplicaciones web son seguras? No, la respuesta a sus problemas de seguridad puede residir en el uso de herramientas automatizadas de detección de vulnerabilidades web.

¿Qué es la seguridad web?
El mundo de la seguridad de las aplicaciones web es muy distinto a otros ámbitos de la gestión de la seguridad de la información. En general, tiende a creerse que para conseguir un sitio web seguro basta con la implantación de controles de seguridad tradicionales, tales como un buen cortafuegos, el cifrado del transporte de datos mediante SSL, el bastionado de los servidores o la constante instalación de actualizaciones y parches de seguridad. Nada más lejos de la realidad.
Un sitio web con todos los controles de seguridad anteriores instalados y correctamente configurados puede seguir siendo vulnerable a pesar de todo. La principal fuente de vulnerabilidades radica en la propia aplicación web, es decir, en las páginas dinámicas escritas en Java, Perl, Python, Ruby, PHP, ASP/VBScript, C#, VB.Net, ColdFusion o el lenguaje que sea. Estas páginas suelen haber sido creadas por programadores que no han recibido formación en seguridad, por lo que ignoran las implicaciones de seguridad del modo como escriben el código. Al delegar toda la seguridad en el administrador y poca o ninguna en el desarrollador, se consiguen plataformas robustas, pero con aplicaciones vulnerables. En efecto, la mayor puerta de entrada de ataques web radica precisamente en las vulnerabilidades de la aplicación, las cuales dan acceso a la plataforma y a los codiciados datos del backend.
Por consiguiente, las herramientas de evaluación de la seguridad web deben ser capaces de detectar estas vulnerabilidades introducidas por los diseñadores y arquitectos de aplicaciones, así como por los programadores.

¿Qué tipos de vulnerabilidades web existen?
En términos muy sencillos, puede decirse que toda vulnerabilidad web pertenece a una de las dos siguientes categorías: o bien se origina como consecuencia de un fallo de programación o bug; o bien se produce como resultado de un fallo de diseño o flaw. Al primer tipo de vulnerabilidades también suele denominárselas técnicas o de implantación, mientras que al segundo tipo también se las conoce a veces como lógicas o funcionales.
El desbordamiento de búfer (buffer overflow) sería el ejemplo arquetípico de un fallo de programación o implementación (bug): el programador ha olvidado reservar memoria suficiente al copiar datos en un búfer y éste se desborda con consecuencias a veces desastrosas. La falta de validación de los datos de entrada da origen a la mayor parte de los bugs existentes en aplicaciones web, los cuales abren la puerta a su vez a ataques tan conocidos como los de inyección de SQL o de XSS (Cross-Site Scripting).
Los fallos de diseño o lógicos (flaw) son más sutiles. Por ejemplo, el diseñador de la aplicación ha decidido almacenar las contraseñas en claro en la base de datos, en lugar de conservar su hash; o no se comprueba adecuadamente la autorización antes de ejecutar una cierta operación.
En la Tabla Tipos de vulnerabilidades web se ofrece un listado en absoluto exhaustivo de vulnerabilidades bajo cada una de sendas categorías. Las vulnerabilidades técnicas comprenden aquellas causadas por una defectuosa validación de los datos de entrada procedentes del cliente, una deficiente gestión de errores o una pobre configuración del servidor, por lo que resultan relativamente sencillas de encontrar y explotar para herramientas automatizadas. Las vulnerabilidades lógicas, en cambio, comprenden errores permitidos por diseño, pero no previstos por el diseñador o no considerados como un riesgo para la información. Se trata de errores que saltan a la vista, sólo identificados por humanos, por lo que requieren normalmente la intervención de auditores expertos para poder ser localizadas y para evaluar su alcance.

¿Qué áreas de seguridad deben considerarse?
Cuando se realiza una auditoría de seguridad de la información debe seguirse una metodología para asegurar que los resultados sean consistentes y reproducibles; que las pruebas se han realizado a conciencia, sin olvidarse de ningún detalle; que las pruebas incluyen todos los canales, vectores de ataque y vías de entrada; que los resultados son cuantificables; que los resultados solamente contienen hechos derivados de las pruebas mismas.
Aunque existe una gran dispersión con respecto a las metodologías usadas en las auditorías de seguridad de la información en general, en el contexto particular de la seguridad web destaca la metodología desarrollada en el seno del Proyecto Abierto para la Seguridad de Aplicaciones Web (OWASP), disponible en www.owasp.org/index.php/Category:OWASP_Testing_Project. Al margen de la metodología concreta utilizada, lo cierto es que todas comparten una serie de áreas de seguridad que no pueden quedar fuera del estudio o pruebas de seguridad. Estas áreas se listan a continuación.
Gestión de configuración: Comprende las cuestiones relacionadas con la configuración de la plataforma de explotación, tales como el bastionado de todos los servidores implicados, la configuración segura de los mismos, la gestión de las actualizaciones de seguridad, la gestión de actualizaciones de software, la configuración de los interfaces de administración remota, la robustez criptográfica de SSL, etc.
Control de acceso: Controlar el acceso a la aplicación requiere decidir cuál es la identidad del usuario, asignarle las acciones que le están permitidas sobre la información y registrar su actividad. El control de acceso comprende tres áreas fundamentales: 1) autenticación: permite determinar la identidad del usuario; 2) autorización: permite determinar a qué recursos tiene acceso el usuario y qué tipo de acciones puede efectuar; 3) auditoría y registro de sucesos: permite saber qué acciones están ejecutando los usuarios y qué está pasando en el sistema en todo momento.
Gestión de

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información