الهجمات الإلكترونية المدعومة بالذكاء الاصطناعي: كيفية الكشف عن التهديدات الذكية ومنعها والدفاع ضدها

اقرأ الآن
نستخدمُ الذكاء الاصطناعي في ترجمات الموقع، ومع أننا نسعى جاهدين لبلوغ الدقة قد لا تكون هذه الترجمات دقيقةً بنسبة 100% دائمًا. تفهّمك لهذا الأمر هو موضع تقدير لدينا.

تحليل ثغرة Git ومعالجتها CVE-2024-32002

ب OPSWAT
شارك هذا المنشور
مينه فام وتاي دو، طالبان من جامعة هو تشي منه للتكنولوجيا، شاركا في برنامج زمالة OPSWAT
شارك الطلاب في OPSWAT برنامج الزمالة.

تم الكشف مؤخرًا عن ثغرة خطيرة في Git تتيح هجمات تنفيذ التعليمات البرمجية عن بُعد (RCE)، والتي تؤثر على إصدارات متعددة من Git و Microsoft Visual Studio 2017. تُمكّن الثغرة المهاجمين من التلاعب بمستودعات Git باستخدام وحدات فرعية، مستغلين خطأ في Git يسمح بكتابة الملفات خارج شجرة عمل الوحدة الفرعية وفي دليل .git/. يمكّن هذا الخطأ من تنفيذ خطاف خبيث أثناء عملية استنساخ المستودع [1]. 

تؤثر الثغرة الأمنية CVE-2024-32002 على الإصدار 15.9 من Microsoft Visual Studio 2017 وإصدارات Git الأقدم من 2.45.1 و2.44.1 و2.43.4 و2.42.2 و2.41.1 و2.40.2 و2.39.4. يمكن استغلالها في البيئات التي يتم فيها تمكين دعم الروابط الرمزية في أنظمة التشغيل غير الحساسة لحالة الأحرف. 

CVSS (نظام تسجيل الثغرات الأمنية المشترك) 3.x معلومات عن درجة الخطورة وناقلات الثغرات الأمنية بدرجة أساسية 9.0 مصنفة كحرجة، مقدمة من شركة GitHub, Inc.

فهم Git

Git هو نظام مجاني ومفتوح المصدر للتحكم في الإصدار الموزع، مصمم لمساعدة مطوري البرمجيات على إدارة قواعد التعليمات البرمجية بسرعة وكفاءة. وهو يعزز التعاون بين أعضاء فريق التطوير من خلال تنظيم وتتبع التغييرات التي تطرأ على الملفات والدلائل بطريقة موحدة ومنظمة. 

يُستخدم Git على نطاق واسع في تطوير البرمجيات. منصات مثل GitHub و GitLab و Bitbucket مبنية على Git لتعزيز التعاون بين المطورين بسبب ميزاته القوية: 

  • تسجيل التغييرات التي يمكن تتبعها على ملفات التعليمات البرمجية، والمعروفة باسم الالتزامات
  • استرجاع تعديلات التعليمات البرمجية إلى الإصدارات السابقة عند الضرورة. 
  • الجمع بكفاءة بين التغييرات من فروع أو مساهمين مختلفين. 
  • الاحتفاظ بسجل لتاريخ من قام بالتغييرات وتواريخها.
تمثيل مرئي لهيكل مجلد .git، يعرض دلائل مثل التهيئة و HEAD والخطافات والكائنات والمراجع.

خطافات Git Hooks 

عندما يتم إنشاء أو استنساخ مستودع Git، باستخدام الأوامر git init أو git clone، يتم إنشاء دليل .gitفي جذر شجرة العمل. تبدو بنية دليل دليل .git في البداية هكذا: 

خطافات Git هي عبارة عن نصوص برمجية قابلة للتنفيذ، موجودة إما في دليل .git/hooks أو دليل .git/modules/module_type/module_name/hooks. يتم تشغيل الخطافات تلقائيًا عند وقوع أحداث محددة داخل مستودع Git.  

عندما لا يحتوي الملف الموجود في دليل الخطافات على لاحقة .sample، سيتم تنفيذ الأوامر الموجودة في هذا الملف قبل أو بعد إجراء Git معين مضمن في اسم الملف، مثل ما قبل الالتزام وما بعد الالتزام وما بعد الخروج

وحدات Git الفرعية

