Aplicaciones Web Seguras. ¿Mito o Realidad?

El mito de la seguridad en aplicaciones Web

La seguridad en las aplicaciones Web de las organizaciones es, hoy en día, una prioridad importante. Y es que éstas aplicaciones contienen y manejan información invaluable para la operación y el comercio de las empresas, por lo mismo, la seguridad se vuelve imprescindible, ya que muchas de estas aplicaciones manejan números de tarjetas de crédito, listas de clientes de las empresas, inventarios físicos, documentos de propiedad intelectual, etcétera; bienes por los que un hacker estaría dispuesto a hacer lo posible para obtenerlos.
La mayor parte de los presupuestos de seguridad en las compañías están dedicados a la infraestructura de la red y de acuerdo con estudios realizados, más del 60% de los ataques en seguridad de la información no están dirigidos ahí, sino a la capa de aplicaciones Web; otro estudio demuestra que más del 70% de estas aplicaciones, son vulnerables a ataques informáticos y para el 2010 el 80% de las organizaciones experimentará un incidente de seguridad.

A pesar de esto y de las inversiones en materia de seguridad, seguimos leyendo noticias que sitios de empresas, medios de comunicación, entidades gubernamentales, organizaciones políticas y civiles, entre otras, son presas de ataques a la seguridad de sus sitios web.

Las organizaciones invierten recursos, principalmente, en la seguridad informática, en seguridad perimetral con la instalación de Firewalls, en Sistemas de Detección de Intrusos (IDP), Sistemas de Prevención de Intrusiones (IPS) y Firewalls de Aplicaciones, todo apoyado en Sistemas de Administración de Eventos e Incidentes (SIEM). Todos estos controles de seguridad bloquean ataques muy bien identificados, sin embargo, todos ellos descuidan la seguridad en las aplicaciones y la información que en ella se contienen, de tal manera que la seguridad se deja única y exclusivamente a la programación realizada. Sin embargo aquellas fallas de seguridad no contempladas o conocidas, quedan vulnerables a usuarios malintencionados, empleados enojados o en el peor de los casos, a un hacker.

Los ataques a las aplicaciones no siempre son malintencionados, un usuario por error puede lograr tener acceso a información a segmentos del aplicativo que no estaban destinados para su perfil de usuario. Adicional a esto, ha habido un incremento de sitios que proporcionan herramientas para la exploración y explotación de vulnerabilidades en sitios Web, lo que ha permitido el crecimiento de la población de usuarios malintencionados. Una de las mejores prácticas para mantener seguras las aplicaciones es “nunca asumir que la información ingresada por el usuario será confiable”, esto evita que la aplicación acepte información o datos que no están permitidos y que podrían convertirse en datos potencialmente peligrosos para la seguridad de la misma.

La realidad de la seguridad
Tipos de vulnerabilidades
Según la organización Web Application
Security Consortium (WASC), las aplicaciones son vulnerables a diferentes tipos y categorías de ataques y los clasifica en 6 grandes rubros:
• Autenticación, el objetivo de estos ataques es la validación de la identidad de los usuarios con la intención de engañar al proceso de autenticación del sitio web.
• Autorización, este tipo de ataques buscan obtener acceso a recursos o información a los que el usuario no tiene derecho o permiso de utilización.
• Ataques en la parte cliente, resultan de la relación de confianza que existe por parte del usuario final en el sitio Web, en esta relación el usuario confía que la información proporcionada por el sitio Web será verdadera y espera no recibir ningún tipo de ataque por parte de la aplicación.
• Ejecución de comandos, en esta categoría caen las vulnerabilidades que permiten al
usuario ejecutar comandos remotos en el sitio.
• Revelación de información como objetivo obtener información específica del sitio, tales como el sistema operativo del servidor, la marca y versión del servidor de aplicaciones web, etcétera. Y con esta información poder utilizar o explotar vulnerabilidades conocidas de dichos productos.
• Ataques lógicos, son aquellos que burlan la lógica programada de las aplicaciones y perjudican la aplicación, los usuarios o la información contenida.

Estas grandes categorías nos permiten tener una idea del universo de posibilidades para un ataque a un sitio Web. En este artículo nos enfocaremos en los que se ubican como los primeros lugares, según la clasificación hecha por el Open Web Application Security Project (OWASP), una de las organizaciones independientes más importantes en Seguridad de la Información:
1. Cross Site Scripting se refiere a aquellos ataques que permiten al hacker obtener información confidencial del usuario (como cuentas y contraseñas), llevar a cabo ataques de phishing y hasta llegar a tomar el control del navegador del usuario final. Está es la vulnerabilidad más común y agresiva de las aplicaciones web; en las clasificaciones antes mencionadas pertenece a ataques en la parte del cliente y autenticación.

