Si conoces la película Zootrópolis, hay una escena del DMV. Si sabes a qué me refiero, piensa en algo así. Eso te matará. Eso es exactamente de lo que vamos a hablar ahora. Porque nos estamos centrando en un ataque que se llamó el ataque Zoloris. Es un ataque DDoS que utiliza, contrario a lo que podrías pensar, un ancho de banda mínimo, casi nada, lo cual es asombroso. Este ataque fue creado por Robert Tenzin en 2009. Y hay algo que acabo de encontrar en línea cuando buscaba este ataque.
Técnicamente hablando, no solo se aplica a HTTP. No sé por qué, si buscas en línea el ataque Zoloris, solo se menciona su implementación en HTTP, probablemente porque es el protocolo más utilizado. Pero en mi opinión, al analizar cómo funciona este ataque, este ataque se puede extender a cualquier protocolo que se ejecute sobre TCP y que no tenga un buen manejo de tiempo de espera. Si lo haces así, puedes derribar cualquier servidor. Y recuerda que solo se necesita un solo servidor para dejar todo inactivo.
Comencemos analizando cómo funcionan las cosas normalmente en HTTP. Cuando hablamos de un servidor HTTP, por lo general, lo que sucede es que hay un cliente que se conecta al servidor. Así que hay una línea negra sólida, luego envía una solicitud, que es la línea roja sólida en este caso, y recibe una respuesta, que es la línea verde sólida. Por lo general, ese es el flujo normal. Podemos asumir, para este ejemplo, que cada socket consume la misma cantidad de RAM y otros recursos del sistema del servidor. Por lo general, ese es el caso, pero dependiendo del medio que uses, es posible que no sea realmente así, pero asumamos que lo es.
Luego hay una segunda solicitud que hace lo mismo, pero para cuando llega esa segunda solicitud, podemos asumir que el primer cliente se ha desconectado. Veo tu objeción. Eso no es cierto para keepalive porque, por supuesto, un cliente puede permanecer conectado y eventualmente realizar múltiples solicitudes en el mismo socket. Pero solo por el bien del ejemplo, digamos que el primer cliente en algún momento se desconecta. Entonces, a lo largo del tiempo, segundo, tercer, cuarto, quinto cliente, podemos asumir que el número de recursos y sockets en el servidor, olvidando los picos temporales, suele ser constante. Esa es nuestra suposición, que generalmente también es cierta si observas tus gráficos en cualquier aplicación de registro, verás que el tráfico de red es relativamente estable. Así que eso realmente es cierto. La segunda cosa es que una cosa que probablemente nunca consideras es que retener un socket en el servidor es costoso porque primero obtienes un archivo. Quiero decir, primero obtienes una capa de manejo de red y sistema operativo, lo que significa que se utiliza una parte de la ROM de tu sistema solo para mantener esa aplicación abierta. Luego está el sistema de archivos. Si estás en Unix, enlazarás esos recursos de red a un descriptor de archivo porque en Unix, todo es un descriptor de archivo, ya sabes la regla.
Comments