Cuando una organización pone una aplicación Web, invita al mundo a enviar llamadas HTTP (HTTP Requests). Los ataques dentro de estas llamadas navegan a través de los cortafuegos (firewalls), filtros, endurecimiento de plataforma, y sistemas de detección de intrusos sin aviso alguno porque están dentro de llamadas HTTP legales. También, sitios Web “seguros” que utilizan SSL aceptan las llamadas recibidas a través del túnel seguro sin escrutinio alguno. Esto quiere decir que su código de aplicación Web es parte de su perímetro de seguridad. Mientras el número, tamaño y complejidad de su aplicación Web se incremente, así mismo será su exposición del perímetro.

Los puntos de seguridad explicados aquí no son nuevos. En realidad, son conocidos desde hace décadas. Sin embargo, por una variedad de razones, la mayoría de proyectos de desarrollo todavía cometen estas equivocaciones y ponen en peligro no solamente la seguridad de sus clientes, sino también la seguridad de Internet. No existe ninguna solución única para resolver estos problemas. La tecnología de protección y asesoramiento actual está mejorando, pero solamente puede lidiar con un subconjunto limitado de los puntos en el mejor de los casos. Para atender los puntos descritos en este documento, las organizaciones tendrán que cambiar su cultura de desarrollo, entrenar a los desarrolladores, actualizar sus procesos de desarrollo de software y usar la tecnología donde sea apropiado.

El código existente para estas vulnerabilidades necesita ser revisado inmediatamente ya que estos fallos están siendo el blanco actual de los atacantes. Los proyectos de desarrollo deben tratar estas vulnerabilidades en sus documentos de requerimiento y diseño, y creación, y probar sus aplicaciones para asegurar que no hayan sido introducidas. Los administradores de proyectos deben incluir tiempo y presupuesto para las actividades de seguridad de aplicaciones, incluyendo entrenamiento para desarrolladores, política de seguridad para desarrollo de aplicaciones, desarrollo y diseño de mecanismos de seguridad, pruebas de penetración y revisión de código fuente.

1. Entrada no validada
La información de llamadas Web no es validada antes de ser usadas por la aplicación Web. Los agresores pueden usar estas fallas para atacar los componentes internos a través de la aplicación Web.

2. Control de Acceso Interrumpido
Las restricciones de aquello que tienen permitido hacer los usuarios autentificados no se cumplen correctamente. Los agresores pueden explotar estas fallas para acceder a otras cuentas de usuarios, ver archivos sensitivos o usar funciones no autorizadas.

3. Administración de Autentificación y Sesión Interrumpida
Las credenciales de la cuenta y los tokens de sesiones no están propiamente protegidos. Los agresores que pueden comprometer las contraseñas, claves, cookies de sesiones u otro token, pueden vencer las restricciones de autenticación y asumir la identidad de otros usuarios.

4. Fallos de Cross Site Scripting (XSS)
La aplicación Web puede ser usada como un mecanismo para transportar un ataque al navegador del usuario final. Un ataque exitoso puede comprometer el token de sesión del usuario final, atacar la maquina local o enmascarar contenido para engañar al usuario.

5. Desbordamiento del Búffer
Los componentes de aplicaciones Web en ciertos lenguajes que no validan adecuadamente las entradas de datos pueden ser derribados y, en algunos casos, usados para tomar control de un proceso. Estos componentes pueden incluir CGI, bibliotecas, rutinas y componentes del servidor de aplicación Web.

6. Fallos de Inyección
La aplicación Web puede pasar parámetros cuando accede a sistemas externos o al sistema operativo local. Si un agresor puede incrustar comandos maliciosos en estos parámetros, el sistema externo puede ejecutar estos comandos por parte de la aplicación Web.

7. Manejo Inadecuado de Errores
Condiciones de error que ocurren durante la operación normal que no son manejadas adecuadamente. Si un agresor puede causar que ocurran errores que la aplicación Web no maneja, éste puede obtener información detallada del sistema, denegar servicios, causar que mecanismos de seguridad fallen o tumbar el servidor.

8. Almacenamiento Inseguro
Las aplicaciones Web frecuentemente utilizan funciones de criptografía para proteger información y credenciales. Estas funciones y el código que integran a ellas han sido difíciles de codificar adecuadamente, lo cual frecuentemente redunda en una protección débil.

9. Denegación de Servicio
Los agresores pueden consumir los recursos de la aplicación Web al punto de que otros usuarios legítimos no puedan ya acceder o usar la aplicación. Los agresores también pueden dejar a los usuarios fuera de sus cuentas y hasta causar que falle una aplicación entera.

10. Administración de Configuración Insegura
Tener una configuración de servidor estándar es crítico para asegurar una aplicación Web. Estos servidores tienen muchas opciones de configuración que afectan la seguridad y no son seguro desde la instalación original del software.