El arte de engañar a los servidores web con el contrabando HTTP
Piensa en una aduana fronteriza, en donde el inspector de entrada utiliza una cinta métrica que mide en centímetros, pero el encargado del almacén interno mide todo en pulgadas. Si un contrabandista astuto conoce esta discrepancia, puede declarar una caja de un tamaño específico en la puerta y esconder mercancía ilegal en el espacio sobrante que el almacén va a calcular mal.
En la arquitectura web actual, esta aduana es el servidor front-end o balanceador de carga y el almacén es el servidor back-end. La mercancía oculta es lo que en el ámbito de la ciberseguridad se conoce como el contrabando de peticiones HTTP.
Para que la navegación en Internet sea rápida y fluida, los servidores no cierran la conexión después de cada clic que haces. En su lugar mantienen un canal abierto y envían peticiones de cientos de usuarios una detrás de otra, como los vagones en un tren de carga.
El desastre viene cuando el front-end y el back-end pierden la sincronía y no logran ponerse de acuerdo acerca de dónde termina un vagón y dónde comienza el siguiente.
Dicho desastre se reduce a un par de simples cabeceras HTTP que tienen la misma función, pero que hablan idiomas distintos para indicar el tamaño del mensaje. Por un lado, se encuentra el Content-Length, el cual dice exactamente cuántos bytes de longitud tiene la petición.
Por otro lado, se encuentra el Transfer-Encoding, el cual le avisa al servidor que el mensaje va a llegar dividido en pequeños fragmentos hasta recibir una señal de pare. Aquí es donde el ciberdelincuente entra en escena, enviando un paquete deliberadamente ambiguo que incluye ambas cabeceras al mismo tiempo.
Si los sistemas se encuentran mal configurados, el balanceador de carga en la entrada podría ver únicamente el Content-Length, asintiendo con la cabeza y dejando pasar el bloque entero al creer que es una sola petición legítima.
No obstante, cuando ese mismo paquete llega a las profundidades del back-end, este segundo servidor prefiere leer el Transfer-Encoding, encargándose de procesar solo la primera mitad del mensaje y asume que la petición ya terminó.
TIC Defense se enfoca en la protección de los activos digitales de las empresas por medio de servicios y productos de última tecnología, los cuales se adaptan a las organizaciones, aumentan sus defensas y se enfocan en la prevención y respuesta rápida a todo tipo de eventos potencialmente maliciosos.
La especie de “magia negra” ocurre con la otra mitad de los datos, debido a que ese fragmento malicioso no desaparece, queda flotando en la red, escondido y esperando el momento adecuado.
Cuando el siguiente usuario, quien se encuentra completamente ajeno a la situación, intenta iniciar sesión o cargar la página de Internet apenas unos milisegundos después, su petición legítima choca por detrás con ese fragmento malicioso que quedó atascado en la red y el servidor fusiona ambos textos sin darse cuenta.
Es así como la víctima puede terminar ejecutando una transferencia de fondos que nunca ha autorizado, entregando sus credenciales de sesión a un cibercriminal o recibiendo una página web maliciosa que va a quedar guardada en caché para infectar a todos los que vengan después.
Lo preocupante de esta técnica es que no se requiere de fuerza bruta para romper contraseñas o inyecciones de código complejas en una base de datos, solo se alimenta de la confusión estructural, siendo la prueba definitiva de que en la seguridad informática, asumir que dos máquinas interpretan las reglas de la misma forma es dejarle las llaves del castillo al enemigo.