
CVE-2020-8277에 대한 개념 증명 악용으로, 대용량 레코드 응답으로 트리거되는 Node.js DNS 리졸버 서비스 거부 취약점이며, Docker 기반 재현 환경이 포함됩니다.
교육 목적으로만 사용하세요.
# 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
자세한 내용은 참조를 확인하세요.
https://nodejs.org/en/blog/vulnerability/november-2020-security-releases/
보안 권고에 따르면 많은 수의 레코드를 반환하는 호스트 이름을 확인하면 DoS가 발생할 수 있습니다.
이 취약점은 메모리 범위를 벗어난 읽기 오류가 발생합니다.
영향을 받는 라인.
https://github.com/nodejs/node/blob/1fd2c8142b611baadc973947b83c0863cb003d9d/src/cares_wrap.cc#L764