اختراق 144 حزمة npm من إطار Mastra في هجوم على سلسلة التوريد استمر 88 دقيقة

كشف باحثو الأمن في Socket عن هجوم على سلسلة التوريد أدى إلى اختراق 144 حزمة في فضاء الأسماء @mastra على npm في 17 يونيو 2026. اختطف المهاجم حساب مساهم لديه حقوق نشر في إطار وكلاء الذكاء الاصطناعي Mastra، ثم شن حملة آلية على مدى 88 دقيقة أعاد فيها نشر كل حزمة متضررة مع تبعية مشابهة إملائياً تم حقنها كمتطلب إنتاج. وفقاً لتحليل Socket، يجب على أي مطور أو مشغل CI أو نظام بناء قام بتثبيت حزمة @mastra/* بعد 16 يونيو اعتبار تلك البيئة مخترقة بشكل محتمل.
Mastra هو إطار TypeScript لبناء وكلاء ذكاء اصطناعي، وتتلقى حزمته الأساسية (@mastra/core) أكثر من 918,000 تنزيل أسبوعياً. إن اتساع الهجوم – 144 حزمة عبر فضاء الأسماء بأكمله، وليس مجرد هدف واحد عالي القيمة – يعني أن المطورين الذين قاموا بتثبيت أي جزء من نظام Mastra البيئي خلال نافذة الهجوم كانوا معرضين للخطر.
كيف عمل الهجوم
لم يقم المهاجم بتعديل كود Mastra مباشرة. بدلاً من ذلك، أضاف تبعية تسمى easy-day-js إلى كل حزمة أعيد نشرها. الاسم هو typosquat متعمد لمكتبة التاريخ الشائعة dayjs – قريب بما يكفي لدرجة أن الفحص الآلي للتبعيات قد يتجاهله.
احوت الحزمة الخبيثة easy-day-js على خطاف postinstall – سكريبت ينفذه npm تلقائياً أثناء npm install، قبل أن يستورد المطور أو ينفذ أي كود من الحزمة. قام ذلك الخطاف بتحميل وتنفيذ حمولة من مرحلتين:
- المرحلة 1 (setup.cjs): محمل مبهم قام بتعطيل التحقق من شهادة TLS، واتصل بالبنية التحتية للمهاجم على
23.254.164[.]92:8000، وحمل الحمولة من المرحلة الثانية، وأطلقها كعملية خلفية منفصلة، ثم حذف نفسه لطمس الآثار. - المرحلة 2 (protocal.cjs): برنامج سرقة معلومات متعدد المنصات بحجم ~41 كيلوبايت مع آليات ثبات لنظام ويندوز (مفتاح تسجيل Run)، وماك (LaunchAgent)، ولينكس (وحدة systemd). قام هذا البرنامج الخبيث بجرد 166 إضافة متصفح لمحافظ العملات الرقمية، وجمع سجل التصفح من Chrome وEdge وBrave، وفتح قناة أوامر وتحكم قادرة على تنفيذ كود تعسفي لاحق.
استمرت نافذة الهجوم من الساعة 01:12 إلى 02:39 UTC في 17 يونيو. تظهر سجلات تدقيق npm أن حساباً واحداً – ehindero، وهو مساهم لم يتم إلغاء وصوله للنشر في نطاق @mastra أبداً – قام بنشر جميع إصدارات الحزم الخبيثة الـ142 خلال تلك الـ88 دقيقة. وفقاً لتقارير إضافية، قام فريق الأمن في مايكروسوفت أيضاً بتحديد الهجوم والإبلاغ عنه.
من هم المعرضون للخطر
أي نظام قام بتشغيل npm install مع تبعية @mastra/* بين 16 يونيو وحتى سحب الإصدارات الخبيثة يمثل اختراقاً محتملاً. يشمل ذلك أجهزة الكمبيوتر المحمولة للمطورين، ومشغلي خطوط أنابيب CI/CD، وأنظمة بناء Docker، وبيئات البناء السحابية. نظراً لتنفيذ الحمولة أثناء التثبيت عبر خطاف postinstall – وليس في وقت تشغيل التطبيق – حتى الأنظمة التي لم تشغل التطبيق تتأثر إذا قامت بتشغيل npm install.
خطوات المعالجة
يوصي Socket وغيره من باحثي الأمن باعتبار أي نظام متأثر مخترقاً بالكامل. إجراءات محددة:
- إزالة الثبات: حذف إدخالات تسجيل Run في ويندوز، وملفات plist الخاصة بـ LaunchAgent في ماك، ووحدات systemd في لينكس المرتبطة بالبرنامج الخبيث.
- تدوير جميع بيانات الاعتماد الموجودة على الأجهزة المتأثرة: توكنات npm، وبيانات اعتماد موفري السحابة (AWS, GCP, Azure)، ومفاتيح SSH، ومفاتيح API.
- تدوير محافظ العملات الرقمية على جهاز نظيف غير متأثر – استهدف البرنامج الخبيث على وجه التحديد 166 إضافة محفظة متصفح.
- تدقيق خطوط أنابيب CI/CD بحثاً عن علامات وصول غير مصرح به أو تسريب أسرار.
للحماية المستقبلية، يوصي Socket بإضافة --ignore-scripts إلى أوامر npm install في خطوط أنابيب CI لتعطيل خطافات postinstall افتراضياً – تخفيف بسيط كان سيمنع متجه الهجوم هذا بالكامل.
قامت منظمة @mastra بإزالة الإصدارات الخبيثة من الحزم من npm. يجب على المطورين التحديث إلى إصدارات نظيفة والتحقق من عدم ظهور easy-day-js في أي دليل node_modules أو ملف قفل.
Originally reported by Socket. Read the original article for additional details.
View original source