
استغلال لإثبات المفهوم لـ CVE-2020-8277، وهي ثغرة رفض الخدمة في محلل DNS الخاص بـ Node.js تنشأ بسبب استجابات سجلات كبيرة الحجم، مع بيئة إعادة إنتاج تعتمد على 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