Esta vulnerabilidad es exitosa mediante la inserción de código HMTL o JavaScript en el navegador del usuario, usualmente estos ataques son encontrados en comunidades virtuales, foros de discusión, salas de chat y hasta en el mismo sitio web que se pretende afectar. Todas las plataformas son susceptibles a estos ataques. Lamentablemente, estas agresiones son dirigidas directamente al usuario final, por lo que la inserción de código en el navegador no puede ser controlada por nuestros sistemas de seguridad.
 
2. Inyección defectuosa, este tipo de vulnerabilidades tienen lugar cuando un usuario malicioso ejecuta comandos no previstos en la aplicación Web mediante el envío de datos especialmente diseñados para tal fin utilizando como interprete de estos comandos al sitio, estas instrucciones permiten al atacante leer, crear o borrar información. Algunos tipos de instrucciones que se inyectan en las aplicaciones son tipo SQL, LDAP, XML o comandos de sistema operativo.

En casos extremos, este tipo de ataques permiten al intruso tomar el control total del sistema, incluidas aplicaciones, datos, sistema operativo y hasta intrusión en los demás equipos en la red de la organización.

Todas las plataformas son susceptibles a cualquiera de estos tipos de ataque, ya sea C#, .Net, PHP, C, Perl, Ruby on Rails y hasta aplicaciones Java y lo peor de todo es que no importa que tan segura sea la configuración de red, si la aplicación no es segura, la información que contiene está en riesgo.

Tomar cartas en el asunto
Las aplicaciones deben ser protegidas contra cualquier problema de seguridad, es decir, los ataques a las mismas se deben de detectar y evitar desde su concepción, para ir delante de los hackers existen dos caminos: el fortalecimiento de los estándares de programación y las pruebas sobre aplicaciones.

Robustecer los estándares de seguridad programados en las aplicaciones permite evitar la recodificación, reduce los costos de mantenimiento y las situaciones críticas cuando algún evento de seguridad se presenta. En algunos casos la utilización de frameworks, permiten reducir la posibilidad de un ataque Cross-Scripting y para evitar situaciones de inyección de código SQL, es posible mediante la utilización de sentencias preparadas en aplicaciones que ayudan a mitigar este riesgo. Este tipo de acciones reduce la posibilidad de algún ataque a la aplicación, pero siempre una buena práctica de seguridad es la realización de pruebas para verificar y comprobar nuestras mejoras en el diseño y programación.

En la etapa de pruebas, de igual manera existen dos maneras de ser realizadas, manualmente o mediante una herramienta que automatice estas pruebas. La primera significa dedicar tiempo en la creación de los casos de prueba, instrucción y documentación del equipo de pruebas para conocer las vulnerabilidades existentes. Actualmente, con la mayor adopción de aplicaciones Web 2.0, las variables en la ecuación de seguridad de aplicaciones crece aún más.

La automatización de las pruebas reduce tiempos de realización de las pruebas y simplifica los casos, adicionalmente es importante contar con una herramienta que emule el comportamiento malicioso del hacker y contenga una base de datos actualizada con las fallas comunes que se conocen en el mundo de la Seguridad de la Información. La herramienta en el mercado que facilita estas actividades es Rational AppScan que, adicionalmente a las características antes mencionadas, contiene una base de conocimientos que permite sugerir correcciones y mejores prácticas a los errores y omisiones que se hayan encontrado al momento de la ejecución del proceso de revisión del sitio.
 
La prioridad es la seguridad
La seguridad y garantía de la información que reside en las aplicaciones Web no es un tema que se deje a la ligera, requiere de toda la atención ya que existe todo un ejército de personas que están dispuestas a tomarse el tiempo de encontrar en las fallas al sitio que escojan y de esa forma poner en riesgo a las empresas, independientemente de su tamaño. Tomar las medidas precautorias es garantía de que ni las organizaciones ni los usuarios sufrirán de algún tipo de pérdida económica, robo de identidad o desprestigio frente a clientes e inversionistas.

Referencias
[ webappsec.org/projects/threat/ ]
[ owasp.org/index.php/Top_10_2007 ]


Acerca del Autor
Germán Domínguez es Licenciado en Informática Administrativa de UNITEC con más de 13 años de experiencia en el desarrollo de aplicaciones de negocio y aplicaciones Web. Ahora pertenece al equipo de IT de IBM de México, especialista para la marca de software Rational, y puede ser contactado en
germand@mx1.ibm.com