Se pretende dar una introducción sobre qué es y como funcionan los firewalls para aplicaciones web o WAF.
¿Que es un Web Application Firewall o WAF?
La idea principal al desarrollar una aplicación web, es que, sea disponible desde cualquier lugar y que todo el mundo pueda acceder a ella. Este es el gran factor diferenciador respecto a las aplicaciones de escritorio.
Al ser empleadas por más usuarios, son más dispuestas a sufrir ataques, aunque la idea es construir aplicaciones tolerantes a fallos y sin vulnerabilidades, por diferentes razones (en las que no entraremos) no siempre pasa eso.
El WAF solo es una herramienta complementaria y no pretende sustituir las medidas de protección que el desarrollador tiene que llevar a cabo al programar una aplicación.
Se trata de un dispositivo físico que analiza el tráfico web (entre el servidor web y la WAN), los datos recibidos por parte del usuario y protege de diferentes ataques web como: SQL Injection, Cross Site Scripting, Remote and Local File Inclusion, , Buffer Overflows, Cookie Poisoning, etc. Este dispositivo, trata de proteger de los ataques dirigidos al servidor web que los IDS/IPS no nos pueden defender.
Los Pros y Contras de los Modelos de Seguridad
Dentro de los WAF respecto al Modelo de Seguridad se distinguen:
A) Modelo de Seguridad Positiva
Los WAF que siguen el modelo de seguridad positiva deniegan por defecto todas las transacciones y solamente acepta las que identifica como seguras o válidas. Para determinar si una transacción es segura, consulta una una serie de reglas que se definen previamente, ya sea, por el auto-aprendizaje de la aplicación o configuradas manualmente.
A simple vista, parece ser la solución idónea, pero si nuestra aplicación está sujeta a cambios en el diseño o funcionamiento este modelo de seguridad puede volverse difícil de mantener. Otras ventajas de este modelo es que no dependen de ningún tipo de actualizaciones y nos protegen de ataques desconocidos, como desventaja, son más propensos a detectar falsos positivos y necesitan un proceso de aprendizaje, para saber como funciona la aplicación.
B) Modelo de Seguridad Negativa
En este modelo de seguridad, el WAF acepta todas las transacciones y solamente deniega las que detecta como una posible amenaza o un ataque. Contrastando con el anterior, no es muy preciso y depende de actualizaciones y bases de firmas de posibles ataques.
A pesar de las desventajas arriba citadas, los WAF que siguen este modelo no precisan de muchos ajustes y suelen ser fáciles de administrar.
¿Que tipo de ataques puede bloquear?
Este aspecto puede variar dependiendo del fabricante del equipo, aunque, la mayoría detectan los ataques más comunes.
Puede detectar un posible buffer overflow analizando las variables que lleguen por GET o POST. Por ejemplo, si el valor de una variable es superior a 150 caracteres, el WAF podría detectar la transacción como maliciosa y denegarla.
Para los ataques de Cross Site Scripting y SQL Injection, el WAF vigila que los valores pasados tanto por GET como por POST, no contengan valores como "SELECT FROM, UNION, CONCAT, <script >, %, etc.
El factor negativo, es que, si nuestra aplicación utiliza caracteres que el WAF tenga en su "lista negra", denegará las peticiones de los usuarios, en este caso hay dos soluciones: rediseñar el funcionamiento de la aplicación o configurar el WAF para que ignore dichos caracteres.
Algunos WAF también monitorizan las respuestas del servidor, por ejemplo, si en una respuesta, que el servidor web envía al usuario se detectan cadenas que pueden ser identificadas como cuentas bancarias, el WAF lo puede detectar como un posible ataque y denegar la respuesta.
Proceso de Aprendizaje
Supongamos que tenemos una aplicación que muestra los productos de un catálogo y para mostrar un producto, se realiza la siguiente petición:
Código:
GET http://sitepath.com/show_article.php?id=15
La aplicación de por si sola, creará una regla que especifique que el valor de esa variable es numérica. Si se realiza la siguiente petición:
Código:
GET http://sitepath.com/show_article.php?id=15' or 1=1 --
El WAF detectará una anomalía y tomará las medidas necesarias, que suelen ser, la denegación de la petición o el redireccionamiento a una página previamente configurada, como un error 404.
¿Que riesgos implica emplear un WAF?
Si no está configurados correctamente, pueden detectar muchos falsos positivos, por tanto, muchas transacciones denegadas y pérdida de capital por parte de la empresa.
La mayoría necesitan adaptación y configuración ante nuevos cambios en el funcionamiento de la aplicación.
Pueden introducir un cierto retardo en las transferencias, por tanto, clientes insatisfechos y jefes molestos. Para atenuar este factor negativo, se pueden implementar aceleradores SSL (es un dispositivo hardware que se encarga de la capa de protección SSL, quita carga al servidor web), usar webchache, comprimir los datos HTML, CSS y JS al enviarlos al navegador.
Modos de Funcionamiento
Pueden funcionar en modo bridge, router, proxy o plugin. Disponibles tanto como Hardware como Software.
Un ejemplo bastante conocido de WAF a nivel software es mod_security, un plugin de Apache que se encarga de la seguridad en las transferencias. La mayoría, por no decir todos, disponen de funciones de registro o logs, donde almacena los sucesos ocurridos.
Una característica bastante interesante es la denegación de peticiones provenientes de diferentes lugares geográficos, por ejemplo, es probable que a nuestro personal de marketing no le interese recibir visitas a la web de ventas de la compañía provenientes de Asia Oriental y deciden denegar toda petición proveniente de ese continente.
Bibliografía y Enlaces externos:
_WAFEC - The Web Application Security Consortium.
_Web Application Firewall - OWASP.
_Web Application Firewall (WAF) Products.