إلى الخلف
استخبارات الخصم
جدول المحتوى

ملخص تنفيذي

حددت CloudSek TRIAD هجومًا متطورًا لسلسلة التوريد npm يتضمن الحزمة المطبعية تشفير جافا سكريبت، التي حصدت بيانات اعتماد npm و GitHub واستخدمت حسابات المشرف المخترقة لإعادة نشر الحزم الثلاثية بصمت. كانت الحمولة النهائية عبارة عن عميل Arti Tor مُسلح مع سرقة بيانات الاعتماد والمثابرة وC2 المستند إلى Tor، مما يتيح عمليات المهاجم المرنة والتي يصعب تعطيلها.

مقدمة

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

عثر CloudSek TRIAD مؤخرًا على هجوم سلسلة توريد npm غير مكتشف يوفر عملية زرع في المرحلة النهائية باستخدام الأوامر والتحكم المستندة إلى Tor. يعد استخدام Tor كـ C2 بمثابة حرفة راسخة في الاختراقات المستهدفة. يعد نشره من خلال خطأ مطبعي npm واسع النطاق تصعيدًا ذا مغزى يجعل دفاعات طبقة الشبكة التقليدية غير فعالة إلى حد كبير. لا يوجد مجال لحظره، ولا يوجد عنوان IP إلى المجرى، ولا توجد شهادة لبصمة الإصبع.

في 11 مايو 2026، نشر ممثل التهديد تشفير جافا سكريبت إلى سجل npm العام تمت إزالة حرف واحد من مكتبة # #crypto -js## المستخدمة على نطاق واسع. احتوت الحزمة على ثنائي Rust الذي حصد بيانات اعتماد npm و GitHub عند التثبيت، ثم استخدم بيانات الاعتماد هذه لحقن نفسها في كل حزمة احتفظت بها الضحية، وانتشرت بصمت دون أي تدخل إضافي للمهاجم. كانت الحمولة النهائية عبارة عن بناء مسلح لـ Arti، عميل Rust Tor الرسمي الذي تم تمديده بسرقة بيانات الاعتماد، والتشفير، وتصعيد الامتيازات، واستمرار الأنظمة.

كيف وصلت الحزمة إلى سلسلة التوريد

# #crypto -js## هي واحدة من مكتبات التشفير الأكثر تثبيتًا على npm لعشرات الملايين من التنزيلات الأسبوعية، وتستخدم عبر مشاريع JavaScript للواجهة الأمامية والخلفية على حد سواء. نقل من حرف واحد (##crypto-js ← تشفير جافا سكريبت ##) هو نوع الخطأ المطبعي الذي يتجاوز المراجعة غير الرسمية لـ ##الحزمة. json ## فرق. قام المهاجم بتسجيل الحزمة ضمن حساب مهمل (##المحرك 31 ##) مع عنوان Outlook المطابق وشرع في جعله يبدو موثوقًا به.

تم بناء الفخ بشكل جيد. يحتوي الدليل # #lib /## على تنفيذ وظيفي لـ SHA-256 و HMAC و PBKDF2 و AES-CBC و Base64، وهي نسخة شبه حرفية من مصدر # #crypto -js## الشرعي. يقوم # #index .js## بتصدير كل هذه الأشياء بشكل صحيح.

بين 14:39 و 21:21 بالتوقيت العالمي المنسق في 11 مايو 2026، نشر الممثل 22 إصدارًا في جلسة واحدة:

Time (UTC) Version Notes
14:39 1.0.0 Initial publish
14:41 1.0.1 2 minutes later
15:09 1.2.0 Jump implying fictitious history
16:11 1.2.1 Version analysed in this report
16:18–16:38 1.2.5–1.2.12 Rapid-fire, 1–11 min apart
16:41–16:57 1.3.5–1.4.1 Continued escalation
20:30–21:08 1.4.2–1.4.5 Late session
21:15 3.0.0 Major version jump
21:21 3.0.1 Final publish

