Las vulnerabilidades de seguridad más comunes y relevantes en aplicaciones Web en los últimos años son:
•Cross-Site Scripting (XSS): la aplicación Web envía los datos proporcionados por el usuario al navegador Web sin realizar ninguna validación o codificación del contenido. Este ataque permite a un atacante ejecutar código (scripts) en el navegador de la víctima: robo de sesiones, modificación de los contenidos de la Web y su configuración.
• CSRF, Cross-Site Request Forgery: los ataques CSRF fuerzan al navegador de la víctima a enviar peticiones pre-autentificadas a una aplicación Web vulnerable. La petición obliga al navegador de la víctima a realizar acciones hostiles no deseadas en beneficio del atacante sobre una sesión previamente establecida. Los límites de este ataque están en el tipo de aplicación Web atacada.
• Inyección SQL: Ataques de inyección: los datos proporcionados por el usuario se envían a un intérprete como parte de un comando o consulta. El ejemplo más conocido es la inyección SQL en bases de datos. El atacante puede ejecutar código dañino y modificar datos a través del intérprete atacado: SQL, XPath, LDAP, etc.
• Referencias directas a objetos inseguras: una referencia directa a un objeto ocurre si el desarrollador expone un objeto interno de la implementación (fichero, directorio, registro de la BD, clave…) en forma de URL o de parámetro de un formulario. Un atacante puede manipular estas referencias para acceder a otros objetos sin autorización.
• Otros ataques de inyección, sobre XPath (el lenguaje de consulta de información en repositorios de XML) y LDAP (servicio de directorio)
• Publicación de información sensible. Filtrado de información y gestión incorrecta de errores: las aplicaciones Web pueden revelar información sobre su configuración, detalles internos de implementación o violar la privacidad de los datos, de forma no intencionada. El atacante emplea esta debilidad para obtener información sensible o realizar ataques más avanzados.
• Autentificación y gestión de sesiones: las credenciales de acceso y los tokens (o identificadores) de sesión no son protegidos adecuadamente. Un atacante puede comprometer claves, secretos e identificadores de autentificación y robar la identidad de otros usuarios.
• Almacenamiento criptográfico inseguro: la aplicación Web no utiliza funciones criptográficas adecuadamente para proteger los datos y las credenciales empleadas. Un atacante puede usar los datos no protegidos para robar la identidad de otros usuarios y realizar otros ataques, como fraude con tarjetas de crédito.
• Comunicaciones inseguras: la aplicación Web no cifra el tráfico de red correctamente cuando es necesario proteger datos y comunicaciones sensibles.
• Fallo al restringir el acceso a URLs: la aplicación Web sólo protege la funcionalidad sensible no mostrando enlaces o URLs a usuarios no autorizados. Un atacante puede usar esta debilidad para acceder directamente de forma no autorizada a esas URLs.
• HTTP Response Splitting
• Path traversal
Entre los criterios de evaluación de WAF (Web Application Firewall) más comunes se encuentran:
• Modo de operación: bridge, router, proxy inverso, plug-in del servidor Web, etc
• Gestión de SSL: terminador, capacidades de descifrado o no puede inspeccionarlo • Técnicas de bloqueo de tráfico
• Tipo de solución (appliance o software)
• Capacidades de reescritura de peticiones Web
• Mecanismos de alta disponibilidad y rendimiento de la solución
• Soporte de otros protocolos distintos a HTTP
• Soporte de métodos de HTTP y extensiones (como WebDav)
• Detección de ataques mediante firmas y técnicas de normalización
• Protección frente a ataques de fuerza bruta, cookies, sesiones, campos HTML ocultos, parámetros, etc
• Logging, notificación de alertas, informes, interfaz de gestión, , etc