نقطة الضعف الهادئة في npm: عندما يحوّل وصول المشرفين وخطافات البناء الحزمة إلى حمولة
يُظهر اختراق سريع للحزم كيف يمكن لهوية السجل ونصوص دورة الحياة وملفات البناء الأصلية أن تجعل تثبيت التبعية مسارًا للتنفيذ.
في 3 يونيو 2026، تم اختراق 57 حزمة npm عبر عدة حسابات لمشرفين في أقل من ساعتين. هذه السرعة مهمة. في منظومة npm، تُعد هوية الحزمة وسلوك التثبيت وقت التثبيت جزءًا من سطح الهجوم، ما يعني أن تحديثًا خبيثًا يمكن أن ينتشر أبعد وأسرع مما تتوقعه كثير من الفرق.
وتكمن أهمية الحادثة أيضًا في أنها تمحورت حول binding.gyp، وهو ملف مرتبط بسلوك بناء الإضافات الأصلية في Node.js. هذا لا يعني تلقائيًا أن الملف نفسه كان الحمولة، لكنه يشير إلى نقطة ضعف مألوفة لدى المدافعين: خطوات البناء والتثبيت التي تُنفذ قبل أن يستخدم التطبيق التبعية أصلًا.
حقائق سريعة
- تم الإبلاغ عن اختراق 57 حزمة npm عبر عدة حسابات لمشرفين.
- تطورت الأنشطة في أقل من ساعتين، ما ترك وقتًا محدودًا للمراجعة اليدوية.
- شملت الأسماء المتأثرة @vapi-ai/server-sdk و ai-sdk-ollama.
- حدد الباحثون الحمولة باعتبارها نسخة جديدة من دودة Miasma.
- وُصفت البرمجية الخبيثة بأنها تنتشر ذاتيًا، ما يرفع مستوى الخطورة على المستخدمين اللاحقين.
لماذا ينتشر هذا النوع من الاختراق بهذه السرعة
npm ليس مجرد قناة تنزيل. إنه خط تنفيذ للشفرة. يمكن لخطافات دورة الحياة مثل preinstall و install و postinstall و prepare أن تعمل أثناء تثبيت الحزمة، وقد تؤدي الوحدات الأصلية إلى تشغيل خطوات بناء مرتبطة بـ binding.gyp و node-gyp. وهذا يجعل إدخال الحزم لحظة عالية المخاطر: فقد تنفذ التبعية قبل أن تتاح للمطور فرصة فحص ما وصل.
كما أن جانب حسابات المشرفين مهم للغاية. إذا تمكن المهاجم من الحصول على صلاحيات كتابة على بيانات اعتماد نشر الحزمة، يصبح السجل نفسه آلية توزيع. في هذا النموذج، لا يكمن الخطر في محتوى البرمجية الخبيثة فقط، بل في استخدام هوية موثوقة كوسيلة تسليم. بالنسبة للفرق التي تعتمد على عمليات بناء آلية، يمكن أن تصل التحديثات الملوثة إلى أنظمة CI وأجهزة المطورين، وربما إلى مخازن الأسرار إذا لامست النصوص متغيرات البيئة أو بيانات الاعتماد المحلية.
ويضيف وصف الباحثين للحمولة بأنها نسخة من Miasma طبقة أخرى من القلق. إذ يُتداول عن هذه العائلة أنها برمجية خبيثة تنتشر ذاتيًا، ما يعني أن على المدافعين التفكير بما يتجاوز الحزمة المخترقة الواحدة. فإذا استطاع تحديث خبيث جمع بيانات الاعتماد أو إطلاق إجراءات نشر إضافية، فقد يتوسع نطاق التأثير عبر سلسلة التوريد بدل أن يتوقف عند مستودع واحد.
ومن منظور دفاعي، الدرس واضح: تعامل مع تثبيت التبعيات على أنه تنفيذ للشفرة، لا مجرد تسليم للحزم. راجع التغييرات التي تضيف binding.gyp أو تعدل نصوص التثبيت أو سير عمل النشر. وفضّل النشر الموثوق وتدفقات الهوية قصيرة الأجل بدل الرموز طويلة العمر. وإذا تم رصد اختراق ذي صلة، فقم بتدوير بيانات اعتماد npm وGitHub والسحابة وCI بسرعة.
وعند كتابة هذه السطور، لا يزال المسار التقني الكامل لاختراق حسابات المشرفين والأثر النهائي اللاحق غير مؤكد في التفاصيل العلنية. وهذا الغموض نفسه هو إشارة التحذير: فحوادث سلسلة التوريد غالبًا ما تنتشر عبر علاقات الثقة قبل أن يتمكن أحد من حصر الضرر.
الخلاصة
هذه الحالة تذكير بأن منظومات الحزم الحديثة تفشل بطرق دقيقة. غالبًا لا تكون نقطة الضعف هي غياب تصحيح، بل مزيج الهوية والأتمتة ومسارات الشفرة وقت التثبيت. في npm، تتحول الثقة إلى عملية تشغيلية في كل مرة تُنشر فيها حزمة أو تُثبت. ولهذا فإن أقوى دفاع ليس الثقة العمياء، بل تشديد ضوابط النشر، وتطبيق مراجعة أكثر صرامة على خطافات البناء، وتسريع نظافة بيانات الاعتماد عندما يبدو أن هناك أمرًا غير طبيعي.
TECHCROOK
hardware security key: جهاز صغير يعمل عبر USB أو NFC للمصادقة متعددة العوامل على حسابات مثل npm وGitHub والبريد الإلكتروني. يضيف خطوة تسجيل دخول مادية يصعب إعادة استخدامها مقارنة بكلمات المرور أو رموز الرسائل النصية القصيرة. بالنسبة للمطورين والمشرفين، فهو طريقة مباشرة لتعزيز الوصول إلى الحسابات من دون تغيير سير العمل اليومي.
WIKICROOK
- binding.gyp: ملف إعداد بناء تستخدمه إضافات Node.js الأصلية لتحديد كيفية ترجمتها.
- node-gyp: أداة البناء التي تقرأ binding.gyp وتنشئ ملفات بناء الإضافات الأصلية لـ Node.js.
- lifecycle scripts: خطافات npm مثل preinstall و postinstall التي يمكن أن تعمل تلقائيًا أثناء تثبيت الحزمة.
- trusted publishing: نموذج نشر في npm يستخدم مصادقة قصيرة الأجل قائمة على سير العمل لتقليل مخاطر الرموز.
- maintainer account: حساب في السجل يمتلك صلاحية نشر الحزم أو تحديثها، ما يجعله هدفًا عالي القيمة.




