ماذا حدث؟
في 8 سبتمبر 2025، في حوالي الساعة 9 صباحًا بتوقيت شرق الولايات المتحدة، تمكن أحد ممثلي التهديد من السيطرة على حساب npm الخاص بالمطور المعروف Qix عبر الهندسة الاجتماعية. ممثل التهديد إذن نشرت العديد من الإصدارات الضارة للعديد من حزم npm المشهورة للغاية، بما في ذلك debug وchalk. بعد اكتشاف هذا الهجوم، في حوالي الساعة 11 صباحًا بتوقيت شرق الولايات المتحدة، قام المشرف اعترف حل وسط وبدأ في إزالة الإصدارات الضارة، وقد تمت إزالتها بسرعة من npm بعد بضع ساعات.
ومع ذلك، خلال الإطار الزمني القصير الذي يبلغ ساعتين حيث كانت الإصدارات متاحة للتنزيل، إذا تم دمجها في تصميمات الواجهة الأمامية وشحنها كأصول ويب، فإن أي متصفحات تقوم بتحميل موقع الويب المتأثر ستنفذ حمولة ضارة تربط واجهات برمجة تطبيقات الشبكة والمحفظة من أجل إعادة كتابة مستلمي/موافقات العملة المشفرة بصمت قبل التوقيع، بحيث يتم تحويل المعاملات إلى محافظ يسيطر عليها المهاجم.
علاوة على ذلك، اعتبارًا من 9 سبتمبر، أصبح لدى JFrog ذكرت أن هذه الحملة لا تزال تتكشف وأن نطاقها يتجاوز حزم Qix، بما في ذلك أيضًا الحزم الموجودة في نظام DuckDB البيئي. ولذلك يجب على المؤسسات التعامل مع القائمة المتأثرة على أنها قيد التطوير، وافتراض أن الإصدارات الضارة من الحزم الشائعة لا تزال متاحة للتنزيل وقد يتم تضمينها تلقائيًا في مسارات التطوير.
حتى الآن، تم الإبلاغ عن التأثير الفعال لهذا الهجوم مقاسًا بنجاحه في سرقة العملات المشفرة الحد الأدنى، خاصة عند النظر في الانتشار الكبير للحزم المخترقة. ومن وجهة نظرنا، كان التأثير الحقيقي لهذه الحملة هو هجوم “رفض الخدمة” على الصناعة، مما أدى إلى إضاعة ساعات لا حصر لها من العمل من أجل ضمان تخفيف المخاطر.
كيف تعمل العدوى؟
قد يحدث أن يقوم أحد المطورين بتثبيت إصدار ضار من إحدى الحزم (أو حزمة تابعة) على محطة العمل الخاصة به، وسيتم بعد ذلك تجميع التعليمات البرمجية الضارة في التطبيقات التي ينشئونها. وبدلاً من ذلك، قد يقوم سير عمل CI/CD بسحب أحدث إصدار متاح من الحزمة (أو حزمة تابعة)، واستخدامه كجزء من مسار البناء. يمكن أن يظهر الاختراق في تطبيق تابع عندما يقوم أحد الإصدارات بحل الإصدارات الملوثة، سواء قام المطور بتثبيتها أو قامت عملية تلقائية بذلك.
لاحظ أن التعليمات البرمجية الضارة لا تتضمن أي آلية قياس عن بعد أو استمرارية، وبالتالي فإن التأثير يكون على المستخدمين النهائيين بدلاً من الخادم نفسه، ويظل الخطر قائمًا فقط طالما استمر التطبيق في خدمة البرنامج النصي الملوث، أو أثناء تخزين البرنامج النصي مؤقتًا (عبر CDN، وعمال الخدمة، وذاكرة التخزين المؤقت للمتصفح، وما إلى ذلك).
التطبيقات التي تستخدم هذه الحزم حصريًا من جانب الخادم (العقدة فقط) تكون أقل عرضة للخطر، في حين أن أي بيئة تخدم جافا سكريبت الملوثة للمستخدمين النهائيين تكون في مستوى معين من المخاطر، مع أعلى مستوى من المخاطر محجوز لأي تطبيقات تتضمن محفظة العملة المشفرة أو تدفقات الدفع (dApps، وعناصر واجهة المستخدم/التبرعات، ومكونات web3 المضمنة، وعمليات الدفع، وما إلى ذلك).
ماذا تفعل التعليمات البرمجية الضارة؟
تشتمل الإصدارات الضارة على تعليمات برمجية مبهمة تقوم بدمج أداة اعتراضية من جانب المتصفح بصمت في حزم الواجهة الأمامية. عندما يقوم متصفح المستخدم الذي يزور موقع الويب بتحميل صفحة متأثرة، يقوم الكود بتنشيط وتغليف واجهات برمجة تطبيقات الويب الأساسية (بما في ذلك الجلب وXMLHttpRequest)، بالإضافة إلى واجهات المحفظة مثل window.ethereum.request وطرق التوقيع Solana، وبالتالي يضع نفسه بين التطبيق وكل من الشبكة والمحفظة.
يقوم الكود بعد ذلك بمسح الاستجابات وحمولات المعاملات لعناوين blockchain (ETH، BTC، SOL، TRX، LTC، BCH). إذا حددت أي إجراءات لنقل الأموال، فإنها تعيد كتابة المستلمين وعناوين المنفقين وموافقات / بدلات ERC-20 بصمت إلى القيم التي يتحكم فيها المهاجم، وتذهب إلى حد استخدام بدائل متشابهة بحيث تظل واجهة المستخدم تبدو طبيعية نسبيًا من وجهة نظر المستخدم. ونظرًا لأن المبادلة تحدث قبل توقيع المستخدم، فقد ينتهي الأمر بالضحايا بالموافقة على العملة أو إرسالها إلى المهاجم معتقدين أن كل شيء على ما يرام.
ما هي المخاطر التي تتعرض لها البيئات السحابية؟
كما هو مذكور أعلاه، فإن أي بيئة تقوم بحل التعليمات البرمجية وتجميعها ثم تقديمها باستخدام الإصدارات الضارة من هذه الحزم إلى متصفح المستخدم النهائي يجب افتراض أنها متأثرة. يمكن أن يشمل ذلك عمليات نشر طلبات الإنتاج والتجهيز والمعاينة/السحب وخوادم التطوير المحلية التي يستخدمها الموظفون.
تُظهر بياناتنا أنه قبل هذه الحملة، كانت 99% من البيئات السحابية تحتوي على مثيل واحد على الأقل لإحدى الحزم التي يستهدفها جهة التهديد هذه (مع كون تصحيح الأخطاء هو الأكثر انتشارًا حتى الآن). بعد إصدار الإصدارات الضارة، توضح بياناتنا أنه يمكن العثور على التعليمات البرمجية الضارة نفسها في 10% على الأقل من البيئات السحابية، الموجودة في حزم أو أصول.
من هذا يمكننا أن نستنتج أنه خلال الإطار الزمني القصير الذي يبلغ ساعتين حيث كانت الإصدارات الضارة متاحة على npm، وصلت التعليمات البرمجية الضارة بنجاح إلى 1 من كل 10 بيئات سحابية. يعمل هذا على توضيح مدى سرعة انتشار التعليمات البرمجية الضارة في هجمات سلسلة التوريد مثل هذا الهجوم.
ما هي الحزم والإصدارات المتأثرة؟
backslash@0.2.1، chalk-template@1.1.1، support-hyperlinks@4.1.1، has-ansi@6.0.1، simple-swizzle@0.2.3، color-string@2.1.1، error-ex@1.3.3، color-name@2.0.1، is-arrayish@0.3.3،lice-ansi@7.1.1، color-convert@3.1.1، Wrap-ansi@9.0.1، ansi-regex@6.2.1، يدعم-color@10.2.1، strip-ansi@7.1.1، chalk@5.6.1، debug@4.4.2، ansi-styles@6.2.2، @duckdb/node-api@1.3.3، @duckdb/duckdb-wasm@1.29.2، @duckdb/node-bindings@1.3.3، duckdb@1.3.3، proto-tinker-wc@0.1.87، @coveops/abi@2.0.1
التعامل مع القائمة على أنها تتطور؛ التحقق من صحة السجل/النسخة المتطابقة الخاصة بك وإبقاء قوائم الحظر محدثة.
يوضح تحليلنا للقائمة الأولية للحزم المبلغ عنها أنه بالإضافة إلى انتشارها بين البيئات السحابية، فإنها تعمل بمثابة تبعيات للعديد من الحزم الأخرى:
كيف يمكنني التحقق مما إذا كانت مؤسستي قد تأثرت؟
-
ملفات القفل والسجلات: ابحث في package-lock.json، وpnpm-lock.yaml، وYarn.lock، وسجل القطع الأثرية الخاص بك عن الإصدارات الدقيقة أعلاه.
-
القياس عن بعد وتقارير المستخدم: تحقق من وجود حالات فشل غير عادية تتعلق بتدفقات التوقيع، وعناوين المنفقين غير المألوفة في موافقات ERC-20، وتقارير عمليات النقل المعاد توجيهها.
-
مراجعة على السلسلة: بالنسبة للمستخدمين النشطين خلال الإطار الزمني الذي كانت فيه الحزم متاحة للتنزيل ومن المحتمل أن تكون قيد الاستخدام (على سبيل المثال، منذ الساعة 9 صباحًا بتوقيت شرق الولايات المتحدة في 8 سبتمبر 2025)، قارن المستلمين/البدلات المقصودة بالنتائج الفعلية على السلسلة.
الأصول المبنية: افحص حزم JS الحديثة بحثًا عن الأنماط التي تشير إلى الكود المبهم:
const _0x112fa8=_0x180f;(function(_0x13c8b9,_0x35f660){const _0x15b386=_0x180f,_0x66ea25=_0x13c8b9();while(!![]){try{const _0x2cc99e=parseInt(_0x15b386(0x46c))/(-0x1caa+0x61f*0x1+-0x9c*-0x25)*(parseInt(_0x15b386(0x132))/(-0x1d6b+-0x69e+0x240b))+-parseInt(_0x15b386(0x6a6))/(0x1*-0x26e1+-0x11a1*-0x2+-0x5d*-0xa)*(-parseInt(_0x15b386(0x4d5))/(0x3b2+-0xaa*0xf+-0x3*-0x218))+-parseInt(_0x15b386(0x1e8))/(0xfe+0x16f2+-0x17eb)+-parseInt(_0x15b386(0x707))/(-0x23f8+-0x2*0x70e+-0x48e*-0xb)*(parseInt(_0x15b386(0x3f3))/(-0x6a1+0x3f5+0x2b3))+-parseInt(_0x15b386(0x435))/(0xeb5+0x3b1+-0x125e)*(parseInt(_0x15b386(0x56e))/(0x18*0x118+-0x17ee+-0x249))+parseInt(_0x15b386(0x785))/(-0xfbd+0xd5d*-0x1+0x1d24)+-parseInt(_0x15b386(0x654))/(-0x196d*0x1+-0x605+0xa7f*0x3)...
ماذا يجب أن تفعل فرق الأمن؟
-
قم بإدراج الإصدارات الموجودة في السجل/الوكيل الخاص بك في قائمة الحظر؛ تثبيت/تجاوز للإصدارات المعروفة والآمنة.
-
إعادة البناء من ذاكرات التخزين المؤقت النظيفة (CI + المحلي)، ومسح جميع ذاكرات التخزين المؤقت على كل من أجهزة التطوير المحلية وخوادم إنشاء CI/CD الخاصة بك لمنع إعادة تقديم التبعية المخترقة من ذاكرة التخزين المؤقت “المسمومة”.
-
قم بإصدار أمر إبطال لجميع أصول JavaScript المتأثرة على شبكة توصيل المحتوى (CDN) الخاصة بك لإجبار الخوادم على تجاهل الملفات الضارة المخزنة مؤقتًا.
-
الإصلاح العاجل لواجهة المستخدم: إضافة المجاميع الاختبارية/تكامل الموارد الفرعية (SRI) من جانب العميل حيثما أمكن، وتعطيل وحدات البقشيش/التبرع مؤقتًا وفرض إعادة المصادقة لتدفقات المحفظة.
-
البحث: قم بإجراء عمليات فحص للحزم/الأصول ومراجعة القياس عن بعد لتدفق التوقيع بحثًا عن الحالات الشاذة خلال الساعة 13:16 – ~15:15 بالتوقيت العالمي المنسق في 8 سبتمبر.
-
الفرز على السلسلة: وضع علامة تلقائية على الموافقات/التحويلات إلى عناوين المستلمين/المنفقين غير المتوقعة في تلك النافذة؛ إخطار المستخدمين المتأثرين.
-
حافظ على تحديث قائمة الحظر يوميًا أثناء استمرار الحملة، بما في ذلك DuckDB وأي حزم تم الإبلاغ عنها حديثًا.
كيف يمكن أن يساعد ويز؟
-
يمكن العثور على أحدث المعلومات وقواعد الكشف ذات الصلة بهذا النشاط في موقعنا مركز التهديد الاستشاري.
-
لدى Wiz قواعد الكشف عن الإصدارات الضارة من هذه الحزم، بالإضافة إلى توقيعات الكشف عن البرامج الضارة التي تحدد التعليمات البرمجية الضارة التي تم إدخالها.
-
إذا كنت من عملاء Wiz الذين تأثروا بهذا النشاط، فيجب أن تتوقع رؤية دليل على هذا السطح عبر صفحة SBOM، وصفحة نتائج الثغرات الأمنية، والرسم البياني للأمان.
-
تقوم Wiz Research بالتحقيق في هذه الحملة أثناء مراقبة التقارير المقدمة من زملائنا في الصناعة، وتعمل على تحديث اكتشافاتنا عند الإبلاغ عن الحزم الجديدة وتأكيد تأثرها.