وحدة Git الفرعية هي سجل داخل مستودع Git يشير إلى التزام معين في مستودع خارجي. عندما تتم إضافة وحدة فرعية إلى مستودع، يتم إنشاء ملف جديد في دليل .gitmodules مع بيانات تعريفية للتعيين بين عنوان URL الخاص بالوحدة الفرعية ودليلها المحلي. عندما يحتوي المستودع على وحدات فرعية متعددة، سيتضمن ملف .gitmodules إدخالًا لكل منها. [3] 

رسم تخطيطي يوضح التفاعل بين المستودعات والوحدات الفرعية، ويوضح العلاقة بين المستودع (أ) والوحدة الفرعية (ب) والمجلد (ج)
مثال لمحتوى ملف .gitmodules، يعرض تكوين وحدة فرعية باسم "مثال"
توضح الصورة التالية كيف يبدو ملف .gitmodules: 

الروابط الرمزية (الروابط الرمزية)

الارتباط الرمزي، الذي يشار إليه أيضًا باسم الارتباط الرمزي أو الارتباط المرن، هو ملف يشير إلى ملف أو دليل آخر (يشار إليه باسم "الهدف") من خلال تحديد مساره. إذا تم حذف الارتباط الرمزي يبقى هدفه غير متأثر. [4] 

يتم إنشاء رابط Symlink في Git كملف مع بيانات وصفية لجعله يعمل كمرجع أو اختصار لملف آخر. يمكن استخدام الروابط الرمزية لإنشاء مراجع متعددة لملف ما دون تكرار محتواه.

رسم تخطيطي يوضح الروابط الرمزية والروابط الثابتة لملف (الملف أ)، ويوضح كيفية وصول هذه الروابط إلى نفس محتوى الملف
يتعامل Git مع الروابط الرمزية كملفات متخصصة تخزن المسار إلى الملف أو الدليل الذي تشير إليه. 
تصوّر الروابط الرمزية داخل مستودع Git، مع توضيح هياكل الدليل والملفات ومسارات الروابط الرمزية الخاصة بها
عندما يتم استنساخ أو سحب مستودع أو فرع يحتوي على رابط رمزي يتم تحويل الرابط الرمزي المخزن في Git إلى رابط رمزي على نظام الملفات المحلي. 

تحليل الثغرات الأمنية في GIT

تحليل الرقعة

لاكتساب فهم أعمق للثغرات الأمنية، غالباً ما يقوم أخصائيو الأمن بإجراء تحليل التصحيح. وهي تقنية تساعد في تحديد الوظائف الضعيفة ونواقل الهجوم المحتملة. قام زملاء OPSWAT بفحص التغييرات التي تم إجراؤها في الإصدار المصحح لمعالجة الثغرة الأمنية CVE-2024-32002، ووجدوا أنه تم تحديث ملفين لمعالجة هذه الثغرة الأمنية.

أحد الملفات التي تم تحديثها هو ملف subodule--helper.c، والذي يتضمن الشيفرة التي تتعامل مع استنساخ وحدة Git الفرعية. تضمن الالتزام الجديد في النسخة المصححة الملفين التاليين:  

  1. إضافة الدالة dir_contains_only_only_dotgit للتأكد من أن دليل الوحدات الفرعية لا يحتوي على أي ملفات أو أدلة .git.
تغييرات التعليمات البرمجية في ملف باسم subodule-helper.c ضمن واجهة Git، تظهر 83 إضافة دون حذف
  1. تم إجراء تغييرات على دالة clone_submodule() لتضمين شرط للتحقق مما إذا كان دليل الوحدة الفرعية موجودًا وفارغًا. إذا لم يكن الدليل فارغًا، فسيتم إجهاض عملية الاستنساخ. 
مقتطف كود مفصل من التزام Git، يسلط الضوء على وظيفة التحقق من محتويات الدليل أثناء عمليات الوحدة الفرعية

أما التحديث الثاني في الالتزام الجديد فكان في ملف t/t7406-submodule-update.sh، حيث تم إضافة برنامج نصي اختباري للتحقق من حل الثغرة الأمنية. 

تعديلات التعليمات البرمجية الموسعة في ملف الاختبار T7406-submodule-update.sh، مع تفصيل تكوينات الاختبار لمسارات الوحدات الفرعية والروابط الرمزية

من التحليل إلى الاستغلال

