حصلت Axios على باب خلفي: حزم 5 npm لاستبدالها بواجهات برمجة تطبيقات HTTP
قام ممثل مرتبط بكوريا الشمالية بشحن RAT داخل axios 1.14.1 إلى 70 مليون عملية تثبيت أسبوعية. خمس حزم npm ذات غرض واحد يمكنك حذفها اليوم واستبدالها باستدعاءات HTTP API.
في 31 مارس 2026، نشر مشغل مرتبط بكوريا الشمالية نسختين خلفيتين من
axios إلى npm. يتم شحن الإصدارين 1.14.1 و0.30.4 مع تسمية تبعية ما بعد التثبيت
plain-crypto-js التي سحبت غرسة RAT الخاصة بالمنصة من
sfrclak[.]com:8000. كانت الحزم حية لمدة ثلاث ساعات. أكسيوس يحصل على 70 مليونًا
التنزيلات الأسبوعية. قم بالحسابات.
كل وظيفة CI تم تشغيلها npm install خلال تلك النافذة، تم شحن حمولة إلى بنيتها
بيئة. تم تسريب الأسرار الموجودة في متغيرات البيئة؛ اعتدت على رموز GitHub المميزة
إصدارات متابعة النعناع؛ تشغيل أجهزة الكمبيوتر المحمولة المطور npm install حصلت محليا على RAT.
لقد تجاوز الحادث المصادقة الثنائية لأن جهاز المشرف قد تم اختراقه بالفعل من خلال
حملة الهندسة الاجتماعية المستهدفة. 2FA على حساب npm لا يفعل شيئًا عندما يمتلكه المهاجم
المحطة التي تعمل npm publish.
لا يمكنك القضاء على هذا النوع من الهجوم، لكن يمكنك تقليص نصف قطر انفجارك. كل حزمة npm أن يفعل شيئا واحدا صغيرا. التحقق من صحة البريد الإلكتروني، وتحليل رقم الهاتف، وتجريد HTML، وإنشاء رمز الاستجابة السريعة، وتوقيع JWT؛ هي حزمة يمكنك حذفها واستبدالها باستدعاء HTTPS لواجهة برمجة التطبيقات (API) الخاصة بك التحكم عن طريق مفتاح قابل للتدوير. يتم تشغيل الحزمة المخترقة قبل أن تتمكن من الرد. مفتاح API مخترق يتوقف عن العمل في ثوان.
فيما يلي خمس حزم npm يمكنك استبدالها هذا الأسبوع، بواجهة برمجة تطبيقات HTTP التي تفعل الشيء نفسه، بالإضافة إلى حارس CI الذي يمنع خطافات ما بعد التثبيت الجديدة من الهبوط في ملف القفل الخاص بك.
قم بمراجعة سطح تبعية npm الحالي لديك
قبل أن تحذف أي شيء، تعرف على ما لديك. تمر هذه القشرة بتبعيات إنتاج الأسطح باستخدام خطافات التثبيت والتحقق مما إذا كانت إصدارات axios المسمومة موجودة في أي مكان في شجرتك:
إذا ظهر أي من إصداري axios في ملف القفل الخاص بك، فقم بتدوير كل سر في الجهاز أو CI المتأثر كان العمل الوصول إلى. ليس "التحقق من السجلات". تناوب. لنفترض أن التسرب قد حدث خلال الـ 180 دقيقة بين النشر والحذف الأسرار التي تسربت لا يمكن كشفها.
تنسب خدمة Google Threat Intelligence العملية إلى UNC1069، وهو نفس الممثل الذي قام بالتشغيل
في وقت سابق WAVESHAPER الحملات. يستهدف كتاب قواعد اللعبة الخاص بهم أجهزة الكمبيوتر المحمولة المشرفة عبر
التصيد، ثم يركب بيانات اعتماد المشرف للنشر. دفاعك يجب أن يفترض ذلك
يوجد مشرف واحد على الأقل لنقطة متعدية واحدة على الأقل على بعد عملية تصيد واحدة من أن تكون عملية زرع
نظام التسليم.
الاستبدال 1: مدقق البريد الإلكتروني → /v1/email/validate
validator, email-validator, deep-email-validator، و
disposable-email-domains تظهر في حصة كبيرة من تدفقات الاشتراك. يضيفون معًا
ما يقرب من نصف ميغابايت من وزن التثبيت، والأشجار المتعدية الخاصة بهم، وقائمة محفوظة من
المجالات التي يمكن التخلص منها والتي أصبحت قديمة خلال أسابيع.
تتحقق واجهة برمجة التطبيقات (API) من بناء الجملة، وسجلات DNS MX، وقائمة النطاقات المباشرة التي يمكن التخلص منها في مكالمة واحدة. مبادلة تبدو الحزمتان كما يلي:
تفقد القدرة على التحقق من صحة دون اتصال. يمكنك الحصول على فحص MX محفوظ، وقائمة حية يمكن التخلص منها، وصفر حزم مع خطافات ما بعد التثبيت الموجودة في شجرتك. للتسجيل، والخروج، وخطاف الويب حقول البريد الإلكتروني، تلك المقايضة تفضل واجهة برمجة التطبيقات.
الاستبدال 2: libphonenumber-js → /v1/phone
libphonenumber-js هو منفذ جوجل libphonenumber. ويزن 147 كيلو بايت
مصغر. ينخفض حجم الإصدار "المصغر" إلى 79 كيلو بايت ولكنه يفقد البيانات التعريفية لمعظم البلدان. البيانات الوصفية الكاملة
الحزمة تعيد الوزن إلى 2 ميجابايت بدون تعبأة. هذا موجود على Cloudflare Workers أو Lambda البارد
الكمون الحقيقي الذي تدفعه عند كل استدعاء.
تقوم إحدى عمليات POST بإرجاع تنسيق E.164 والبلد والرقم الوطني ونوع الخط والمنطقة الزمنية. إذا كان الرقم
غير صالح، data.valid يكون false والباقي فارغ. جانب الخادم الخاص بك
يستدعي تدفق الاشتراك هذا بين "قراءة النموذج" و"الكتابة إلى قاعدة البيانات". توجد رحلة ذهابًا وإيابًا تبلغ 60 مللي ثانية لواجهة برمجة التطبيقات (API).
داخل نافذة الكتابة الموجودة في قاعدة البيانات.
الاستبدال 3: رمز الاستجابة السريعة → /v1/qr/generate
ال qrcode حزمة npm نفسها جيدة: 34 كيلو بايت، بدون ربط ما بعد التثبيت. ما ليس على ما يرام هو
ال canvas الاعتماد على الأقران الذي تدفعك إليه نصف البرامج التعليمية، وهو ما يلتف
الكود الأصلي، ويقوم بتثبيت Node-gyp، ولديه عشر سنوات من التهديدات الشائعة عبر سلسلة أدوات البناء الخاصة به. كل مواطن
npm dep هو خط سلسلة التوريد.
الاستجابة هي SVG الخام. قم بتوصيله إلى ملف، أو قم بتعبئته في قالب فاتورة، أو اجعله مضمّنًا
في مكون رد فعل مع dangerouslySetInnerHTML. لا توجد وحدات أصلية، لا البناء
سلسلة الأدوات، لا توجد شجرة متعدية.
الاستبدال 4: jsonwebtoken → /v1/jwt/generate و /v1/jwt/decode
jsonwebtoken هي واحدة من مكتبات JWT الأكثر نسخًا في Node. وهي المكتبة أيضًا
معظم الناس يخطئون في التهيئة: خوارزمية خاطئة، مطالبة جمهور مفقودة، عدم انتهاء الصلاحية. خوارزمية خاطئة
التحقق من الاتصال بالإضافة إلى الرأس الذي يتحكم فيه المهاجم يعيد تقديم JWT الذي يعود إلى حقبة 2015 none
وهن. تفرض واجهة برمجة التطبيقات (API) قوائم بيضاء للخوارزمية وترفض الرموز المميزة غير الموقعة عند نقطة النهاية:
استخدم هذا للرموز المميزة قصيرة العمر الصادرة عن خدمة الواجهة الخلفية: روابط إعادة تعيين كلمة المرور، لمرة واحدة تنزيل عناوين URL والرموز المميزة لحامل خدمة إلى خدمة. لا تستخدم خدمة خارجية لجلسة المستخدم JWTs على المسار السريع لكل طلب مصادق عليه؛ بالنسبة لهؤلاء، احتفظ بمكتبة تم التحقق منها قيد التنفيذ وقفل الخوارزمية.
الاستبدال 5: تحويل html إلى نص → /v1/html-to-text/convert
html-to-text, sanitize-html, node-html-parser، و لهم
الأصدقاء موجودون لأن كل واجهة برمجة تطبيقات تقبل محتوى المستخدم تحتاج في النهاية إلى تجريد HTML من النص العادي
المعاينات أو ملخصات البريد الإلكتروني أو فهرسة البحث. يبلغ وزنها الإجمالي 500 كيلو بايت إلى 1.2 ميجابايت؛ يسحبون
parse5 أو htmlparser2 من خلال الباب، ولكل منها الخاصة بهم
سطح المحافظ.
للحصول على مخرجات أكثر ثراءً، /v1/html-to-markdown إرجاع GitHub-Flavored Markdown، و
/v1/html-sanitize إرجاع HTML منظّفًا بقائمة مسموح بها قابلة للتكوين. اختر واحدا
يطابق الطريقة التي يريد بها المستهلك النهائي تخزين المحتوى.
أضف حارس CI الذي يمنع خطافات ما بعد التثبيت الجديدة
حذف الحزم هو عمل لمرة واحدة. البقاء العجاف مستمر. فشل فحص إجراءات GitHub
العلاقات العامة إذا كان تحديث ملف القفل يقدم ملفًا جديدًا postinstall أو preinstall
ربط في أي مكان في الشجرة:
الشيك رخيص، ويعمل على كل العلاقات العامة، ويفرض مراجعة بشرية قبل وصول أي نص جديد.
إقرانها مع npm config set ignore-scripts true على CI والقوائم المسموح بها الصريحة لـ
الحزم التي تعرفها تحتاج esbuild-نمط التثبيت اللاحق (TypeScript، Puppeteer، bcrypt).
ما الذي تخليت عنه ومتى تعيده
إن نقل التحقق من الصحة إلى مكالمة HTTP له تكاليف حقيقية. أنت تقوم بتداولها مقابل تبعية أصغر السطح:
| التنازل عن ميزة ممن أجل الحصول على أخرى | حزمة npm | واجهة برمجة تطبيقات HTTP |
|---|---|---|
| كمون | ميكروثانية | 50 إلى 150 مللي ثانية من الحافة |
| استخدام دون اتصال | نعم | لا |
| تثبيت المخاطر | يقوم Postinstall بتشغيل تعليمات برمجية عشوائية | لا توجد خطوة التثبيت |
| إبطال | إعادة البناء، إعادة النشر، إعادة النشر | قم بتدوير مفتاح API في ثوانٍ |
| مسار التدقيق | لا شيء افتراضيا | طلب سجل لكل مكالمة |
| الانجراف الإصدار | تثبيت أو تجديد | رأس الإصدار، عقد مستقر |
الجواب الصحيح هو "كلاهما، بقصد". احتفظ بمكتبات المسار الحرج قيد التشغيل (جلسة JWT التحقق، أساسيات التشفير، البرمجيات الوسيطة للمصادقة). حرك الذيل الطويل للأدوات المساعدة ذات الغرض الواحد من ملف القفل الخاص بك وإلى نقطة نهاية HTTPS الموقعة التي يمكنك إبطالها.
الوجبات السريعة الرئيسية
- افترض أن المشرف على عملية التصيد على بعد مسافة واحدة من عملية الزرع. حصلت Axios على 70 مليونًا أسبوعيًا التنزيلات ولا يزال حساب npm الخاص به معرضًا للخطر من خلال هجوم الهندسة الاجتماعية على ملف كمبيوتر محمول شخصي.
-
تدقيق خطافات ما بعد التثبيت اليوم. أي إقلاع يقوم بتشغيل تعليمات برمجية عشوائية أثناء
npm installهو التماس سلسلة التوريد. قم بجردها، ثم احذفها أو أضفها إلى القائمة المسموح بها. - احذف الحزم ذات الغرض الواحد أولاً. البريد الإلكتروني، الهاتف، QR، توقيع JWT، HTML تحويل؛ يحتوي كل منها على بديل HTTP من سطر واحد مع مفتاح قابل للإلغاء.
- تدوير، لا تحقق، بعد التعرض. إذا سقطت محاور مسمومة في جهازك الشجرة، قم بتدوير كل سر لمسته البيئة المتأثرة. يحدث الترشيح في دقائق.
-
إضافة حارس CI. بلوك جديد
postinstallالسنانير من الهبوط في الخاص بك lockfile دون مراجعة الإنسان. كان من الممكن أن يؤدي حل وسط Axios إلى تعثر هذا الحارس.
يوفر Botoi بدائل HTTP للحزم الخمس المذكورة أعلاه وحوالي 145 حزمة أخرى ذات غرض واحد الأدوات المساعدة: التجزئة، وإنشاء UUID، واختبار regex، وتحويل الطابع الزمني، والتحقق من صحة مخطط JSON، إنشاء الباركود وعرض PDF والباقي. مفتاح API واحد، 5 متطلبات/دقيقة على الطبقة المجانية، لا تثبيت السنانير. تصفح مستندات تفاعلية أو سلك خادم MCP في الخاص بك وكيل ترميز الذكاء الاصطناعي لاستدعاء نفس نقاط النهاية من Claude Code أو Cursor دون مغادرة المحرر.
FAQ
- ماذا حدث لحزمة axios npm في مارس 2026؟
- في الفترة ما بين 31 مارس 2026، الساعة 00:21 والساعة 03:20 بالتوقيت العالمي، استخدم أحد المهاجمين حساب مشرف مخترق لنشر axios 1.14.1 و0.30.4 مع تبعية ضارة بعد التثبيت تسمى plain-crypto-js. قامت التبعية بتنزيل عمليات زرع RAT الخاصة بالمنصة من sfrclak[.]com:8000. تنسب خدمة Google Threat Intelligence العملية إلى UNC1069، وهو ممثل مرتبط بكوريا الشمالية. كانت الحزم نشطة لمدة ثلاث ساعات تقريبًا، وهي فترة كافية للوصول إلى ذاكرة التخزين المؤقت لـ CI وأجهزة الكمبيوتر المحمولة الخاصة بالمطورين في جميع أنحاء العالم.
- هل يؤدي استبدال حزم npm بواجهات برمجة تطبيقات HTTP إلى تقليل المخاطر؟
- إنه يقلص سطح الهجوم بطريقتين. أولاً، تقوم بإزالة رابط ما بعد التثبيت الذي يقوم بتشغيل تعليمات برمجية عشوائية على خادم البناء الخاص بك. ثانيًا، تقوم بنقل منطق التحقق من جهاز الكمبيوتر المحمول الخاص بالمطور إلى نقطة نهاية موقعة تستخدم HTTPS فقط والتي تتحكم فيها من خلال تدوير مفتاح واجهة برمجة التطبيقات (API). يتم تشغيل الطرد المسموم قبل أن تتمكن من الرد؛ يتوقف مفتاح API الذي تم إبطاله عن العمل خلال ثوانٍ.
- هل استدعاء HTTP أبطأ من حزمة npm المحلية؟
- لمكالمة واحدة بناء على طلب بارد، نعم؛ يتراوح زمن الاستجابة النموذجي لواجهة برمجة تطبيقات botoi من 50 إلى 150 مللي ثانية من عميل في أمريكا الشمالية إلى حافة Cloudflare. بالنسبة لمعظم التدفقات من جانب الخادم (الاشتراك، والخروج، ومعالجة خطاف الويب) التي تتداخل مع مكالمات قاعدة البيانات التي تجريها بالفعل، فإنها لا تضيف أي شيء قابل للقياس. بالنسبة للمسارات عالية الإنتاجية، قم بتخزين الاستجابة مؤقتًا عن طريق تجزئة الإدخال لنفس ملف تعريف زمن الوصول كحزمة محلية.
- كيف يمكنني تدقيق الريبو الخاص بي بحثًا عن حزم npm المحفوفة بالمخاطر في الوقت الحالي؟
- قم بتشغيل npm Audit --omit=dev لتوضيح تبعيات الإنتاج، ثم قم بفحص أي حزمة مع ربط ما بعد التثبيت أو التثبيت المسبق باستخدام البرامج النصية npm ls وnpm view {name}. تعد الحزم التي تقوم بشيء واحد صغير (التحقق من البريد الإلكتروني، وإنشاء QR، وتوقيع JWT، وتحليل الهاتف، وتجريد HTML) مرشحة قوية للانتقال إلى مكالمة HTTP. تعد الحزم التي تقوم بالتشفير أو جلب محتوى الشبكة بشكل نشط هي أهداف التدقيق ذات الأولوية القصوى.
- ماذا لو تم اختراق موفر HTTP API بدلاً من npm؟
- نصف قطر الانفجار أصغر والكشف أسرع. يمكنك التحكم في مفتاح API ويمكنك إبطاله في مكالمة واحدة. يعرض مزود الخدمة الخاص بك صفحة الحالة، وRSS للحادث، والاستجابات الموقعة عبر HTTPS. قارن ذلك بحزمة تعمل داخل الإصدار الخاص بك حيث يتطلب الكشف قراءة كل ربط ما بعد التثبيت في شجرة التبعية المتعدية لديك. ولا يوجد أي خطر. أحدهما يمنحك الرافعات، والآخر لا يفعل ذلك.
ابدأ البناء مع botoi
أكثر من 150 نقطة نهاية API للبحث ومعالجة النصوص وتوليد الصور وأدوات المطورين. باقة مجانية، بدون بطاقة ائتمان.