Vulnerabilidad de semillas de tabla de hash constante
HashTables cumple el sueño de inserciones y acceso de tiempo constante. Un HashTable es un grupo de listas vinculadas, las listas vinculadas deben ser pequeñas para que el rendimiento sea bueno.
Este ataque ocurre cuando el atacante satura en exceso una lista vinculada dentro de la tabla hash, lo que resulta en enormes tiempos de acceso, lo que ralentiza todo el proceso del nodo. por lo tanto, la denegación de la vulnerabilidad de ataque de servicio.
NodeJS evita que los atacantes abusen de una lista vinculada dentro de la tabla hash aleatorizando el algoritmo de la función hash a medida que introducen semillas aleatorias para el algoritmo en el momento de la inicialización.
El error fue que la semilla aleatoria siempre fue constante (aleatoria pero nunca cambió a través de cada versión de nodo) ya que se inicializa durante la compilación del código de nodo, la razón detrás de esto es que el motor V8 toma una instantánea del contexto inicializado , y lo reutiliza en las siguientes botas, para agilizar las cosas. por lo tanto, el atacante ahora puede conocer el algoritmo y su semilla, lo que permite al atacante abusar de la tabla hash y sobresaturar una lista vinculada.
Escribí una publicación de blog sobre el tema que explica los hashTables y los orígenes de la vulnerabilidad con más detalles, NodeJS: Vulnerabilidad constante de las semillas de HashTables - Medio