Evasión de WAFs

WAF (Web Application Firewall) es un elemento de protección frente a ataques que se encarga de analizar el tráfico web dirigido a los distintos portales que pueda disponer una organización. Este tipo de firewalls se diferencia del resto en que procesa el tráfico HTTP(s) a nivel de la capa 7 de la pila OSI y por lo tanto permite capacitarlo de reglas de detección directamente sobre las tecnologías con las que estén diseñados y desarrollados los sitios web. Además, podemos diferenciar este tipo de dispositivos de lo que denominamos un IPS por las características de identificación de patrones anómalos.

Normalmente pueden operar en 3 modos:

  • Modo negativo, o basado en listas negras.
  • Modo positivo, o basado en listas blancas.
  • Modo mixto, empleando una combinación de los modos negativo y positivo.

Si se emplea el modo negativo exclusivamente, éste puede provocar una cantidad mayor de falsos positivos, además de sufrir un retardo mayor en el tiempo de procesamiento y en definitiva menor protección. En el lado positivo, tiene un menor tiempo de implementación.

En cambio, si se emplea el modo positivo tiene el efecto contrario: un mejor rendimiento y menor número de falsos positivos, aunque el coste temporal de implementación es muchísimo mayor. En este sentido, algunos fabricantes ofrecen el aprendizaje automático, pero no termina de ser totalmente efectivo.

Existen diversas técnicas que utilizan los atacantes para evadir la detección y el bloqueo de un dispositivo WAF, entre ellas las siguientes:

1. HPP (HTTP parameter pollution), en el que se inyectan delimitadores para incluir valores de parámetros que permitan evadir la validación de datos de entrada.

2. HPF (HTTP parameter Fragmentation), que consiste en dividir el valor de los parámetros para que no se identifiquen patrones de ataque.

Cada una de estas técnicas permite determinar las capacidades de un WAF en cuanto a identificación y bloqueo de ataques, no obstante, uno de los principales fallos de seguridad que permite evadir cualquier tipo de restricción de un WAF es la propia configuración del mismo y su integración con el entorno. Es por esto que cierto tipo de ataques, que a priori son muy sencillos de lanzar, son efectivos evitando cualquier tipo de control que el propio WAF implementa. En este sentido, voy a comentar cómo es factible evadir un WAF simplemente añadiendo una cabecera HTTP en las peticiones web que el atacante realiza.

En la anterior ilustración vemos una simplificación de una configuración de este tipo de soluciones para la protección de sitios web. En esta otra, se trata de una configuración cloud de la misma solución:

En una situación normal, el WAF es capaz de analizar todo el tráfico web que va dirigido a los sitios web que protege. Este ataque consiste en agregar la cabecera X-originating-IP con una de las IPs que el servidor entiende como legítimas. Por ejemplo, 127.0.0.1 en algunos casos. Con esto, cada petición que es procesada por el WAF se considera legítima.

De este modo, un atacante podría, en este tipo de escenarios, llegar a zonas privadas a las que a priori no tiene acceso cualquier usuario.

Por este motivo, conviene prestar mucha atención a cualquier aspecto que esté involucrado en este tipo de soluciones. La seguridad, como siempre se dice, debe estar presente durante toda la vida de la solución: análisis, diseño, adquisición, implantación, configuración, mantenimiento, etc.

Comments

  1. Muy bien y sobre el tema, pero por supuesto esto es sólo
    mi opinión.