تحليل سير العمل للارتباطات Symlinks والوحدات الفرعية في Git

بالإضافة إلى الرؤى التي تم جمعها من تحليل الرقعة ووصف الثغرة الأمنية CVE-2024-32002، عمل زملاء OPSWAT على التحقيق في سير عمل الروابط الرمزية والوحدات الفرعية في Git. وقاموا بتحليل تسلسل الأحداث التي تحدث عندما يقوم المستخدم باستنساخ مستودع:

  1. يبدأ Git بتنزيل الملفات والدلائل من المستودع الأساسي. 
  2. ويستخدم التعريفات المحددة في ملفات الروابط الرمزية لإعادة إنشاء ارتباطات رمزية مطابقة في نظام الملفات المحلي.  
  3. إذا كان الارتباط الرمزي يشير إلى ملف موجود، فسيعمل الارتباط الرمزي؛ وإلا فسيظل الارتباط الرمزي معطلاً حتى تتم استعادة الهدف.  
  4. إذا تم استنساخ المستودع باستخدام الخيار -- التكراري، يستنسخ Git الوحدات الفرعية (المستودعات الخارجية) ويضعها في مسارات الدليل كما هو موضح في ملف .gitmodules.  
  5. إذا كان الارتباط الرمزي جزءًا من مسار الوحدة الفرعية (على سبيل المثال، util/module/test، حيث يكون symlink رابطًا رمزيًا يشير إلى دليل آخر، مثل symlink_folder)، فإن Git سيخزن محتوى الوحدة الفرعية في الدليل الفعلي المشار إليه بواسطة الرابط الرمزي (على سبيل المثال، symlink_folder/module/test)، مع السماح بالوصول من خلال مسار الرابط الرمزي الأصلي. 
مخطط انسيابي مرئي يوضح خطوات استنساخ المستودع، وتنزيل الملفات والدلائل، وإعادة إنشاء الروابط الرمزية، واستنساخ الوحدات الفرعية، والانتقال إلى المسار الصحيح

فهم الثغرة الأمنية في CVE-2024-32002 Git 

إنشاء المستودعات الخبيثة

قام زملاء OPSWAT بمزيد من الفحص لإنشاء مستودعات خبيثة استنادًا إلى التحديثات التي تم إجراؤها لملفt/t7406-submodule-update.sh وقسموا هذه العملية إلى الخطوات التالية:

  1. إنشاء مستودع يحتوي على خطاف ما بعد الخروج
مقتطف كود طرفي يعرض الأوامر لإعداد خطاف ما بعد الخروج في Git، بما في ذلك إنشاء الدلائل وإضافة البرامج النصية
  1. إنشاء مستودع آخر يتضمن وحدة فرعية موجودة في المسار A/modules/x. تشير الوحدة الفرعية الجديدة إلى المستودع الذي تم إنشاؤه مسبقًا.
مقتطف رمز طرفي يوضح عملية إضافة وحدة فرعية إلى مستودع باستخدام أوامر Git
  1. إنشاء رابط رمزي باسم يشير إلى مجلد .git في فهرس Git. 
مثال برنامج نصي طرفي يسلط الضوء على الأوامر لإنشاء والتزام ملف .git كأداة مساعدة في مستودع
مخطط انسيابي يشرح بالتفصيل سيناريو هجوم حيث تتم إضافة مستودع خطاف خبيث كوحدة فرعية إلى مستودع رئيسي، مما يؤدي إلى تنفيذ البرنامج النصي
رسم تخطيطي يوضح كيف يمكن للمهاجم استغلال مكافحة التطرف العنيف عن طريق استنساخ مستودع 

فهم الخلل الأمني

عندما يستنسخ المستخدم مستودعًا خبيثًا، تم إنشاؤه في الخطوة السابقة، باستخدام الخيار -- التكراري، سيتم تشغيل البرنامج النصي الخبيث من خطاف ما بعد الخروج، مما يسمح للمهاجم باختراق جهاز المستخدم. 

يحدث تنفيذ التعليمات البرمجية عن بعد لأن المستودع الرئيسي يكتشف ارتباطًا رمزيًا باسم a يشير إلى دليل .git عند استنساخه. مع تمكين الوضع العودي، يتم أيضًا سحب الوحدات الفرعية إلى المستودع المستنسخ. يحتوي هذا المستودع على مجلد الخطافات، والذي يحتوي على البرنامج النصي لخطاف ما بعد الخروج، ودليله المحلي في A/modules/x.  

