تقرير عن اختراق مستودع git وقاعدة المستخدمين لمشروع PHP

تم نشر النتائج الأولى لتحليل حادث يتعلق بتحديد ارتكابين ضارين في مستودع Git لمشروع PHP مع تنشيط الباب الخلفي عند إرسال طلب برأس وكيل مستخدم مصمم خصيصًا. أثناء دراسة آثار أنشطة المهاجمين، تم التوصل إلى أن خادم git.php.net نفسه، الذي يوجد عليه مستودع git، لم يتم اختراقه، ولكن تم اختراق قاعدة البيانات التي تحتوي على حسابات مطوري المشروع .

من الممكن أن يكون المهاجمون قادرين على تنزيل قاعدة بيانات المستخدم المخزنة في نظام إدارة قواعد البيانات (DBMS) على خادم master.php.net. لقد تم بالفعل ترحيل محتويات master.php.net إلى خادم main.php.net الجديد المثبت من البداية. تمت إعادة تعيين جميع كلمات مرور المطورين المستخدمة للوصول إلى البنية التحتية لـ php.net وبدأت عملية تغييرها من خلال نموذج خاص لاستعادة كلمة المرور. تظل مستودعات git.php.net وsvn.php.net للقراءة فقط (تم نقل التطوير إلى GitHub).

بعد اكتشاف أول التزام ضار تم إجراؤه من خلال حساب راسموس ليردورف، مؤسس PHP، كان من المفترض أن حسابه قد تم اختراقه وقام نيكيتا بوبوف، أحد مطوري PHP الرئيسيين، بالتراجع عن التغييرات وحظر حقوق الالتزام لـ الحساب الإشكالي. بعد مرور بعض الوقت، تم إدراك أن الحظر لم يكن منطقيًا، لأنه بدون التحقق من الالتزامات باستخدام التوقيع الرقمي، يمكن لأي مشارك لديه حق الوصول إلى مستودع php-src إجراء تغيير عن طريق استبدال اسم مؤلف وهمي.

بعد ذلك، أرسل المهاجمون رسالة خبيثة نيابة عن نيكيتا نفسه. من خلال تحليل سجلات خدمة جيتوليت، المستخدمة لتنظيم الوصول إلى المستودعات، جرت محاولة لتحديد المشارك الذي أجرى التغييرات بالفعل. على الرغم من تضمين المحاسبة لجميع عمليات التنفيذ، لم تكن هناك إدخالات في السجل لتغييرين ضارين. أصبح من الواضح أن هناك اختراقًا للبنية التحتية، حيث تمت إضافة الالتزامات مباشرةً، متجاوزًا الاتصال عبر جيتوليت.

تم تعطيل خادم git.php.net على الفور، وتم نقل المستودع الأساسي إلى GitHub. على عجل، نسي أنه للوصول إلى المستودع، بالإضافة إلى SSH باستخدام gitolite، كان هناك إدخال آخر يسمح لك بإرسال الالتزامات عبر HTTPS. في هذه الحالة، تم استخدام git-http-backend للتفاعل مع Git، وتم إجراء المصادقة باستخدام خادم Apache2 HTTP، الذي تحقق من بيانات الاعتماد عن طريق الوصول إلى قاعدة البيانات المستضافة في نظام إدارة قواعد البيانات (DBMS) على خادم master.php.net. تم السماح بتسجيل الدخول ليس فقط باستخدام المفاتيح، ولكن أيضًا باستخدام كلمة مرور عادية. أكد تحليل سجلات خادم http أنه تمت إضافة تغييرات ضارة عبر HTTPS.

عند دراسة السجلات، تبين أن المهاجمين لم يتصلوا في المرة الأولى، بل حاولوا في البداية العثور على اسم الحساب، ولكن بعد التعرف عليه، قاموا بتسجيل الدخول في المحاولة الأولى، أي. لقد عرفوا كلمات مرور راسموس ونيكيتا مسبقًا، لكنهم لم يعرفوا معلومات تسجيل الدخول الخاصة بهم. إذا تمكن المهاجمون من الوصول إلى نظام إدارة قواعد البيانات (DBMS)، فمن غير الواضح لماذا لم يستخدموا على الفور معلومات تسجيل الدخول الصحيحة المحددة هناك. هذا التناقض لم يتلق بعد تفسيرا موثوقا. يعتبر اختراق master.php.net هو السيناريو الأكثر ترجيحًا، نظرًا لأن هذا الخادم يستخدم تعليمات برمجية قديمة جدًا ونظام تشغيل قديم، ولم يتم تحديثه لفترة طويلة ويحتوي على ثغرات أمنية لم يتم إصلاحها.

تتضمن الإجراءات المتخذة إعادة تثبيت بيئة خادم master.php.net ونقل البرامج النصية إلى الإصدار الجديد من PHP 8. تم تعديل كود العمل مع نظام إدارة قواعد البيانات (DBMS) لاستخدام الاستعلامات ذات المعلمات التي تزيد من تعقيد استبدال كود SQL. يتم استخدام خوارزمية bcrypt لتخزين تجزئات كلمات المرور في قاعدة البيانات (في السابق، تم تخزين كلمات المرور باستخدام تجزئة MD5 غير موثوقة). تتم إعادة تعيين كلمات المرور الموجودة وتتم مطالبتك بتعيين كلمة مرور جديدة من خلال نموذج استرداد كلمة المرور. نظرًا لأن الوصول إلى مستودعات git.php.net وsvn.php.net عبر HTTPS كان مرتبطًا بتجزئة MD5، فقد تقرر ترك git.php.net وsvn.php.net في وضع القراءة فقط، وكذلك نقل الكل المتبقية لهم مستودعات ملحق PECL على GitHub، على غرار مستودع PHP الرئيسي.

المصدر: opennet.ru

إضافة تعليق