TL;DR
في 31 مارس 2026، قام مهاجمون باختراق حساب npm للمطور الأساسي لمكتبة Axios، عميل HTTP الأكثر شيوعًا في JavaScript مع 83 مليون عملية تنزيل أسبوعيًا. لقد نشروا إصدارات ضارة (1.14.1 و 0.30.4) تحتوي على حصان طروادة للوصول عن بعد (RAT) متعدد المنصات يسرق بيانات الاعتماد ومفاتيح SSH ورموز السحابة من أجهزة المطورين. قم بالرجوع إلى الإصدار Axios 1.14.0 فورًا، وقم بتغيير جميع الأسرار، وافحص نظامك بحثًا عن مؤشرات الاختراق.
مقدمة
تعالج Axios طلبات HTTP أكثر من أي مكتبة JavaScript أخرى. إذا قمت بإنشاء عميل واجهة برمجة تطبيقات (API)، أو اختبار نقاط النهاية، أو ربط واجهة أمامية بواجهة خلفية في السنوات الخمس الماضية، فمن المحتمل أنك استخدمتها.
في 31 مارس 2026، الساعة 00:21 بالتوقيت العالمي المنسق، نشر فاعل تهديد إصدار Axios 1.14.1 من خلال حساب مطور مخترق. بدت الحزمة مطابقة للإصدار الشرعي. كان الفرق دقيقًا للغاية: تغير ملف package.json فقط عبر 86 ملفًا. لكن هذا الملف الوحيد حقن تبعية وهمية تسمى plain-crypto-js قامت بنشر حصان طروادة للوصول عن بعد إلى كل جهاز يقوم بتشغيل npm install.
ظلت الإصدارات الضارة نشطة لمدة تتراوح بين ساعتين إلى ثلاث ساعات تقريبًا قبل أن يسحبها npm. ساعتان إلى ثلاث ساعات عبر 83 مليون عملية تنزيل أسبوعية.
توضح هذه المقالة كيفية عمل الهجوم، وكيفية اكتشاف ما إذا كانت أنظمتك مخترقة، وما الذي يجب على فرق واجهة برمجة التطبيقات (API) تغييره في إدارة تبعياتها في المستقبل.
كيف تكشف هجوم سلسلة توريد Axios
الجدول الزمني
نفذ المهاجم هذه العملية بدقة خلال نافذة زمنية مدتها 18 ساعة:
- 30 مارس، 05:57 بالتوقيت العالمي المنسق: تم نشر حزمة طعم نظيفة
plain-crypto-js@4.2.0على npm. منح نشر إصدار "نظيف" أولاً للحزمة تاريخًا موجزًا في السجل، مما جعلها تبدو أقل ريبة. - 30 مارس، 23:59 بالتوقيت العالمي المنسق: تم نشر الإصدار الضار
plain-crypto-js@4.2.1، مضيفًا خطافpostinstallيحتوي على أداة الإسقاط (dropper). - 31 مارس، 00:21 بالتوقيت العالمي المنسق: تم إصدار
axios@1.14.1باستخدام حسابjasonsaaymanالمخترق. - 31 مارس، 01:00 بالتوقيت العالمي المنسق: تبع ذلك إصدار
axios@0.30.4بعد 39 دقيقة، مستهدفًا المشاريع المثبتة على فرع 0.x. - 31 مارس، حوالي 03:15 بالتوقيت العالمي المنسق: ألغت npm نشر إصداري Axios بعد تقارير المجتمع.
- 31 مارس، 04:26 بالتوقيت العالمي المنسق: نشرت npm ملفًا مؤقتًا لحفظ الأمان لـ
plain-crypto-jsلمنع إعادة النشر.
كيف تم اختراق الحساب
سيطر المهاجم على حساب npm الخاص بـ jasonsaayman، المطور الأساسي لـ Axios. قاموا بتغيير البريد الإلكتروني المسجل إلى ifstap@proton.me. الدليل الجنائي الرئيسي:
- تستخدم إصدارات Axios الشرعية GitHub Actions مع آلية OIDC Trusted Publisher من npm. افتقرت الإصدارات الضارة إلى ربط OIDC بالكامل.
- لم يظهر حقل
gitHeadفي الإصدارات المخترقة، مما يعني عدم وجود أي التزامات (commits) مقابلة على GitHub. - استخدم المهاجم رموز وصول npm مسروقة وطويلة الأجل للنشر يدويًا بدلاً من المرور عبر CI/CD.
هذا التمييز مهم. إذا كانت مؤسستك تنشر حزم npm، فإن غياب ربط OIDC وأصل CI/CD في أي إصدار يعد إشارة حمراء تستحق أتمتة الفحوصات لها.
تقنية حقن التبعية
إليكم ما جعل هذا الهجوم دقيقًا. لم يقم المهاجم بتعديل الكود المصدري لـ Axios. قاموا بتغيير سطر واحد في package.json لإضافة plain-crypto-js@^4.2.1 كاعتماد وقت التشغيل. لم يتم استيراد هذه الحزمة أبدًا في أي مكان في قاعدة كود Axios. لقد وجدت فقط لتشغيل خطاف postinstall الخاص بها أثناء npm install.
أكد التحليل الثنائي الدقة الجراحية: اختلف ملف package.json فقط بين الإصدار النظيف 1.14.0 والإصدار المخترق 1.14.1 عبر جميع الملفات الـ 86 في الحزمة.
ماذا تفعل الحمولة الخبيثة
آلية الإسقاط (dropper)
قام خطاف postinstall في plain-crypto-js بتنفيذ ملف مشوش بحجم 4.2 كيلوبايت يسمى setup.js. استخدم طبقتين من التشويش:
- الطبقة الأولى: تشفير XOR باستخدام مفتاح مشتق من السلسلة النصية
"OrDeR_7077" - الطبقة الثانية: تشفير Base64 مع عكس الأحرف
بمجرد فك التشفير، حددت أداة الإسقاط نظام التشغيل المضيف ونفذت حمولات خاصة بالمنصة.
مسارات الهجوم الخاصة بالمنصة
macOS:
Writes AppleScript to /tmp/6202033
Executes via osascript
Downloads payload to /Library/Caches/com.apple.act.mond
Windows:
Copies PowerShell to %PROGRAMDATA%\wt.exe (persistence artifact)
Executes VBScript dropper via cscript
Linux:
Downloads Python RAT to /tmp/ld.py
Executes via nohup python3
اتصلت الفروع الثلاثة بخادم للقيادة والتحكم (C2) مع نصوص POST خاصة بالمنصة:
- macOS:
packages.npm.org/product0 - Windows:
packages.npm.org/product1 - Linux:
packages.npm.org/product2
قدرات حصان طروادة (RAT)
يدعم حصان طروادة للوصول عن بعد المنشور ما يلي:
- تنفيذ أوامر shell عشوائية
- تعداد نظام الملفات وتهريبه
- إدراج العمليات وحقنها
- حقن ثنائي في الذاكرة (تنفيذ بدون ملفات)
- فترات إرسال إشارة كل 60 ثانية إلى بنية C2 التحتية
بعبارة بسيطة: يحصل المهاجم على تحكم عن بعد كامل بجهاز التطوير الخاص بك. يمكنهم قراءة ملفات .env الخاصة بك، وسرقة مفاتيح API الخاصة بك، ونسخ مفاتيح SSH الخاصة بك، وجمع رموز مزود الخدمة السحابية.
مكافحة الأدلة الجنائية: الحمولة ذاتية التنظيف
بعد التنفيذ، قامت أداة الإسقاط بثلاث خطوات تنظيف:
- حذفت ملف
setup.jsنفسه - حذفت ملف
package.jsonالضار - أعادت تسمية ملف
package.mdالمعد مسبقًا (الذي يشير إلى الإصدار 4.2.0) إلىpackage.json
خلق هذا طبقة خداع حيث سيبلغ npm list عن الإصدار 4.2.0 بدلاً من 4.2.1 الذي نفذ الحمولة. المطور الذي يفحص تبعياته بعد الواقع لن يرى أي خطأ.
من يقف وراء هذا الهجوم
نسبت مجموعة جوجل للاستخبارات التهديدية هجوم Axios إلى UNC1069، وهو فاعل تهديد مشتبه به من كوريا الشمالية. يُظهر برمجية macOS الخبيثة "تداخلًا كبيرًا" مع WAVESHAPER، وهو باب خلفي (backdoor) بلغة C++ تتبعته Mandiant في فبراير 2026.
تمتلك المجموعات الكورية الشمالية المدعومة من الدولة خبرة عميقة في هجمات سلسلة التوريد. لقد استخدموا تاريخيًا أدوات المطورين المخترقة لسرقة العملات المشفرة، وتتبع هذه العملية نفس النهج: اختراق أداة مطور شائعة الاستخدام للحصول على حق الوصول إلى بيانات الاعتماد والبنية التحتية السحابية عبر آلاف المنظمات.
مستوى التعقيد ملحوظ. يشير حقن التبعية على مرحلتين، ونشر RAT متعدد المنصات، والتنظيف المضاد للأدلة الجنائية، كلها إلى عملية ذات موارد جيدة. هذا ليس طفلًا هاكرًا يسقط عامل تعدين للعملات المشفرة. إنها عملية استخباراتية تستهدف محطات عمل المطورين.
كيفية التحقق مما إذا كنت متأثرًا
الخطوة 1: تحقق من إصدار Axios الخاص بك
قم بتشغيل هذا في كل مشروع يستخدم Axios:
npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
إذا أعاد هذا نتائج، فقد قام مشروعك بتثبيت إصدار مخترق.
الخطوة 2: تحقق من وجود التبعية الضارة
ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENTIALLY AFFECTED"
حتى لو قامت أداة الإسقاط بالتنظيف بعد نفسها، فإن وجود الدليل يؤكد أن الحمولة قد تم تنفيذها.
الخطوة 3: تحقق من وجود آثار RAT على نظامك
macOS:
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null
Linux:
ls -la /tmp/ld.py 2>/dev/null
Windows (PowerShell):
Test-Path "$env:PROGRAMDATA\wt.exe"
الخطوة 4: تحقق من مؤشرات الشبكة
قم بحظر وفحص الاتصالات إلى:
- نطاق C2:
sfrclak.com - عنوان IP الخاص بـ C2:
142.11.206.73 - عنوان URL الخاص بـ C2:
http://sfrclak.com:8000/6202033
الخطوة 5: تحقق من سجلات بناء CI/CD
راجع أي عمليات تشغيل لخط أنابيب CI/CD بين 31 مارس 00:21 بالتوقيت العالمي المنسق و 03:15 بالتوقيت العالمي المنسق. أي تشغيل لـ npm install أو npm ci خلال هذه الفترة الزمنية الذي قام بحل Axios كان يمكن أن ينفذ أداة الإسقاط في بيئة البناء الخاصة بك.
خطوات العلاج الفوري
إذا وجدت أي مؤشرات اختراق، فتعامل مع النظام المتأثر على أنه مخترق بالكامل. إليك قائمة الأولويات:
1. الرجوع إلى إصدار سابق من Axios فورًا
npm install axios@1.14.0
أو لفرع 0.x:
npm install axios@0.30.3
2. أضف تجاوزات الإصدار إلى ملف package.json الخاص بك
منع الحل المتعدي للإصدارات الضارة:
{
"overrides": {
"axios": "1.14.0"
}
}
لـ Yarn:
{
"resolutions": {
"axios": "1.14.0"
}
}
3. إزالة الحزمة الضارة
rm -rf node_modules/plain-crypto-js
4. قم بتغيير جميع بيانات الاعتماد
إذا تم تنفيذ أداة الإسقاط على جهازك، فافترض أن ما يلي قد تم اختراقه:
- رموز npm
- بيانات اعتماد AWS/GCP/Azure
- مفاتيح SSH
- رموز GitHub
- مفاتيح API في ملفات
.env - بيانات اعتماد قواعد البيانات
- أي أسرار مخزنة في متغيرات البيئة
قم بتغيير كل شيء. لا توجد طريقة لمعرفة ما تم تهريبه بواسطة حصان طروادة (RAT) خلال نافذته النشطة.
5. حظر C2 على مستوى الشبكة
أضف إلى ملف المضيفين أو قواعد جدار الحماية الخاص بك:
echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts
6. إذا تم العثور على آثار، أعد بناء الجهاز
يمكن لحصان طروادة (RAT) الذي يتمتع بتنفيذ shell والوصول إلى نظام الملفات تعديل أي شيء. إذا وجدت آثارًا من الخطوة 3، فلا تثق بالنظام. أعد البناء من حالة معروفة بأنها جيدة.
دفاعات طويلة المدى لفرق تطوير واجهات برمجة التطبيقات
استخدم ملفات القفل وثبت الإصدارات الدقيقة
استغل هجوم Axios نطاقات ^ semver. إذا كان ملف package.json الخاص بك يقول "axios": "^1.14.0"، فإن npm يحل الإصدار المتوافق الأحدث، والذي كان 1.14.1 خلال فترة الهجوم.
{
"dependencies": {
"axios": "1.14.0"
}
}
ثبت الإصدارات الدقيقة. قم دائمًا بتسجيل package-lock.json أو yarn.lock الخاص بك. قم بتشغيل npm ci بدلاً من npm install في CI/CD لفرض حل ملف القفل.
تعطيل نصوص postinstall في CI/CD
اعتمد الهجوم بأكمله على تنفيذ خطافات postinstall أثناء npm install. يمكنك تعطيل هذا:
npm ci --ignore-scripts
قد يعطل هذا بعض الحزم التي تحتاج إلى تجميع أصلي. اختبر بناءك أولاً، ثم اسمح بشكل انتقائي بالنصوص البرمجية للحزم التي تحتاجها باستخدام .npmrc:
ignore-scripts=true
تدقيق التبعيات بانتظام
npm audit
npx socket-security/cli audit
قم بتشغيل هذه الأوامر في CI/CD كبوابة. يجب أن تؤدي أي ثغرة أمنية حرجة أو عالية الخطورة إلى إيقاف عملية البناء.
قلل سطح تبعية عميل HTTP الخاص بك
هذا هو السؤال الأعمق الذي يطرحه هذا الهجوم: لماذا يعتمد سير عمل اختبار واجهة برمجة التطبيقات (API) على مكتبة HTTP خارجية يمكن اختراقها؟
يوفر Apidog عميل HTTP مدمج لاختبار واجهات برمجة التطبيقات، وتصحيح الأخطاء، والتوثيق. لا تحتاج إلى Axios، أو node-fetch، أو got في مكدس الاختبار الخاص بك. عميل HTTP هو جزء من المنصة، بدون تبعيات خارجية يمكن اختراقها.
لاختبار واجهات برمجة التطبيقات على وجه التحديد، فإن نقل طلبات HTTP الخاصة بك إلى Apidog يلغي سطح الهجوم بالكامل:
- اختبار واجهة برمجة التطبيقات: استخدم أداة بناء الاختبار المرئية في Apidog بدلاً من كتابة نصوص اختبار مبنية على Axios
- تصحيح أخطاء واجهة برمجة التطبيقات: استخدم مفتش الطلبات المدمج في Apidog بدلاً من كود عميل HTTP المخصص
- الخوادم الوهمية: استخدم ميزة Mock الذكية في Apidog بدلاً من بناء نقاط نهاية وهمية باستخدام Express + Axios
- تكامل CI/CD: استخدم Apidog CLI لاختبارات واجهة برمجة التطبيقات الآلية بدون تبعيات npm HTTP
جرب Apidog مجانًا لترى كيف يقلل إزالة تبعيات مكتبة HTTP من سير عمل واجهة برمجة التطبيقات لديك من مخاطر سلسلة التوريد الخاصة بك.
التحقق من أصل الحزمة
يدعم npm الآن أصل الحزم عبر Sigstore. تحقق مما إذا كانت الحزم التي تعتمد عليها تستخدم هذا:
npm audit signatures
افتقرت إصدارات Axios الضارة إلى أصل OIDC. تتضمن الإصدارات الشرعية من خطوط أنابيب CI/CD شهادة تشفيرية لأصل بنائها. إذا ظهر إصدار جديد بدون أصل، فتعامل معه بشك.
ماذا يعني هذا لنظام JavaScript البيئي
نموذج الثقة مكسور
يعتمد نموذج الثقة في npm على أمان حساب المطور. تمنح بيانات اعتماد مخترقة واحدة المهاجم السيطرة على حزمة يتم تثبيتها بواسطة 83 مليون مشروع كل أسبوع. تساعد المصادقة ثنائية العوامل، ولكن رموز الوصول طويلة الأجل لا يزال من الممكن سرقتها من بيئات التطوير المخترقة.
يناقش المجتمع عدة تغييرات هيكلية:
- النشر الإلزامي عبر OIDC: يتطلب من جميع الحزم التي تتجاوز حدًا معينًا من التنزيلات استخدام النشر المستند إلى CI/CD مع رموز OIDC بدلاً من بيانات الاعتماد طويلة الأجل.
- موافقة شخصين على الإصدار: يتطلب موافقة مطور ثانٍ على إصدارات الحزم الهامة.
- نطاق أذونات وقت التشغيل: تقييد ما يمكن أن تصل إليه نصوص
postinstall، على غرار نموذج أذونات Deno.
هجمات سلسلة التوريد لا تتباطأ
وقع هذا الهجوم في غضون أيام من حادثة RubyGems fracture والمخاوف المستمرة بشأن تبعيات PyPI. تتعرض سجلات الحزم عبر كل نظام بيئي للغات لهجوم مستمر. يحتاج مطورو واجهات برمجة التطبيقات إلى التفكير في شجرة تبعياتهم كسطح هجوم، وليس كراحة. لقد عبر نقاش Reddit عن الشعور جيدًا: "NPM هو أكبر نقطة ضعف في الإنترنت اليوم وسيظل يسبب كارثة عملاقة." سواء كنت تتفق مع المبالغة أم لا، فإن هجوم Axios يوضح أن نطاق الانفجار حقيقي.
مقارنة: أساليب تبعية عميل HTTP
| النهج | مخاطر سلسلة التوريد | عبء الصيانة | قدرة الاختبار |
|---|---|---|---|
| Axios + نصوص مخصصة | مرتفع (تبعية طرف ثالث) | مرتفع (إدارة الإصدارات) | إعداد يدوي مطلوب |
| استرجاع Node.js الأصلي | منخفض (مدمج في وقت التشغيل) | منخفض | ميزات اختبار محدودة |
| عميل Apidog المدمج | لا شيء (لا تبعية npm) | لا شيء (تدار بواسطة المنصة) | اختبار كامل، محاكاة، توثيق |
| نصوص curl/httpie | منخفض (أداة على مستوى النظام) | متوسط | أتمتة محدودة |
الأسئلة الشائعة
هل Axios آمن للاستخدام الآن؟
نعم. الإصداران 1.14.0 و 0.30.3 نظيفان. تم إلغاء نشر الإصدارات المخترقة (1.14.1 و 0.30.4) في غضون ثلاث ساعات تقريبًا. تحقق من الإصدار المثبت لديك باستخدام npm list axios وافحص ملف القفل الخاص بك للتأكد من أنك تستخدم إصدارًا آمنًا.
كيف أعرف إذا كان حصان طروادة (RAT) قد عمل على جهازي؟
تحقق من وجود آثار خاصة بالمنصة: /Library/Caches/com.apple.act.mond على macOS، /tmp/ld.py على Linux، أو %PROGRAMDATA%\wt.exe على Windows. تحقق أيضًا مما إذا كان node_modules/plain-crypto-js موجودًا في أي من مشاريعك. تقوم أداة الإسقاط بالتنظيف بعد نفسها، لذا فإن عدم وجود آثار لا يضمن سلامتك إذا قمت بتثبيت الإصدار المخترق.
هل يجب أن أتوقف عن استخدام Axios تمامًا؟
ليس بالضرورة. لا تزال Axios مكتبة جيدة الصيانة ولها سجل حافل. لكن هذا الهجوم يجب أن يدفعك إلى تقييم ما إذا كنت بحاجة إلى عميل HTTP خارجي على الإطلاق. يتضمن Node.js 18+ ميزة fetch الأصلية. لاختبار واجهات برمجة التطبيقات، توفر منصات مثل Apidog عملاء HTTP مدمجين يزيلون هذه التبعية.
كيف يمكنني منع هجمات سلسلة التوريد في مشاريعي؟
ثبت إصدارات التبعيات الدقيقة، وقم بتسجيل ملفات القفل، وشغل npm ci --ignore-scripts في CI/CD، ودقق التبعيات بانتظام، وتحقق من أصل الحزمة باستخدام npm audit signatures، وقلل شجرة تبعياتك. فكر في نقل سير عمل اختبار واجهات برمجة التطبيقات إلى منصات متكاملة لا تعتمد على حزم npm لاتصالات HTTP.
هل كان هذا الهجوم مرتبطًا بتسريب كود Claude Code المصدري؟
وقع الحدثان في نفس اليوم (31 مارس 2026)، لكنهما غير مرتبطان. كان هجوم Axios اختراقًا متعمدًا لسلسلة التوريد من قبل فاعل تهديد ترعاه دولة. نتج تسريب كود Claude Code عن خطأ في أداة بناء Bun أدى إلى شحن خرائط المصدر في بيئة الإنتاج. وقد أدى التوقيت المتزامن إلى تغذية النقاش حول أمان سجل npm بشكل عام.
من يقف وراء هجوم Axios؟
نسبت مجموعة جوجل للاستخبارات التهديدية الهجوم إلى UNC1069، وهو فاعل تهديد مشتبه به من كوريا الشمالية. تشترك البرمجية الخبيثة لنظام macOS في تداخل كبير مع WAVESHAPER، وهو باب خلفي تتبعته Mandiant. تتمتع المجموعات الكورية الشمالية بخبرة واسعة في هجمات سلسلة التوريد، وتستهدف عادةً بيانات اعتماد المطورين وبنية العملات المشفرة التحتية.
كم عدد المطورين الذين تأثروا؟
ظلت الإصدارات الضارة نشطة لمدة تتراوح بين ساعتين إلى ثلاث ساعات تقريبًا. مع 83 مليون عملية تنزيل أسبوعية، فإن التعرض المحتمل كبير. لم ينشر npm أرقام تأثير رسمية. أكد الكشف في وقت التشغيل من StepSecurity أن أداة الإسقاط اتصلت بـ C2 في غضون 1.1 ثانية من بدء npm install، قبل اكتمال حل التبعية.
هل يمكن لـ Apidog المساعدة في منع هجمات سلسلة التوريد؟
يلغي Apidog أحد نواقل الهجوم الرئيسية من خلال توفير عميل HTTP مدمج لاختبار واجهات برمجة التطبيقات، وتصحيح الأخطاء، والتوثيق. لا تحتاج إلى تثبيت Axios، أو node-fetch، أو مكتبات HTTP الأخرى في سير عمل الاختبار الخاص بك. هذا يقلل من سطح تبعية npm ويزيل خطر تأثير حزم عميل HTTP المخترقة على عملية تطوير واجهات برمجة التطبيقات الخاصة بك.
النقاط الرئيسية
- هجوم سلسلة توريد Axios اخترق أكثر من 83 مليون عملية تنزيل أسبوعية عبر حساب مطور واحد مسروق
- يستهدف حصان طروادة (RAT) جميع المنصات (macOS و Windows و Linux) ويسرق بيانات الاعتماد ومفاتيح SSH ورموز السحابة
- افحص أنظمتك فورًا باستخدام خطوات الكشف المذكورة أعلاه
- ثبت إصدارات التبعيات الدقيقة وعطل نصوص postinstall في CI/CD
- قلل من سطح تبعية عميل HTTP الخاص بك باستخدام أدوات مدمجة مثل Apidog لاختبار واجهة برمجة التطبيقات
- أمان سجل الحزم هو مشكلة منهجية تؤثر على npm و PyPI و RubyGems
هجوم Axios هو دعوة للاستيقاظ. كل تبعية في node_modules الخاص بك هي قرار ثقة. تأكد من أنك تتخذ هذه القرارات عن قصد، وليس بشكل افتراضي.