نظرًا لأن a يشير إلى دليل.git ونظام الملفات غير حساس لحالة الأحرف، يتم تفسير A على أنه مكافئ لـ a. يتم تضليل Git لكتابة البرنامج النصي لخطاف ما بعد الخروج في الدليل .git/modules/odules/query/fast/hooks/. إذا تم العثور على نص برمجي خطاف ما بعد الخروج في مجلد . git/modules/{module_type}/{module_name}/خطافات، فسيتم تشغيله عند استنساخ المستودع الرئيسي باستخدام الخيار --تكراري. ونتيجةً لذلك، يمكن للمهاجمين اختراق جهاز المستخدم بنجاح من خلال تنفيذ تعليمات برمجية عن بعد.

رسم تخطيطي يوضح تفاعل الضحية مع المستودع الخبيث، بما في ذلك الاستنساخ وسحب الوحدات الفرعية وتنفيذ البرامج النصية غير المقصودة
رسم بياني يعرض تدفق الهجوم

محاكاة استغلال ثغرة أمنية في Git

بناءً على النتائج السابقة، قام زملاء OPSWAT بإنشاء مستودع رئيسي وخطاف لمحاكاة إنشاء مستودع خبيث:

  1. في البداية، يوصى بتهيئة Git للسماح دائمًا بـ Protocol.file، وتمكين core.symlinks، وتعيين اسم الفرع الافتراضي إلى main (لتجنب رسالة التحذير). 
مقتطف طرفي يعرض أوامر لتكوين إعدادات Git عالميًا لمعالجة الارتباط الرمزي وإعداد الفرع الافتراضي
  1. تتم إضافة نص برمجي خطاف ما بعد الخروج الخبيث إلى دليل الخطافات. للتأكد من إمكانية تنفيذ البرنامج النصي لما بعد الخروج على جهاز المستخدم، يتضمن البرنامج النصي للباش الذي ينشئ هذا الخطاف الأمر chmod +x fast/hooks/post-checkout
برنامج نصي طرفي يعرض أمر بايثون مشفّر خبيث مشفّر مدمج في خطاف ما بعد الخروج من Git
  1. يتم إنشاء رابط رمزي في المستودع الرئيسي يشير إلى دليل .git.
برنامج نصي طرفي يوضح عملية ارتكاب التغييرات لتضمين الأدوات المساعدة وملف .git في المستودع
لقطة شاشة لقائمة دليل المستودع مع مجلدات مثل src و libs و .gitmodules معروضة في واجهة Git
المستودع الرئيسي الضعيف
لقطة شاشة لواجهة مستودع Git تُظهر دليلاً مع خطاف ما بعد الخروج

مجلد / الخطافات مع خطاف ما بعد الخروج

لقطة شاشة تُظهر أوامر طرفية لاستنساخ مستودع Git وجلسة PowerShell مع إنشاء اتصال بالشبكة
عندما يقوم المستخدم باستنساخ هذا المستودع الخبيث، يمكن للمهاجم اختراق جهاز الضحية. 

الاصلاح

لتحييد التهديد، يمكن للمستخدمين إلغاء تثبيت Git أو تطبيق أحدث تصحيح أمني. وبدلاً من ذلك، يمكن لحلول مثل MetaDefender Endpoint أن تُخطِر المستخدم على الفور وتعرض جميع نقاط مكافحة التطرف العنيف المعروفة في البيئة من خلال واجهته البديهية. يمكن لـ MetaDefender Endpoint اكتشاف أحدث مكافحات التطرف العنيف والتخفيف من حدتها من خلال الاستفادة من قدراته التي تضم أكثر من 3 ملايين نقطة بيانات وأكثر من 30,000 من نقاط مكافحة التطرف العنيف المرتبطة بمعلومات الخطورة. ومن خلال تنفيذ أي من التدابير المضادة سيتم احتواء مكافحة التطرف العنيف بشكل كامل، مما يحد من خطر وقوع هجوم إلكتروني مدمر.

هل أنت مستعد لوضع MetaDefender Endpoint في الخطوط الأمامية لاستراتيجية الأمن السيبراني لديك؟


ابق على اطلاع دائم OPSWAT!

اشترك اليوم لتلقي آخر تحديثات الشركة, والقصص ومعلومات عن الفعاليات والمزيد.