القفزة من # #1 .4.5## إلى # #3 .0.0## متعمدة. ##كريبتو جي إس @3 .x## هي النسخة القديمة الأكثر تثبيتًا من المكتبة الشرعية. نشر 3.0.1 أماكن تشفير جافا سكريبت قبل crypto-js @3 .x في دقة semver لأي مستهلك «# #crypto -js##»: «^# #3 ##» في package.json الخاص بهم الذي لديه خطأ مطبعي في ملف القفل الخاص به أو ##.npmrc##. يحاكي إيقاع الإصدار السريع مشروعًا تتم صيانته بشكل نشط ويتوافق مع اختبار المهاجم للانتشار الآلي للديدان عبر كل تكرار.

Version Published Hit
1.0.0 - 1.4.1 2026-05-11 14:39 - 16:58Z clean (~7 KB starter / multi-MB filler)
1.4.2 2026-05-11 20:30Z HIT package/.claude/settings
1.4.3 2026-05-11 20:38Z HIT package/.claude/settings
1.4.4 2026-05-11 21:03Z HIT package/.claude/settings
1.4.5 2026-05-11 21:08Z HIT package/.claude/settings
3.0.0 2026-05-11 21:15Z clean (payload temporarily removed)
3.0.1 2026-05-11 21:21Z HIT package/.claude/settings

ثلاث طرق للدخول

عند فتح كرة القطران، تحتوي الحزمة على أحد عشر ملفًا. عشرة منها عبارة عن شرك جافا سكريبت. الحادي عشر هو ##. كلود/ثنائي ## برنامج Rust ELF الثنائي المُجمَّع بسعة 6.4 ميجابايت. هناك ثلاث آليات منفصلة تضمن تنفيذها على جهاز الضحية:

1. npm # #preinstall ## هوك

يتم تشغيل هذا قبل اكتمال أي حل للتبعية قبل تشغيل الكود الخاص بالمطور، قبل أي خطوة بعد التثبيت.

2. كلود كود # #SessionStart ## هوك

يقوم كلود كود بتقييم ##.claude/settings.json## في دليل العمل الحالي عند بدء كل جلسة. إذا قام المطور بفتح Claude Code في مشروع تم تثبيت هذه الحزمة عليه، فسيتم تنفيذ البرنامج الثنائي مرة أخرى خارج أي تدفق تثبيت npm، بصمت.

3. مهمة كود VS # #folderOpen ##

# #runOn: يقوم FolderOpen## الخاص بـ VS Code بتنفيذ المهمة تلقائيًا كلما تم فتح مساحة العمل. لا يلزم تفاعل المستخدم هنا.

تحليل العينة

بمجرد تنفيذ البرنامج الثنائي، فإنه يعمل من خلال تسلسل مباشر وفعال. يروي تخطيط وحدة المصدر الذي تم استرداده من جدول الرموز الثنائية القصة بوضوح:

Module Purpose
src/users.rs Locate and read credential files
src/npm.rs Validate tokens, enumerate packages, repack and publish
src/github.rs GitHub API interaction, repository enumeration
src/preinstall.rs Inject lifecycle hooks into victim packages
src/main.rs Orchestration and async executor

الخطوة 1 - حصاد بيانات الاعتماد

يفتح الملف الثنائي ملفين:

  • ##~/.npmrc## - يقرأ ##_رمز المصادقة ## حقل
  • ##~/.git - أوراق اعتماد##- يقرأ رمز الوصول الشخصي لـ GitHub

تم ترميز كلا المسارين بشكل ثابت. يقوم الملف الثنائي بتعداد الأدلة الرئيسية ضمن /home أولاً، ثم يعود إلى ##/root##. يقوم بالتحقق من صحة كل رمز مقابل السجل المباشر قبل المتابعة:

  • https://registry.npmjs.org/-/whoami ← التحقق من رمز npm
  • https://api.github.com/user ← التحقق من صحة رمز GitHub

كما أنه يتحقق بشكل خاص من قدرة # #bypass_2fa ## على رموز npm، وهي علامة تشير إلى أنه يمكن نشر الرمز المميز دون تأكيد عاملين.

