
ثغرة حجب الخدمة في MikroTik RouterOS
تسمح ثغرة في MikroTik RouterOS لمهاجم خارجي غير مصادَق بإجبار الراوتر على إعادة التشغيل. يتم ذلك عن طريق إرسال حزمة بحجم 1 بايت إلى عنوان IPv6 الخاص بـ RouterOS باستخدام بروتوكول IP 97. من المرجح أن تكون جميع إصدارات RouterOS التي تدعم EoIPv6 معرضة لهذا الهجوم. يتطلب هذا الهجوم أن يكون IPv6 مفعّلاً على النظام المستهدف ووجود واجهة نفق واحدة على الأقل.
INPUT لبروتوكول IP 97.EoIPv6 (Ethernet over IPv6) هو بروتوكول نفق من الطبقة الثانية في MikroTik RouterOS. يقوم بروتوكول EoIPv6 بتغليف إطارات Ethernet في حزم EtherIP معدّلة (IP proto 97).
يستخدم تطبيق MikroTik لـ EoIPv6 12 بتًا محجوزة من EtherIP لتخزين معرف النفق. كما قامت MikroTik بتبديل أول 4 بتات مع ثاني 4 بتات من ترويسة EtherIP.
لاسترجاع معرف النفق والتحقق من الحزمة، يقوم RouterOS بتبديل البتات كما هو موصوف أعلاه على الحزم المستلمة على البروتوكول 97. وتستمر هذه العملية طالما توجد واجهات نفق في النظام (حتى لو كانت معطّلة). لا يتحقق RouterOS من حجم الحمولة أثناء هذه العملية. لذا فإن حزمة من بايت واحد على البروتوكول 97 ستُحدث خللاً (لأن باقي البتات المطلوبة لبناء معرف النفق مفقودة).
على RouterOS، أضف عنوان IPv6:
/ipv6 address add interface=ether1 address=fd00::1/64 advertise=no
ونفقًا (من أي نوع):
/interface ipip add remote-address=127.0.0.1
شغّل الاستغلال (exploit.c في المستودع):
./exploit fd00::1
سيقوم RouterOS بإعادة تشغيل نفسه بعد ثوانٍ قليلة من تنفيذ الاستغلال. يمكن رؤية السجلات التالية بعد إعادة التشغيل:
jan/20/2018 10:28:36 system,error,critical router was rebooted without proper shutdown
تم اختبار RouterOS 6.39.3 (إصلاحات الأخطاء فقط)، و6.41 (الحالي) و6.42rc11 (المرشح للإصدار)، وجميعها معرضة لهذا الهجوم وقت كتابة هذا التقرير. من المرجح أن تكون هذه الثغرة موجودة أيضًا في الإصدارات الأقدم من RouterOS التي تدعم EoIPv6.
انظر هذا الموضوع في منتدى MikroTik.