Slow JSON Stream: A Low-Bandwidth Denial-of-Service Attack Against HTTP APIs with JSON Request Bodies
Abstract
Ataque DoS de bajo ancho de banda contra APIs HTTP que aceptan cuerpos JSON. El atacante abre una conexión HTTP/1.1 chunked y envía un prefijo JSON válido a un byte por segundo, bloqueando el parser. 90% de los 41 targets evaluados son vulnerables con configuración por defecto.
Slow JSON Stream es un ataque de denegación de servicio de bajo ancho de banda contra APIs HTTP que aceptan cuerpos application/json.
Cómo funciona
El atacante abre una conexión HTTP/1.1 con Transfer-Encoding chunked y envía un prefijo JSON válido (por ejemplo {"items":[{...,}) a un byte por segundo, sin enviar nunca el token de cierre. Slowloris hace lo mismo con las cabeceras HTTP y los servidores ya lo cortan con client_header_timeout. Esta variante llega al lector de cuerpo del framework y al parser JSON, donde la mayoría de frameworks no tienen timeout configurado por defecto.
Resultados
Evalué 32 combinaciones de framework/runtime y 9 targets de infraestructura (proxies, WAFs, API gateways). El 90% de los 41 targets son vulnerables con configuración por defecto.
- Tier 1 (explotable con 64 conexiones): 6 targets, 5 frameworks más Kong CE API Gateway
- Tier 2 (sin timeout de cuerpo efectivo, conexiones que se acumulan indefinidamente): 29 targets
- Tier 3 (error rate al 100% bajo 64 conexiones): Flask sync y Rails
- Tier 4 (resistentes por defecto): 4 targets
Los datos, herramientas y el testbed Docker están disponibles públicamente para replicación exacta.
Estado: pendiente de aprobación para publicación.