الخطوة 2 - تعداد المشرف

باستخدام رمز npm الذي تم التحقق منه، يقوم الثنائي بالاستعلام عن التسجيل لكل حزمة تحتفظ بها الضحية:

https://registry.npmjs.org/-/v1/search?text=maintainer: <victim>

في موازاة ذلك، يستخدم رمز GitHub لتعداد مستودعات الضحية وجلب ملفات # #package .json## عبر واجهة برمجة تطبيقات محتويات GitHub مما يمنحها عرضًا ثانويًا للحزم التي تمتلكها الضحية حتى إذا كان بحث السجل يعرض نتائج غير مكتملة.

الخطوة 3 - الانتشار الذاتي

بالنسبة لكل حزمة تحتفظ بها الضحية، فإن الملف الثنائي:

  1. يقوم بتنزيل لعبة tarball المنشورة الحالية
  2. يفكها إلى ##/tmp/npm_tarball.tgz##
  3. يقوم بحقن الملف الثنائي نفسه، ##.claude/settings.json##، و ##.vscode/tasks.json##
  4. يضيف ##« التثبيت المسبق»: «./.claude/binary"## إلى حقل ## #scripts ## الخاص بالحزمة
  5. يصطدم بالإصدار (على سبيل المثال # #1 .4.3 → 1.4.4##)
  6. يقوم بإعادة التعبئة والنشر تحت رمز npm الخاص بالضحية

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

يقوم الملف الثنائي أيضًا بتبطين نفسه عند الحقن (رمز # #add_elf_padding ## المسترد من الملف الثنائي) بتغيير حجمه على القرص عبر الأجيال لكسر الاكتشاف الساذج المستند إلى التجزئة.

داخل الحزمة الضارة - التحليل الثابت للزرع

النظام الثنائي الدودي (# #crypto -javascri's .claude/binary##) هو محرك الانتشار. لكن حمولة المرحلة النهائية التي أسقطتها الإعدادات الثنائية على أجهزة الضحايا هي المكان الذي تصبح فيه مجموعة القدرات الكاملة للحملة مرئية.

البرنامج الثنائي عبارة عن بناء معدل لـ Arti 1.1.x، وهو تطبيق Rust الرسمي لبروتوكول Tor، الذي طوره مشروع Tor. يتم وضع الزرع الضار في الأعلى كرمز Rust إضافي يتم ربطه بوقت تشغيل Arti. يحتوي قسم .rodata على منطقة كبيرة (~ 2 ميجابايت) من الانتروبيا المرتفعة بشكل معتدل؛ هذه هي شهادات Arti TLS الشرعية وبيانات إجماع Tor والوثائق المضمنة. ومع ذلك، فإن جزءًا لا يتجزأ من هذه المنطقة عند الإزاحة 0x1a1f7c (العشري 1,709,372) توجد أيضًا حمولة Python مشفرة سداسيًا تم وضعها خصيصًا.

هذا الاختيار متعمد. من الصعب جدًا تجاهل ملف ثنائي بحجم 6.6 ميجابايت يمرر الملف باعتباره ELF قياسيًا ويحتوي على رمز بروتوكول Tor الشرعي عند الفحص الأول مقارنة بأعقاب البرامج الضارة المصممة لهذا الغرض. أدلة بيانات Arti وذاكرة التخزين المؤقت (~/.local/share/arti/، ~/.cache/arti/) التي تظهر على القرص بعد التنفيذ تبدو وكأنها أداة مطور وليست غرسة.

بوابة الكشف السحابي:

تتحقق البرامج الضارة من نقاط نهاية البيانات الوصفية لموفر السحابة. إذا لم يتم اكتشاف بيئة سحابية، فإنها تخرج بشكل نظيف. هذه تقنية شائعة لتجنب التحليل في بيئات وضع الحماية واستهداف بنية تحتية محددة (AWS EC2 وAzure VMs ومثيلات GCP Compute).

سرقة بيانات الاعتماد 

ال ائتمان التنسيق هو تنسيق إخراج موحد لبيانات الاعتماد المسروقة، فهو يبادئ السرقات المتعلقة بـ GitHub بهذه العلامة، وسرقات NPM بـ npm: ، وما إلى ذلك. البيئة المحيطة بالمحيط تكتشف السلسلة ما إذا كانت البرامج الضارة تعمل داخل بيئة CI/CD (مثل GitHub Actions أو Travis CI أو CircleCI)

بدء تشغيل الوكيل ونبضات القلب

تقوم البرامج الضارة بتشغيل عميل Tor الكامل، وتبني دائرة لخدمة مخفية، وتحافظ على نبضات القلب. ترتبط دائرة التوصيل إلى سلسلة الخدمة المخفية على وجه التحديد بتنفيذ عميل Arti HS.

أهداف التشفير والتعدين

يؤكد وجود بنية MinerConfig وجود مكون تعدين التشفير. أسماء الحقول ( تجمع XM_POOL، عنوان XM_MAX_THREADS_التلميح ) اتبع اتفاقية XMrig. أهداف محفظة العملات المشفرة (النزوح، المحفظة الذرية، دفتر الأستاذ المباشر) تشير إلى أن المهاجم يحصد مفاتيح العملة المشفرة، وليس الرموز فقط.

المرحلة 2: الحمولة

كشف البحث عن أنماط Python المشفرة سداسيًا في النظام الثنائي عن سلسلة مستمرة من الأحرف السداسية العشرية عند الإزاحة الثنائية 1,709,372 (0x1A1F7C). تبدأ السلسلة بـ 78 ديسمبر 77 من 57163626464... - البايت السحري 78da هو رأس ضغط zlib.

بعد فك تشفيرها وفك ضغطها، ينتج عنها قطارة Python 3 مكونة من 25 سطرًا:

تستخدم أداة التقطيع مقابس # #AF_ALG ##، وهي واجهة النظام الفرعي للعملات المشفرة في نواة لينكس لتقديم كود شل المرحلة 3. هذا ليس مقبس شبكة تقليدي. حركة المرور عبر # #AF_ALG ## غير مرئية لأدوات مراقبة الشبكة القياسية. يتم إرسال رمز shellcode في أجزاء ذات 4 بايت عبر الرسائل الإضافية # #sendmsg () ##، مما يقلل بشكل أكبر من الإشارة المتاحة لأجهزة الكشف عن وقت التشغيل.

المرحلة 3: حمولة LPE

يؤدي فك ضغط فقاعة zlib داخل قطارة المرحلة 2 إلى إنتاج حمولة المرحلة 3 إلى ELF مستقل عن موضع 218 بايت:

حمولة المرحلة 3 هي الحد الأدنى من رمز غلاف تصعيد الامتيازات (218 بايت):

  • سيتويد (0): يستدعي sys_setuid (0) لإسقاط معرف المستخدم الفعال إلى 0 (الجذر). يفترض هذا أن الملف الثنائي يعمل مع مجموعة بتات SUID (الاستهداف) /usr/بين/سو )
  • تنفيذ الأمر: يتلقى الأمر للتنفيذ من المرحلة الأصلية عبر AF_ALG مقبس، ثم يستدعي execve («/bin/sh»، [» /bin/sh»، «-c»، cmd]، NULL)
  • خروج رشيق: عند حدوث أي خطأ، يتم إجراء مكالمات مخرج (0)

هذا ليس استغلالًا متطورًا للنواة، إنه ببساطة يستغل بت SUID /usr/بين/سو. إذا كان النظام يعاني من ضعف لنا ثنائي، يقوم رمز shellcode هذا بتشغيله. في النظام المصحح، سيفشل رمز الغلاف ويخرج.

الثبات - عملية زرع الأنظمة

بعد سرقة بيانات الاعتماد وتنظيم الحمولة، يثبت النظام الثنائي الثبات من خلال:

  • ~/.local/bin/وسيط النظام ← نسخة من الملف الثنائي الرئيسي
  • ~/.config/سيستمد/المستخدم/سيستيم-بروكر.سيرفيس

ملف الخدمة:

##استمرار التمكين المنطقي ## يتم استدعاؤها لضمان بقاء الخدمة على قيد الحياة عند تسجيل خروج المستخدم. ##إعادة التشغيل = دائمًا ## يضمن تعافيه من القتل. تم ضبط الجدول الزمني للثنائي ليطابق mtime من ثنائيات النظام الشرعية، مما يقلل الإشارة المتاحة لأجهزة الكشف القائمة على نظام الملفات.

إخراج ستريس

تور سي 2

1 سي بي يو 2 زد اس في 762 اوزما 6 قطع 4 2 اكس اتش في 64 زد اكس بي جي لو 3 اكسيكيس 7 جيجا هرتز 7 ليدا. البصل: 80

-> استخدام Tor كقناة الأوامر والتحكم (C2) يمنح المهاجم إخفاء الهوية والمرونة. بدلاً من الكشف عن عنوان IP أو نطاق عام يمكن للمدافعين تتبعه أو حظره، تتصل البرامج الضارة بخدمة Tor المخفية التي يظل موقع الاستضافة الحقيقي الخاص بها مخفيًا. نظرًا لأنه يدمج عميل Arti Tor الشرعي، فإن حركة المرور الخاصة به تشبه أيضًا نشاط Tor العادي بدلاً من قناة C2 المخصصة للبرامج الضارة.

-> يمنح Tor أيضًا مرونة البنية التحتية للمهاجم. يرتبط عنوان.onion الخاص بالخدمة المخفية بهويتها المشفرة، وليس عنوان IP الخاص بخادم الواجهة الخلفية. طالما احتفظ المهاجم بالمفتاح الخاص، يمكنه نقل البنية التحتية لـ C2 إلى مضيفين جدد مع الاحتفاظ بنفس عنوان البصل المشفر، مما يجعل التعطيل أكثر صعوبة بشكل ملحوظ.

الإسناد

استنادًا إلى المعلومات التي تم الحصول عليها من مصادر سرية، تم ربط هذه الحملة بمفاعل التهديد سوكوب، يُقال إنه عضو سابق في النظام البيئي HellCat لبرامج الفدية. في حين أن الأدلة الفنية في هذه العينة لا تؤكد بشكل مستقل هذا الإسناد، فإن الحرف اليدوية تتماشى مع الملف الشخصي الأوسع.

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

التأثير والتخفيف

تستهدف هذه الحملة أنظمة مطوري Linux وبيئات CI/CD حيث توجد بيانات اعتماد npm و GitHub. نظرًا لأن البرامج الضارة تتحقق من صحة الرموز المسروقة وتعيد نشر الحزم المجسمة تلقائيًا ضمن حسابات مشرف موثوق بها، يمكن لجهاز مطور واحد مخترق أن يصبح بسرعة نقطة انتشار لسلسلة التوريد تؤثر على المستخدمين النهائيين.

على الرغم من أن البصل C2 المرصود غير متصل حاليًا، فلا ينبغي اعتبار ذلك علاجًا. نظرًا لأن البرامج الضارة تستخدم خدمة Tor المخفية، يمكن للمهاجم إعادة نشر البنية التحتية مع الاحتفاظ بنفس هوية onion. يجب على المدافعين إعطاء الأولوية:

  • مراقبة روابط التثبيت المسبق المشبوهة لـ npm أو التنفيذ غير المتوقع من أدلة المشروع المخفية مثل ./.claude/
  • التدقيق في عمليات نشر الحزم غير المصرح بها والوصول إلى ~/.npmrc/~/.git-credentials والإلغاء الفوري للرموز المميزة المخترقة
  • التنبيه بشأن نشاط Tor/Arti غير المتوقع أو الثبات على مستوى المستخدم عبر ~/.local/bin/ وخدمات مستخدم systemd

المراجع

كلاودسك ترياد
قسم أبحاث التهديدات وتحليلات المعلومات في CloudSek
لم يتم العثور على أية عناصر.

مدونات ذات صلة