كشفت حملة هجمات منظمة على سلسلة التوريد الإلكترونية عن استهداف المطورين الذين يعتمدون على نظام إدارة المحتوى مفتوح المصدر Strapi. وتم نشر 36 حزمة npm خبيثة، تنتحل صفة إضافات Strapi الموثوقة، بهدف استغلال ثغرات Redis لتنفيذ الأكواد عن بعد، وسرقة بيانات الاعتماد، وإنشاء قنوات تحكم ثابتة.
تركزت الحملة بشكل محدد على منصة دفع للعملات المشفرة، مما يجعلها واحدة من أبرز هجمات سلسلة توريد البرمجيات التي تم رصدها مؤخراً. وقد تم اكتشاف هذه الحزم المزيفة عبر أربع حسابات npm وهمية، وجميعها يعتقد أنها تدار من قبل جهة تهديد إلكتروني واحدة.
مخاطر حزم npm الخبيثة
اعتمدت الحزم الخبيثة على هيكل موحد يتكون من ثلاثة ملفات، واستخدمت رقم الإصدار 3.6.8 ليبدو أنها إضافات رسمية من مجتمع Strapi. وتكمن خطورة هذه الحزم في أن الكود الضار كان يعمل تلقائياً بمجرد تنفيذ أمر npm install عبر سكربت postinstall، دون الحاجة لأي تفاعل إضافي من المطور.
أسماء الحزم مثل strapi-plugin-cron و strapi-plugin-events و strapi-plugin-seed، كانت مشابهة جداً لأسماء أدوات Strapi الحقيقية، مما يسهل على المطورين الوثوق بها. وقد وثق محللو SafeDep هذه الحملة في 3 أبريل 2026، بعد أن رصدت أنظمة التحليل الديناميكي حزمة strapi-plugin-events تقوم بالبحث في نظام الملفات عن أسرار وإرسال عشرات الاتصالات إلى خادم التحكم والسيطرة الخاص بالمهاجم.
أفاد الباحثون بأن الحملة اشتملت على ثمانية أنواع مختلفة من الحمولة الخبيثة، تطورت جميعها خلال فترة 13 ساعة، مما يشير إلى أن المهاجم كان يطور أدواته ويختبرها بنشاط على الهدف الحي. تراوحت هذه الحمولة بين استغلال Redis لتنفيذ الأكواد عن بعد، والهروب من حاويات Docker في الحزم الأولى، وصولاً إلى سرقة بيانات الاعتماد واستغلال قواعد بيانات PostgreSQL مباشرة في الحزم اللاحقة.
استهداف قطاع التشفير
أظهرت الحمولة السادسة، strapi-plugin-seed، اتصالاً بقاعدة بيانات PostgreSQL الخاصة بالهدف باستخدام بيانات اعتماد ثابتة، وبحثت عن قواعد بيانات تحمل أسماء متعلقة بمنصة دفع للعملات المشفرة. كما ظهرت إشارات إلى بوابة دفع للعملات المشفرة تدعى “Guardarian” عبر حمولات متعددة منذ البداية، مما يؤكد أن العملية كانت موجهة لسرقة مالية.
تم إرسال جميع البيانات المسروقة، بما في ذلك ملفات البيئة، والمفاتيح الخاصة، وبيانات Redis، وأسرار Docker، ورموز حسابات خدمة Kubernetes، بشكل نصي عادي عبر HTTP دون أي تشفير. وكان الأثر المحتمل لنجاح الاختراق سيكون وخيماً، حيث سيمنح المهاجم وصولاً مباشراً إلى بيانات الاعتماد للمحافظ الساخنة، وجداول المعاملات، وقاعدة بيانات كاملة لمنصة دفع نشطة.
الزرع الدائم والتنفيذ بدون ملفات
مثلت آخر حمولتين خبيثتين، وكلاهما نُشر تحت اسم حزمة strapi-plugin-api، المرحلة الأكثر تطوراً في الحملة. فعند تفعيل الحمولة السابعة، والتي كانت تحمل الإصدار 3.6.8، كانت تتطلب تطابق اسم المضيف للنظام مع prod-strapi، مما يؤكد أن المهاجم كان قد حدد بالفعل بيئة الإنتاج الخاصة بالهدف.
بمجرد تفعيلها، قامت بكتابة عميل تحكم وسيط مخفي باسم .node_gc.js في الدليل /tmp/، وتشغيله كعملية خلفية منفصلة، وإنشاء إدخال في crontab لإعادة تشغيله كل دقيقة إذا تم إنهاؤه. هذا حول عملية تثبيت حزمة لمرة واحدة إلى باب خلفي دائم. أما الحمولة الثامنة، الإصدار 3.6.9، فقد ذهبت أبعد من ذلك بإلغاء الحاجة إلى أي ملف على القرص.
تم تمرير عميل التحكم والوسيط بالكامل كسلسلة نصية مدمجة إلى عملية node -e منفصلة، مما لم يترك أي أثر ملفي لأدوات الكشف. استهدفت مسارات بيانات الاعتماد مثل /opt/secrets/strapi-green.env و /var/www/nowguardarian-strapi/، مع تعليق برمجي داخل النص البرمجي يشير إلى خط أنابيب CI من Jenkins، مما يكشف عن معرفة المهاجم العميقة والمسبقة للبنية التحتية لبناء الهدف.
يجب على المؤسسات التي تستخدم Strapi مراجعة حزم npm المثبتة على الفور وإزالة أي حزم تطابق الأسماء الخبيثة المذكورة كدلالات على الاختراق. ويتعين تدوير جميع بيانات الاعتماد على الأنظمة المتأثرة، بما في ذلك كلمات مرور قواعد البيانات، ومفاتيح API، وأسرار JWT، والمفاتيح الخاصة، فوراً. يجب تغيير كلمة مرور PostgreSQL الثابتة الموجودة في strapi-plugin-seed إذا كانت نشطة.
ينبغي على المسؤولين إزالة /tmp/.node_gc.js و /tmp/vps_shell.sh وأي ويب شيل PHP من مجلد التحميلات، ومراجعة إدخالات crontab بحثاً عن إشارات إلى node_gc أو curl، وإيقاف أي عمليات تتصل بـ 144[.]31[.]107[.]231. ويجب إلغاء رموز حسابات خدمة Kubernetes المكشوفة على الفور.

