الباب الخلفي XZ: كل ما تحتاج إلى معرفته
في يوم الجمعة، هز أحد مطوري Microsoft العالم عندما كشف عن وجود باب خلفي تم زرعه عمدًا في XZ Utils، وهي أداة مساعدة مفتوحة المصدر لضغط البيانات متاحة على جميع تثبيتات Linux وأنظمة التشغيل الأخرى المشابهة لـ Unix تقريبًا. من المحتمل أن يكون الشخص أو الأشخاص الذين يقفون وراء هذا المشروع قد قضوا سنوات في العمل عليه. من المحتمل أنهم كانوا قريبين جدًا من رؤية التحديث الخلفي مدمجًا في Debian وRed Hat، وهما أكبر توزيعتين لنظام التشغيل Linux، عندما اكتشف أحد مطوري البرامج شديدي البصر شيئًا مريبًا.
وقال مهندس البرمجيات والتشفير فيليبو فالسوردا عن هذا الجهد: “قد يكون هذا أفضل هجوم على سلسلة التوريد تم تنفيذه والذي رأيناه موصوفًا في العلن، وهو سيناريو كابوس: خبيث، وكفؤ، ومصرح به في مكتبة مستخدمة على نطاق واسع”. الذي اقترب بشكل مخيف من النجاح.
أمضى الباحثون عطلة نهاية الأسبوع في جمع الأدلة. وإليكم ما نعرفه حتى الآن.
ما هي أدوات XZ؟
XZ Utils موجود في كل مكان تقريبًا في Linux. فهو يوفر ضغطًا للبيانات بدون فقدان البيانات تقريبًا على جميع أنظمة التشغيل المشابهة لـ Unix، بما في ذلك Linux. يوفر XZ Utils وظائف مهمة لضغط البيانات وفك ضغطها أثناء جميع أنواع العمليات. يدعم XZ Utils أيضًا تنسيق .lzma القديم، مما يجعل هذا المكون أكثر أهمية.
ماذا حدث؟
كان أندريس فرويند، وهو مطور ومهندس يعمل على عروض PostgreSQL من Microsoft، يقوم مؤخراً باستكشاف أخطاء الأداء التي كان نظام دبيان يواجهها مع SSH، وهو البروتوكول الأكثر استخداماً لتسجيل الدخول عن بعد إلى الأجهزة عبر الإنترنت. على وجه التحديد، كانت عمليات تسجيل الدخول إلى SSH تستهلك عددًا كبيرًا جدًا من دورات وحدة المعالجة المركزية وكانت تؤدي إلى ظهور أخطاء باستخدام valgrind، وهي أداة مساعدة لمراقبة ذاكرة الكمبيوتر.
ومن خلال الحظ المطلق وعين فرويند الدقيقة، اكتشف في النهاية أن المشكلات كانت نتيجة للتحديثات التي تم إجراؤها على XZ Utils. في يوم الجمعة، توجه فرويند إلى قائمة الأمان مفتوحة المصدر ليكشف عن أن التحديثات كانت نتيجة قيام شخص ما بزرع باب خلفي في برنامج الضغط عن عمد.
ماذا يفعل الباب الخلفي؟
تمت إضافة تعليمات برمجية ضارة إلى الإصدارين 5.6.0 و5.6.1 من XZ Utils لتعديل الطريقة التي يعمل بها البرنامج عند إجراء العمليات المتعلقة بضغط .lzma أو إلغاء الضغط. عندما تتضمن هذه الوظائف SSH، فإنها تسمح بتنفيذ تعليمات برمجية ضارة بامتيازات الجذر. يسمح هذا الرمز لأي شخص لديه مفتاح تشفير محدد مسبقًا بتسجيل الدخول إلى النظام الخلفي عبر SSH. ومن الآن فصاعدا، سيكون لهذا الشخص نفس مستوى التحكم الذي يتمتع به أي مسؤول معتمد.
كيف جاء هذا الباب الخلفي ليكون؟
يبدو أن هذا الباب الخلفي كان قيد الإنشاء منذ سنوات. في عام 2021، قام شخص يحمل اسم المستخدم JiaT75 بأول التزام معروف بمشروع مفتوح المصدر. إذا نظرنا إلى الماضي، فإن التغيير الذي طرأ على مشروع libarchive أمر مثير للريبة، لأنه استبدل وظيفة Safe_fprint بمتغير تم التعرف عليه منذ فترة طويلة على أنه أقل أمانًا. لم يلاحظ أحد في ذلك الوقت.
في العام التالي، قدمت JiaT75 تصحيحًا على القائمة البريدية لـ XZ Utils، وعلى الفور تقريبًا، انضم مشارك لم يسبق له مثيل يُدعى Jigar Kumar إلى المناقشة وجادل بأن Lasse Collin، المشرف على XZ Utils منذ فترة طويلة، لم يكن كذلك. تحديث البرنامج في كثير من الأحيان أو بسرعة كافية. قام كومار، بدعم من دينيس إنس والعديد من الأشخاص الآخرين الذين لم يكن لهم وجود في القائمة من قبل، بالضغط على كولين لإحضار مطور إضافي لصيانة المشروع.
في يناير 2023، قدمت JiaT75 أول التزام لها بـ XZ Utils. في الأشهر التالية، أصبح JiaT75، الذي استخدم اسم Jia Tan، منخرطًا بشكل متزايد في شؤون XZ Utils. على سبيل المثال، استبدل تان معلومات الاتصال الخاصة بكولينز بمعلومات خاصة به على oss-fuzz، وهو مشروع يقوم بفحص البرامج مفتوحة المصدر بحثًا عن نقاط الضعف التي يمكن استغلالها. طلب Tan أيضًا من oss-fuzz تعطيل وظيفة ifunc أثناء الاختبار، وهو التغيير الذي منعه من اكتشاف التغييرات الضارة التي سيجريها Tan قريبًا على XZ Utils.
في فبراير من هذا العام، أصدر Tan التزامات للإصدارين 5.6.0 و5.6.1 من XZ Utils. نفذت التحديثات الباب الخلفي. في الأسابيع التالية، ناشد تان وآخرون مطوري Ubuntu وRed Hat وDebian دمج التحديثات في أنظمة تشغيلهم. وفي النهاية، شق أحد التحديثين طريقه إلى عدة إصدارات، وفقًا لشركة الأمن Tenable. هناك المزيد عن تان والجدول الزمني هنا.
هل يمكنك قول المزيد عما يفعله هذا الباب الخلفي؟
باختصار، فهو يسمح لأي شخص لديه المفتاح الخاص الصحيح باختطاف sshd، وهو الملف القابل للتنفيذ المسؤول عن إجراء اتصالات SSH، ومن هناك لتنفيذ الأوامر الضارة. يتم تنفيذ الباب الخلفي من خلال محمل من خمس مراحل يستخدم سلسلة من التقنيات البسيطة ولكن الذكية لإخفاء نفسه. كما أنه يوفر الوسائل اللازمة لتسليم الحمولات الجديدة دون الحاجة إلى تغييرات كبيرة.
العديد من الأشخاص الذين أجروا هندسة عكسية للتحديثات لديهم الكثير ليقولوه عن الباب الخلفي. قدم المطور Sam James نظرة عامة هنا.