امسح ضوئيًا لتحميل تطبيق Gate
qrCode
خيارات تحميل إضافية
لا تذكرني بذلك مرة أخرى اليوم

تحليل تسمم NPM - إعادة إنتاج هجوم شاي-هولود

المؤلف: جوكر & سي سي ج

الخلفية

في الآونة الأخيرة، اندلعت مرة أخرى حادثة كبيرة لتسميم حزم NPM في مجتمع NPM، وهذه الحادثة مرتبطة بشدة بحادثة هجوم Shai-Hulud في سبتمبر 2025. يحتوي الحزمة NPM هذه على شيفرة خبيثة تسرق مفاتيح المطورين ومفاتيح واجهة برمجة التطبيقات (API) والمتغيرات البيئية وغيرها من المعلومات الحساسة، وتستخدم المفاتيح لإنشاء مستودعات عامة وتحميل هذه المعلومات الحساسة المسروقة.

سلو مIST(SlowMist) أداة لمراقبة الأمن الديناميكي ومعلومات التهديدات في Web3 تم تطويرها ذاتيًا من قبل SlowMist تستجيب على الفور، وتدفع بسرعة معلومات التهديدات ذات الصلة، وتوفر للعملاء ضمانات أمان أساسية.

!

!

في الوقت نفسه، سيقوم النظام الخلفي بحفظ العينات الضارة في أقرب وقت ممكن، وحساب قيم الميزات المقابلة لها مثل SHA-256.

!

عملية التحليل

باستخدام حزمة @asyncapi/php-template@0.1.1 كمثال، عند مقارنة النسخة القديمة @asyncapi/php-template@0.1.0، يمكن ملاحظة أن النسخة 0.1.1 أضافت ملفين js جديدين، وهما setup_bun.js و bun_environment.js المموهة.

!

تم إضافة نص برمجي preinstall إلى package.json، مما يجعل setup_bun.js يتم تنفيذه تلقائيًا قبل تثبيت التبعيات.

!

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

في النهاية، استخدم bun لتنفيذ ملف bun_environment.js، وهو ملف ضار تم تشويهه بشكل كبير.

!

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

سرقة الشهادات

AWS: هذا البرنامج الضار ينفذ طرق runSecrets() و listAndRetrieveAllSecrets()، حيث تقوم طريقة runSecrets() بفحص جميع بيانات الاعتماد السحابية القابلة للاكتشاف وجميع المناطق المحتملة، مما يزيد من نطاق الفحص؛ بينما تقوم listAndRetrieveAllSecrets() بـ"التنقيب العميق" ضمن بيانات الاعتماد والمناطق المحددة، لاستعراض جميع الأسرار والحصول على أحدث محتوياتها النصية. معًا، يمكن للمهاجم تصدير جميع SecretString و SecretBinary القابلة للوصول في حساب AWS الخاص بالضحية مرة واحدة.

!

تُستخدم طريقة enumerateValidCredentials() بشكل أساسي لجمع جميع مفاتيح خدمات السحابة القابلة للاستخدام. ستحاول من متغيرات البيئة وملفات التكوين وتسجيل الدخول عبر CLI وغيرها من المصادر واحدًا تلو الآخر، وستُسجل جميع الاعتمادات التي يتم التحقق منها بنجاح لاستخدامها لاحقًا في سرقة أسرار السحابة.

!

GCP: الطريقة الأخرى التي تم تنفيذها في هذا النص الخبيث listAndRetrieveAllSecrets() تستهدف وحدة GCP، حيث ستقوم أولاً بإدراج جميع الأسرار تحت مشروع GCP المحدد بناءً على معرف المشروع المحدد، ثم تحدد مباشرة أحدث إصدار لكل سر، وتستدعي accessSecretVersion لقراءة محتوياته النصية. في النهاية، ستجمع جميع الأسرار التي تم الحصول عليها (مثل مفتاح API، كلمات مرور قاعدة البيانات، إلخ) واحدًا تلو الآخر.

!

Azure: يتميز أسلوب listAndRetrieveAllSecrets() الذي تم تنفيذه في هذا البرنامج الضار بأنه يستهدف بشكل خاص وحدة Azure. يبدأ بفحص الاشتراك بالكامل عبر Azure Resource Manager لتحديد جميع خزائن المفاتيح؛ ثم يتصل بكل خزنة واحدًا تلو الآخر باستخدام بيانات الاعتماد التي تم الحصول عليها؛ وأخيرًا، يقوم بإدراج جميع الأسرار فيها، ويستدعي getSecret للحصول على القيمة النصية لكل سر.

!

في تنفيذ سرقة المعلومات الحساسة، يتم استخدام أدوات أمان شرعية أيضًا للهجوم على الضحايا. في طريقة extractAndInstall()، يتم فك ضغط واستخراج ملفات TruffleHog الثنائية، التي كانت تستخدم في الأصل لاكتشاف والتحقق من تسريبات المعلومات السرية في مستودعات الشيفرة، مثل مفاتيح API والاعتمادات، ولكن تم استخدامها من قبل المهاجمين لمسح النظام الملفي الكامل للضحايا.

!

NPM سلسلة التوريد

تقوم هذه السكربت الخبيث بتنفيذ دالة updatePackage() من أجل نشر سلسلة توريد NPM. أولاً، باستخدام توكن NPM المسروق، يتم تنزيل كود المصدر للحزمة القانونية التي يمتلك الضحية إذن نشرها، ثم يتم تعديل ملف package.json، حيث يتم إدراج أمر سكربت preinstall الخبيث في حقل السكربتات. في الوقت نفسه، يتم وضع السكربت الخبيث داخل الحزمة، مما يزيد تلقائيًا رقم إصدار الحزمة بمقدار 1، لتفعيل التحديث التلقائي للمستخدم، ويتم دفع الحزمة التي تحتوي على السكربت الخبيث إلى مستودع NPM الرسمي.

!

باب خلفي و C2

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

!

وتم تحميل هذه المعلومات المسروقة بعد تشفيرها مرتين باستخدام base64 إلى المستودع الذي تم إنشاؤه، وكانت أوصاف هذه المستودعات التي تم إنشاؤها هي “Sha1-Hulud: The Second Coming.”.

!

بعد فك التشفير، يمكن رؤية البيانات الحساسة المسربة من المستخدم.

!

!

!

ملخص

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

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • تعليق
  • إعادة النشر
  • مشاركة
تعليق
0/400
لا توجد تعليقات
  • Gate Fun الساخنعرض المزيد
  • القيمة السوقية:$3.51Kعدد الحائزين:1
    0.00%
  • القيمة السوقية:$3.49Kعدد الحائزين:1
    0.00%
  • القيمة السوقية:$3.61Kعدد الحائزين:2
    0.43%
  • القيمة السوقية:$3.5Kعدد الحائزين:1
    0.00%
  • القيمة السوقية:$3.5Kعدد الحائزين:1
    0.00%
  • تثبيت