Saltar al contenido

2011: HashDoS

En diciembre de 2011, Alexander Klink y Julian Wälde mostraron que los servidores web de PHP, Java, Python, Ruby y otros guardaban los parámetros de cada petición en tablas hash con funciones predecibles. Una sola petición con miles de parámetros elegidos podía ocupar un procesador durante minutos. Los lenguajes respondieron añadiendo semillas aleatorias y límites al número de parámetros.

La defensa que adoptaron esos lenguajes es la semilla aleatoria al arrancar. Piensa en qué pasa con los nombres que colisionan en un servidor cuando otro servidor usa otra semilla.

Dos instancias de un servicio usan la misma función hash resistente, cada una con su propia semilla aleatoria elegida al arrancar. Un atacante consigue calcular miles de nombres que colisionan en la instancia A y los envía también a la instancia B. ¿Qué pasa en B?