تم التحديث في 29 أغسطس، الساعة 2 ظهرًا بالتوقيت العالمي المنسق مع تفاصيل عن المرحلة الثانية من الهجوم
في 26 أغسطس 2025، تم استخدام إصدارات ضارة متعددة من البرنامج على نطاق واسع نإكس تم نشر حزمة نظام البناء في سجل npm. تحتوي هذه الإصدارات على برنامج برمجي ضار لمرحلة ما بعد التثبيت مصمم لحصد الأصول الحساسة للمطورين، بما في ذلك محافظ العملات المشفرة، ورموز GitHub وnpm، ومفاتيح SSH، والمزيد.
في المرحلة الأولى من الهجوم، استفادت البرامج الضارة من أدوات سطر أوامر الذكاء الاصطناعي (بما في ذلك Claude وGemini وQ) للمساعدة في جهود الاستطلاع، ثم قامت بتسريب البيانات المسروقة إلى المستودعات التي أنشأها المهاجمون والتي يمكن الوصول إليها بشكل عام ضمن حسابات الضحايا على GitHub.
في 27 أغسطس 2025، الساعة 9 صباحًا بالتوقيت العالمي المنسق، قام Github بتعطيل جميع المستودعات التي أنشأها المهاجم لمنع كشف هذه البيانات، ولكن نافذة العرض (التي استمرت حوالي 8 ساعات) كانت كافية لتنزيل هذه المستودعات بواسطة المهاجم الأصلي والجهات الفاعلة الضارة الأخرى.
في المرحلة الثانية، استخدم المهاجم رموز GitHub المسربة من المرحلة الأولى لجعل مستودعات الضحية الخاصة عامة. يبدو أن هذه التغييرات كانت مدفوعة بأتمتة واحدة، والتي تعمل في الفترة ما بين 28 أغسطس الساعة 4 مساءً و29 أغسطس الساعة 2 صباحًا بالتوقيت العالمي المنسق (UTC). وقد تأثر أكثر من 400 مستخدم/مؤسسة بهذه النافذة، مع ما يزيد عن 5500 مستودع خاص منشور للعامة.
قدم الحل الوسط الأولي برنامجًا ضارًا telemetry.js تم تشغيل الملف عبر برنامج نصي بعد التثبيت في حزمة npm. يتم تنفيذ الحمولة فقط على أنظمة Linux وmacOS، وتبحث بشكل منهجي عن الملفات الحساسة (المحافظ، ومحافظ المفاتيح، .env، مفاتيح SSH) واستخراج بيانات الاعتماد (رمز مصادقة gh، محتوى npmrc). حاولت البرامج الضارة الإغلاق عن طريق الإلحاق sudo shutdown -h 0 ل ~/.bashrc و ~/.zshrc، مما يتسبب بشكل فعال في إيقاف تشغيل النظام في الجلسات الطرفية الجديدة. وكانت هذه النتائج أيضا ذكرت بواسطة خطوة الأمن.
تحديث 28 أغسطس 2025 الساعة 9 صباحًا بالتوقيت العالمي المنسق: تم تحديد السبب الجذري – نشأت المشكلة من سير عمل GitHub Actions المعيب الذي سمح بحقن التعليمات البرمجية من خلال عناوين طلبات السحب غير النظيفة بالإضافة إلى استخدام pull_request_target مشغل. على الرغم من إزالة سير العمل بسرعة من الفرع الرئيسي، إلا أنه ظل موجودًا في الفروع القديمة ولا يزال من الممكن استغلاله. أدى خلل الحقن إلى تمكين تنفيذ أوامر عشوائية إذا تم إرسال عنوان علاقات عامة ضار، في حين أن pull_request_target تم منح المشغل أذونات مرتفعة من خلال توفير GITHUB_TOKEN مع إمكانية الوصول للقراءة/الكتابة إلى المستودع.
والجدير بالذكر أن الحملة قامت بتسليح أدوات AI CLI المثبتة من خلال حثها بإشارات خطيرة (--dangerously-skip-permissions, --yolo, --trust-all-tools) لسرقة محتويات نظام الملفات، واستغلال الأدوات الموثوقة للاستطلاع الضار. لقد لاحظنا أن هذا النشاط المدعوم بالذكاء الاصطناعي ينجح في مئات الحالات، على الرغم من أن حواجز حماية مزود الذكاء الاصطناعي تتدخل في بعض الأحيان.
تم تشفير البيانات المسربة باستخدام قاعدة 64 مزدوجة وثلاثية وتحميلها إلى مستودعات GitHub للضحية التي يتحكم فيها المهاجم. s1ngularity-repository, s1ngularity-repository-0، أو s1ngularity-repository-1، والتي تمت ملاحظة الآلاف منها علنًا.
من بين البيانات المتنوعة المسربة هنا، لاحظنا وجود أكثر من ألف رمز Github صالح، وعشرات من بيانات الاعتماد السحابية الصالحة ورموز NPM، وما يقرب من عشرين ألف ملف إضافي مسرب. في كثير من الحالات، يبدو أن البرامج الضارة قد تم تشغيلها على أجهزة المطورين، غالبًا عبر ملحق NX VSCode. لقد لاحظنا أيضًا حالات تم فيها تشغيل البرامج الضارة في مسارات البناء، مثل Github Actions.
في 27 أغسطس 2025، الساعة 9 صباحًا بالتوقيت العالمي المنسق، قام Github بتعطيل جميع المستودعات التي أنشأها المهاجم لمنع كشف هذه البيانات، ولكن نافذة العرض (التي استمرت حوالي 8 ساعات) كانت كافية لتنزيل هذه المستودعات بواسطة المهاجم الأصلي والجهات الفاعلة الخبيثة الأخرى. علاوة على ذلك، فإن تشفير base64 قابل لفك التشفير بشكل تافه، مما يعني أنه يجب التعامل مع هذه البيانات على أنها عامة بشكل فعال. ظهرت بعض المستودعات بعد إجراء Github، مما يجعل المراقبة المستمرة أمرًا ضروريًا. على الرغم من إزالة الحزم المخترقة من npm، إلا أنه لا يزال من الممكن تنفيذها محليًا على الأنظمة التي تم تثبيتها عليها مسبقًا.
تحديث 28 أغسطس 2025 الساعة 6 مساءً بالتوقيت العالمي المنسق: ويز لأبحاث التهديد و عدنان خان حددت موجة ثانية: يبدو أن المهاجم يستخدم رموز GitHub التي تم اختراقها مسبقًا لتحويل المستودعات الخاصة إلى عامة وإعادة تسميتها إلى النمط s1ngularity-repository-#5letters#. لاحظنا أكثر من 190 مستخدمًا/مؤسسة متأثرة، وأكثر من 3000 مستودع.
تحديث 29 أغسطس 2025 الساعة 2 ظهرًا بالتوقيت العالمي المنسق: تبدو هذه المرحلة معلقة، مع انتهاء تأثر 400 مستخدم/مؤسسة، وأكثر من 5500 مستودع.
-
حزمة npm لنظام البناء Nx (
@nrwl/nx,nx) في الإصدارات التالية:20.9.0,20.10.0,20.11.0,20.12.0,21.5.0,21.6.0,21.7.0,21.8.0 -
@nx/devkit في الإصدارات:
21.5.0,20.9.0 -
@nx/الإصدار السحابي للمؤسسة
3.2.0 -
@nx/eslint الإصدار
21.5.0 -
@nx/js في الإصدارات:
21.5.0, 20.9.0 -
@nx/إصدار المفتاح
3.2.0 -
@nx/node في الإصدارات
21.5.0,20.9.0 -
@nx/مساحة العمل في الإصدارات
21.5.0,20.9.0
عناصر الملف (ليست فريدة من نوعها لهذا الهجوم):
-
~/.bashrc,~/.zshrcتعديل معsudo shutdown -h 0 -
/tmp/inventory.txt(مسارات الملفات الحساسة) -
/tmp/inventory.txt.bak -
2379ac0e03b1a67c4ca5693136eff4945e644a91(telemetry.jsالبديل SHA1) -
e5d1f3c45ee7cca6ae59cf64e0573050bbe136ec(telemetry.jsالبديل SHA1) -
b4f20b39aa6df1002872f07973024d85aa49abaf(telemetry.jsالبديل SHA1) -
d2438106211ebd12c4f0a248848bc9864c97a3c0(telemetry.jsالبديل SHA1)
عناصر الشبكة/الحساب:
-
مكالمات واجهة برمجة التطبيقات الصادرة إلى api.github.com (
/user/repos,/repos/*/contents/results.b64) -
تمت تسمية مستودعات GitHub العامة
s1ngularity-repository,s1ngularity-repository-0، أوs1ngularity-repository-1 -
ملف results.b64 يحتوي على بيانات مشفرة بـ base64
العلاج الفوري
-
إزالة إصدارات Nx الضارة (
rm -rf node_modules && npm cache clean --force). -
قم بالترقية إلى إصدار نظيف (قامت Nx بإزالة الإصدارات الضارة، لذلك يمكن اعتبار أي إصدار حالي مصدره NPM آمنًا).
-
قم بمراجعة وإزالة إدخالات Shell الضارة يدويًا من
~/.bashrcو~/.zshrc. -
يمسح
/tmp/inventory.txtو.bakإذا كان موجودا.
التدقيق والكشف
-
تحقق من وجود أي دليل على مستودعات GitHub التي تم إنشاؤها داخل مؤسستك وحسابات المستخدمين المذكورة
s1ngularity-repository,s1ngularity-repository-0، أوs1ngularity-repository-1(لاحظ أنه بما أن GitHub قام بتعطيل هذه المستودعات، فلن تظهر في البحث). -
قم بمراجعة سجلات تدقيق GitHub بحثًا عن الاستخدام غير الطبيعي لواجهة برمجة التطبيقات.
-
مراقبة نقاط نهاية المطور وخطوط أنابيب CI/CD بحثًا عن مكالمات واجهة برمجة التطبيقات المشبوهة والعمليات الفرعية غير المتوقعة.
دوران الاعتماد
-
قم بإلغاء وإعادة إنشاء جميع الرموز المميزة لـ GitHub، ورموز npm، ومفاتيح SSH، ومفاتيح API، وأسرار متغيرات البيئة التي ربما تم تسريبها في هذه المستودعات.
-
قم بتحويل أموال العملات المشفرة إلى محافظ جديدة فورًا في حالة كشفها (حيث لا يمكن تدوير المحافظ نفسها).
-
بينما لا تزال Wiz Threat Research تقوم بمراجعة التأثير، يمكن لعملاء Wiz استخدام الاستعلام والاستشارات المعدة مسبقًا في مركز Wiz Threat Center لتقييم المخاطر في بيئتهم.
-
يمكن لعملاء Wiz استخدام صفحة SBOM للتعرف على الإصدارات الضارة من حزمة `nx` في بيئتهم.
-
أضافت Wiz Threat Research تقنية الكشف المستندة إلى YARA لتحديد مثيلات البرنامج النصي الضار في بيئات العملاء، والتي يجب التعامل معها كدليل على اختراق محتمل للمضيف.
