الباب الخلفي 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. في يوم الجمعة، توجه فرويند إلى قائمة الأمان مفتوحة المصدر ليكشف عن أن التحديثات كانت نتيجة قيام شخص ما بزرع باب خلفي في برنامج الضغط عن عمد.
من الصعب المبالغة في تقدير مدى تعقيد الهندسة الاجتماعية وطريقة العمل الداخلية للباب الخلفي. نشر توماس روكيا، الباحث في Microsoft، رسمًا بيانيًا على Mastodon يساعد في تصور المدى المترامي الأطراف للمسعى الأكثر نجاحًا لنشر باب خلفي بمدى كان من شأنه أن يقزم حدث SolarWinds اعتبارًا من عام 2020.
ماذا يفعل الباب الخلفي؟
تمت إضافة تعليمات برمجية ضارة إلى الإصدارين 5.6.0 و5.6.1 من xz Utils مما أدى إلى تعديل طريقة عمل البرنامج. تم التلاعب بـ sshd من خلال الباب الخلفي، وهو الملف القابل للتنفيذ المستخدم لإجراء اتصالات SSH عن بعد. يمكن لأي شخص يمتلك مفتاح تشفير محدد مسبقًا تخزين أي رمز من اختياره في شهادة تسجيل دخول SSH، وتحميله، وتنفيذه على الجهاز ذي الباب الخلفي. لم يشاهد أحد بالفعل التعليمات البرمجية التي تم تحميلها، لذلك ليس من المعروف ما هي التعليمات البرمجية التي خطط المهاجم لتشغيلها. من الناحية النظرية، يمكن أن يسمح الكود بأي شيء تقريبًا، بما في ذلك سرقة مفاتيح التشفير أو تثبيت البرامج الضارة.
مهلا، كيف يمكن لأداة الضغط أن تتعامل مع عملية حساسة للأمان مثل SSH؟
يمكن لأي مكتبة التلاعب بالأعمال الداخلية لأي ملف قابل للتنفيذ ترتبط به. في كثير من الأحيان، سيقوم مطور الملف القابل للتنفيذ بإنشاء رابط للمكتبة اللازمة لكي يعمل بشكل صحيح. OpenSSH، تطبيق sshd الأكثر شيوعًا، لا يربط مكتبة liblzma، لكن Debian والعديد من توزيعات Linux الأخرى تضيف تصحيحًا لربط sshd بـ systemd، وهو برنامج يقوم بتحميل مجموعة متنوعة من الخدمات أثناء تشغيل النظام. يرتبط Systemd بدوره بـ liblzma، وهذا يسمح لـ XZ Utils بممارسة التحكم في sshd.
كيف جاء هذا الباب الخلفي ليكون؟
يبدو أن هذا الباب الخلفي كان قيد الإنشاء منذ سنوات. في عام 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 نظرة عامة هنا.
اكتشاف المزيد من مجلة الإبداع
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.