ملخص سريع
ارتفعت هجمات سلسلة توريد NPM إلى أكثر من 3000 حزمة ضارة في عام 2024 وحده، وأثبت اختراق Axios في مارس 2026 أن حتى الحزم العشرة الأولى ليست آمنة. يغطي هذا الدليل كل طبقة دفاع يحتاجها مطورو واجهة برمجة التطبيقات: فرض ملفات القفل (lockfile enforcement)، وحظر نصوص ما بعد التثبيت (postinstall script blocking)، والتحقق من المصدر (provenance verification)، وأدوات التحليل السلوكي (behavioral analysis tools)، والخيارات المعمارية التي تقلل من سطح الهجوم الخاص بك.
مقدمة
لم يكن هجوم سلسلة توريد Axios في 31 مارس 2026 أول اختراق لـ npm. ولن يكون الأخير. ولكن مع 83 مليون تنزيل أسبوعي ونشر أداة الوصول عن بعد (RAT) عبر حساب مشرف واحد تم اختراقه، كان هذا أقوى إنذار تلقاه نظام JavaScript البيئي.
إليك ما يجعل هذا مختلفًا عن نصيحة "تحديث تبعياتك" المعتادة: تجاوز هجوم Axios كل دفاع تقليدي. لم يكن الكود الخبيث موجودًا في Axios نفسها. بل تم حقنه عبر تبعية شبحية أطلقت خطاف ما بعد التثبيت (postinstall hook). لم تساعد ملفات القفل إذا قمت بتشغيل npm install أثناء فترة الهجوم. ولم يساعد تثبيت الإصدار إذا لم تكن قد ثبته بعد.
يتعرض مطورو واجهة برمجة التطبيقات بشكل خاص. فسكربتات الاختبار، وخطوط أنابيب CI/CD، والخوادم الوهمية (mock servers)، وعملاء HTTP كلها تسحب من npm. يمكن لحزمة واحدة مخترقة في مجموعة أدواتك أن تسرب مفاتيح API وبيانات اعتماد قاعدة البيانات ورموز السحابة من جهاز التطوير الخاص بك.
يغطي هذا الدليل سبع طبقات من الحماية، من النظافة الأساسية لملفات القفل إلى التحليل السلوكي المتقدم.
الطبقة 1: فرض ملفات القفل
لماذا تهم ملفات القفل
يسجل ملف القفل (lockfile) الإصدار الدقيق لكل حزمة وتبعيتها الانتقالية في وقت التثبيت. بدون ملف قفل، يحل npm install أحدث إصدار يطابق نطاق semver الخاص بك. إذا كان package.json الخاص بك يقول "axios": "^1.14.0" ووجد إصدار خبيث 1.14.1 في السجل، فستحصل على الإصدار الخبيث.
القواعد
التزم دائمًا بملف القفل الخاص بك. سواء كان package-lock.json (npm)، أو yarn.lock (Yarn)، أو pnpm-lock.yaml (pnpm)، أو bun.lock (Bun)، فإنه ينتمي إلى التحكم في الإصدار.
استخدم التثبيتات المجمدة في CI/CD. لا تقم أبدًا بتشغيل npm install في بيئات التشغيل الآلي. استخدم ما يعادل ملف القفل المجمد:
# npm
npm ci
# yarn
yarn install --frozen-lockfile
# pnpm
pnpm install --frozen-lockfile
# bun
bun install --frozen-lockfile
يحذف npm ci مجلد node_modules ويثبت بشكل صارم من ملف القفل. إذا لم يتطابق ملف القفل مع package.json، فإنه يفشل. هذا يمنع مفاجآت الدقة.
راجع فروقات ملف القفل في طلبات السحب (pull requests). عندما يقوم طلب سحب بتعديل package-lock.json، تحقق مما تغير. أي تبعيات جديدة، أو زيادات في الإصدار، أو تغييرات في عنوان URL للسجل تستحق التدقيق. يمكن لأدوات آلية مثل Socket.dev وضع علامة على تغييرات ملف القفل المشبوهة في مراجعات طلبات السحب.
فجوة ملف القفل
تحمي ملفات القفل من حل الإصدار غير المتوقع، لكنها لا تحمي من التثبيت الأول. إذا قمت بتهيئة مشروع أو إضافة تبعية جديدة أثناء فترة الهجوم، فسيتم قفل الإصدار الخبيث. لهذا السبب تعد ملفات القفل هي الطبقة الأولى، وليست الطبقة الوحيدة.
الطبقة 2: تعطيل سكربتات ما بعد التثبيت
نقطة الهجوم الأساسية
استخدم هجوم Axios، وهجوم ua-parser-js، وهجوم event-stream، وعشرات الهجمات الأخرى نفس الآلية: سكربت postinstall يقوم بتشغيل تعليمات برمجية عشوائية أثناء npm install. يتم تنفيذ هذا الخطاف قبل تشغيل تعليمات تطبيقك البرمجية، وقبل مراجعة الحزمة، وقبل أن تتمكن أي أداة أمان في وقت التشغيل من التدخل.
حظر السكربتات عالميًا
أضف إلى ملف .npmrc الخاص بك:
ignore-scripts=true
أو قم بتعيينه عبر سطر الأوامر (CLI):
npm config set ignore-scripts true
يمنع هذا جميع سكربتات دورة الحياة (preinstall، install، postinstall، prepare) من التشغيل أثناء تثبيت الحزمة.
التعامل مع الحزم التي تحتاج إلى سكربتات
تتطلب بعض الحزم سكربتات ما بعد التثبيت للتجميع الأصلي (مثل bcrypt، sharp، أو sqlite3). لديك خياران:
الخيار 1: تشغيل السكربتات بشكل انتقائي بعد التثبيت
npm ci --ignore-scripts
npm rebuild bcrypt sharp
الخيار 2: استخدام قائمة السماح (npm 10+)
أنشئ ملف .scriptsrc.json يسمح فقط للحزم الموثوقة بتشغيل السكربتات:
{
"allowScripts": {
"bcrypt": true,
"sharp": true
}
}
الخيار 3: استخدام الثنائيات المسبقة التجميع (prebuilt binaries)
تقدم العديد من الحزم التي كانت تحتاج سابقًا إلى تجميع أصلي الآن ثنائيات مسبقة التجميع. sharp، على سبيل المثال، يشحن ثنائيات مسبقة التجميع لمعظم المنصات، مما يلغي الحاجة إلى تجميع ما بعد التثبيت. تحقق من تبعياتك؛ قد تحتاج إلى استثناءات أقل للسكربتات مما تعتقد.
تحذير PackageGate
في يناير 2026، كشف الباحثون عن ستة ثغرات أمنية من نوع "صفر يوم" تسمى "PackageGate" والتي تؤثر على npm و pnpm و vlt و Bun. أحد النتائج: يمكن أن تحمل التبعيات المستندة إلى Git ملفات تهيئة تمكن من تنفيذ التعليمات البرمجية حتى عندما تكون سكربتات دورة الحياة معطلة. إذا كان ملف package.json الخاص بك يشير إلى عناوين URL لـ Git للتبعيات، فإن ignore-scripts وحده لا يكفي. قم بتثبيت هذه التبعيات على تجزئات التزام محددة وقم بمراجعة محتويات المستودع.
الطبقة 3: تثبيت الإصدارات الدقيقة
توقف عن استخدام نطاقات SemVer
السلوك الافتراضي لـ npm install --save يضيف الحزم مع بادئة علامة الإقحام:
{
"axios": "^1.14.0"
}
تعني علامة ^ "متوافق مع 1.14.0"، والتي تحل إلى أحدث إصدار 1.x.x. خلال هجوم Axios، كان هذا يعني الحل إلى 1.14.1.
قم بتثبيت الإصدارات الدقيقة بدلاً من ذلك:
{
"axios": "1.14.0"
}
قم بتكوين npm لحفظ الإصدارات الدقيقة افتراضيًا:
# .npmrc
save-exact=true
save-prefix=''
استخدم التجاوزات (overrides) للتبعيات العابرة
تبعياتك المباشرة لها تبعيات خاصة بها. إذا تم اختراق تبعية عابرة، فإن تثبيت تبعيتك المباشرة لا يساعد. استخدم التجاوزات للتحكم في حل التبعيات العابرة:
{
"overrides": {
"axios": "1.14.0",
"plain-crypto-js": "npm:empty-npm-package@1.0.0"
}
}
بالنسبة لـ Yarn:
{
"resolutions": {
"axios": "1.14.0"
}
}
بالنسبة لـ pnpm:
{
"pnpm": {
"overrides": {
"axios": "1.14.0"
}
}
}
المقايضة
التثبيت الدقيق يعني أنك لن تحصل على تحديثات التصحيح التلقائية. ستحتاج إلى تحديث الإصدارات يدويًا، مما يخلق عبئًا إضافيًا للصيانة. المقايضة مقصودة: أنت تختار التحديثات المتحكم بها بدلاً من التحديثات التلقائية. بالنسبة للمشاريع الحساسة أمنيًا، تستحق هذه المقايضة العناء.
الطبقة 4: التحقق من مصدر الحزمة
ماذا يعني المصدر
تربط مصادقة مصدر npm الحزمة المنشورة بشفرة مصدرها وبيئة بنائها باستخدام توقيعات Sigstore المسجلة في سجل شفافية عام. عندما يتم نشر حزمة من خط أنابيب CI/CD مع تمكين المصدر، تتضمن الحزمة دليلاً تشفيرياً على:
- المستودع المصدر الذي تم بناؤه منه
- نظام CI/CD الذي بناه
- الالتزام الذي أطلق البناء
كيفية التحقق من المصدر
npm audit signatures
يتحقق هذا من أن الحزم المثبتة لديها شهادات مصدر صالحة. الحزم المنشورة يدويًا من جهاز مطور لن يكون لديها مصدر.
افتقرت إصدارات Axios الخبيثة إلى ربط مصدر OIDC ولم يكن لديها التزامات GitHub مقابلة. لو كانت الفحص التلقائي للمصدر ممارسة قياسية، لكان الهجوم قد رفع الأعلام الحمراء على الفور.
تمكين المصدر لحزمك الخاصة
إذا كنت تنشر حزم npm، فقم بتمكين المصدر في CI/CD الخاص بك:
# مثال GitHub Actions
- uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org
- run: npm publish --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
أضف إلى ملف .npmrc الخاص بك:
provenance=true
القيود
المصدر اختياري. معظم حزم npm لا تحتوي عليه بعد. والمصدر يثبت فقط مكان بناء الحزمة. لا يثبت أن الكود المصدري آمن. يمكن لخط أنابيب CI/CD مخترق نشر حزمة ضارة بمصدر صالح.
الطبقة 5: استخدام أدوات التحليل السلوكي
ما وراء فحص الثغرات الأمنية
تتحقق الأدوات التقليدية مثل npm audit وSnyk من قواعد بيانات الثغرات الأمنية المعروفة (CVEs). إنها تكتشف المشكلات المبلغ عنها ولكنها تفوت هجمات "صفر يوم". لم يكن اختراق Axios في أي قاعدة بيانات CVEs عندما تم نشره.
تفحص أدوات التحليل السلوكي ما تفعله الحزم، وليس ما تم الإبلاغ عنه عنها.
Socket.dev
Socket يحلل سلوك الحزمة أثناء التثبيت ووقت التشغيل. يقوم بوضع علامة على:
- طلبات الشبكة أثناء التثبيت
- الوصول إلى نظام الملفات خارج دليل الحزمة
- تنفيذ أوامر Shell
- جمع متغيرات البيئة
- أنماط التعليمات البرمجية الغامضة

عند الدمج مع GitHub، يعلق Socket على طلبات السحب عندما تُظهر التبعيات الجديدة سلوكيات مشبوهة. كانت تبعية plain-crypto-js لهجوم Axios قد أطلقت تنبيهات Socket متعددة: تعليمات برمجية غامضة، طلبات شبكة أثناء ما بعد التثبيت، وكتابات نظام الملفات خارج دليل الحزمة.
# تثبيت Socket CLI
npm install -g @socketsecurity/cli
# فحص مشروعك
socket scan
Snyk
Snyk يوفر إدارة الثغرات الأمنية مع درجات المخاطر، وبيانات نضج الاستغلال، وإرشادات الإصلاح. إنه أقوى للثغرات الأمنية المعروفة ولكنه أضعف في اكتشاف السلوكيات غير المعروفة (zero-day).
# تثبيت Snyk CLI
npm install -g snyk
# اختبار مشروعك
snyk test

نهج متعدد الطبقات
استخدم كليهما. يلتقط Socket الشذوذات السلوكية التي يفوتها Snyk. يلتقط Snyk الثغرات الأمنية المعروفة بسياق أغنى مما يوفره Socket. أضف npm audit كأساس:
# الأساس
npm audit
# التحليل السلوكي
socket scan
# إدارة الثغرات الأمنية
snyk test
قم بتشغيل الثلاثة جميعًا في CI/CD كبوابات. يجب أن يؤدي أي اكتشاف حرج إلى منع البناء.
الطبقة 6: تقليل سطح التبعية الخاص بك
السؤال الأعمق
كل حزمة في مجلد node_modules الخاص بك هي قرار ثقة. لقد اخترق هجوم Axios حزمة يتم تنزيلها 83 مليون مرة أسبوعيًا. يحتوي مشروع Node.js المتوسط على المئات من التبعيات الانتقالية. كل واحدة منها هي نقطة هجوم محتملة.
الدفاع الأكثر فعالية هو وجود عدد أقل من التبعيات للدفاع عنها.
تدقيق شجرة التبعية الخاصة بك
# عد إجمالي تبعياتك
npm ls --all | wc -l
# تحقق من التكرارات
npm ls --all | sort | uniq -c | sort -rn | head -20
اطرح هذه الأسئلة لكل تبعية:
- هل توفر اللغة أو وقت التشغيل هذا بشكل أساسي؟ يتضمن Node.js 18+
fetchوcryptoوURLوFormDataوالعديد من الأدوات التي كانت تتطلب حزمًا في السابق. - هل تجلب هذه التبعية عشرات من التبعيات الانتقالية؟ حزمة واحدة تحتوي على 50 تبعية فرعية تضاعف سطح هجومك 50 مرة.
- هل يمكنك تضمين هذه التبعية (vendor this)؟ بالنسبة لحزم الأدوات الصغيرة، يزيل نسخ المصدر إلى مشروعك مخاطر سلسلة التوريد تمامًا.
بدائل أصلية للحزم الشائعة
| الحزمة | البديل الأصلي | متوفر منذ |
|---|---|---|
| axios, node-fetch, got | fetch (عام) |
Node.js 18 |
| uuid | crypto.randomUUID() |
Node.js 19 |
| dotenv | علامة --env-file |
Node.js 20.6 |
| chalk | util.styleText() |
Node.js 21.7 |
| glob | fs.glob() |
Node.js 22 |
| path-to-regexp | واجهة برمجة تطبيقات نمط URL الأصلية | Node.js 23 |
لاختبار API على وجه التحديد
تعتمد سير عمل اختبار واجهة برمجة التطبيقات (API) عادةً على مكتبات عميل HTTP، ومكتبات التحقق، ومُشغلات الاختبار، والخوادم الوهمية (mock servers). كل تبعية هي سطح هجوم.

Apidog يحل محل المكدس بأكمله بمنصة واحدة:
- عميل HTTP: مدمج، لا حاجة لتبعيات npm
- التحققات: منشئ اختبارات مرئي مع تحققات مدمجة
- مشغل الاختبار: سيناريوهات اختبار آلية مع تكامل CI/CD عبر Apidog CLI
- الخادم الوهمي: وهم ذكي مع استجابات ديناميكية، لا Express أو مكتبات وهمية من طرف ثالث
- التوثيق: يتم إنشاؤه تلقائيًا من مواصفات واجهة برمجة التطبيقات الخاصة بك
إن نقل سير عمل اختبار واجهة برمجة التطبيقات الخاص بك إلى Apidog يلغي عشرات تبعيات npm من البنية التحتية للاختبار الخاصة بك. عدد أقل من التبعيات يعني قرارات ثقة أقل ونواقل هجوم أقل.
جرب Apidog مجانًا لتوحيد مكدس اختبار واجهة برمجة التطبيقات الخاص بك.
الطبقة 7: مراقبة الشبكة ووقت التشغيل
حظر النطاقات السيئة المعروفة
بعد أي هجوم على سلسلة التوريد، قم بحظر البنية التحتية للقيادة والتحكم على مستوى الشبكة:
# أضف إلى /etc/hosts
echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts
بالنسبة لبيئات CI/CD، قم بتقييد الوصول الصادر للشبكة إلى النطاقات المعروفة بأنها جيدة. معظم عمليات البناء تحتاج فقط إلى الوصول إلى سجل npm ومضيف git الخاص بك وأهداف النشر الخاصة بك. يجب حظر أي شيء آخر بشكل افتراضي.
استخدم StepSecurity Harden-Runner لـ CI/CD
يراقب Harden-Runner من StepSecurity سير عمل GitHub Actions في الوقت الفعلي. لقد اكتشف اتصال Axios dropper بـ C2 في غضون 1.1 ثانية من بدء npm install. توفر الأداة:
- مراقبة الشبكة الصادرة لـ GitHub Actions
- تتبع تنفيذ العملية
- مراقبة سلامة الملفات
- تنبيه تلقائي للسلوك غير الطبيعي
# GitHub Actions
- uses: step-security/harden-runner@v2
with:
egress-policy: audit # أو 'block' للوضع الصارم
مراقبة عمليات وقت التشغيل
بالنسبة لأجهزة التطوير، ضع في اعتبارك أدوات الكشف والاستجابة لنقاط النهاية (EDR) التي تضع علامة على العمليات الفرعية المشبوهة التي يولدها Node.js. لقد أطلقت أداة الوصول عن بعد (RAT) الخاصة بـ Axios برامج osascript (macOS) و cscript (Windows) و python3 (Linux) من داخل عملية تثبيت npm. يمكن اكتشاف أنماط العمليات الفرعية هذه.
تكوين .npmrc الموصى به
إليك ملف .npmrc مُحسّن أمنيًا يجمع بين الطبقات المذكورة أعلاه:
# تثبيت الإصدارات الدقيقة
save-exact=true
save-prefix=
# تعطيل سكربتات دورة الحياة
ignore-scripts=true
# تمكين المصدر للنشر
provenance=true
# استخدام السجل الرسمي
registry=https://registry.npmjs.org/
# طلب المصادقة الثنائية للنشر
auth-type=web
# مستوى تدقيق العتبة
audit-level=moderate
قم بتثبيت هذا الملف في مستودعك بحيث يستخدم كل عضو في الفريق نفس إعدادات الأمان.
مثال على مسار أمان CI/CD
إليك سير عمل GitHub Actions الذي يفرض جميع الطبقات السبع:
name: Secure Build
on: [push, pull_request]
jobs:
security-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: step-security/harden-runner@v2
with:
egress-policy: audit
- uses: actions/setup-node@v4
with:
node-version: 22
# الطبقة 1+2: ملف قفل مجمد، بدون سكربتات
- run: npm ci --ignore-scripts
# الطبقة 3: التحقق من عدم وجود إصدارات غير متوقعة
- run: npm ls --all > deps.txt
# الطبقة 4: التحقق من المصدر
- run: npm audit signatures
# الطبقة 5: التحليل السلوكي
- run: npx socket scan
# الطبقة 5: فحص الثغرات الأمنية
- run: npx snyk test
# الطبقة 1: التدقيق الأساسي
- run: npm audit --audit-level=moderate
# إعادة بناء التبعيات الأصلية المسموح بها فقط
- run: npm rebuild sharp bcrypt
ماذا سيأتي بعد ذلك لأمان npm
المصدر الإلزامي للحزم الشائعة
تناقش npm فرض مصادقة المصدر للحزم التي تتجاوز عتبة تنزيل معينة. سيمنع هذا النشر اليدوي المستند إلى الرموز المميزة الذي مكّن هجوم Axios.
الموافقة على الإصدار من شخصين
مثل المعاملات المالية التي تتطلب ترخيصًا مزدوجًا، قد تتطلب الحزم ذات التنزيلات العالية موافقة مشرف ثانٍ على الإصدارات. لن يكون حساب واحد مخترق كافيًا.
تحديد نطاق أذونات وقت التشغيل
يقوم Deno بالفعل بتقييد ما يمكن للسكربتات الوصول إليه (الشبكة، نظام الملفات، متغيرات البيئة) ما لم يتم منحها صراحةً. تستكشف Node.js نماذج أذونات مماثلة. عندما يتم شحن هذا، ستحتاج سكربتات ما بعد التثبيت إلى إذن صريح لإجراء طلبات شبكة أو الوصول إلى نظام الملفات.
تقارب مديري الحزم
يمنع نموذج العزل الصارم لـ pnpm (يمكن للحزم الوصول فقط إلى تبعياتها المعلنة) العديد من هجمات الارتباك في التبعية. مع اعتماد npm لصرامة مماثلة، يتقلص سطح الهجوم.
الأسئلة الشائعة
ما هو هجوم سلسلة التوريد في npm؟
يستهدف هجوم سلسلة التوريد في npm سلسلة تبعيات البرامج بدلاً من تطبيقك مباشرةً. يقوم المهاجمون باختراق حسابات مشرفي الحزم، أو حقن تعليمات برمجية ضارة في حزم شائعة، أو نشر حزم "typosquat" بأسماء مشابهة. عندما تقوم بتثبيت أو تحديث التبعيات، يتم تنفيذ التعليمات البرمجية الضارة على جهازك أو في خط أنابيب CI/CD الخاص بك، وسرقة بيانات الاعتماد، أو تثبيت أبواب خلفية، أو تهريب البيانات.
هل npm audit كافٍ للحماية من هجمات سلسلة التوريد؟
لا. يتحقق npm audit من قاعدة بيانات الثغرات الأمنية المعروفة (CVEs). هجمات صفر يوم مثل اختراق Axios لا توجد في أي قاعدة بيانات CVEs عندما تحدث. أنت بحاجة إلى أدوات تحليل سلوكي مثل Socket.dev التي تفحص ما تفعله الحزم، وليس ما تم الإبلاغ عنه عنها. استخدم npm audit كخط أساس، وليس دفاعك الوحيد.
هل يجب أن أتوقف عن استخدام npm بالكامل؟
لا. يظل npm أكبر نظام بيئي للحزم، ومعظم الحزم آمنة. الهدف هو تقليل تعرضك من خلال تثبيت الإصدارات الدقيقة، وفرض ملفات القفل، وحظر السكربتات، وتقليل التبعيات. فكر فيما إذا كانت كل تبعية ضرورية، واستخدم البدائل الأصلية حيثما أمكن.
كيف يساعد Apidog في تقليل مخاطر سلسلة توريد npm؟
يوفر Apidog عميل HTTP مدمج، ومُشغّل اختبار، وخادم وهمي، ومولد توثيق لتطوير واجهة برمجة التطبيقات (API). وهذا يلغي الحاجة إلى حزم npm مثل Axios، node-fetch، Jest، Express (للمحاكاة الوهمية)، وغيرها من تبعيات الاختبار. عدد أقل من تبعيات npm يعني نواقل هجوم أقل في سير عمل تطوير واجهة برمجة التطبيقات الخاص بك.
ما هو مصدر الحزمة (Package provenance) في npm؟
يستخدم مصدر الحزمة Sigstore لربط الحزمة المنشورة تشفيرياً بمستودع مصدرها وبيئة بناء CI/CD. يثبت أين وكيف تم بناء الحزمة. يمكنك التحقق من المصدر باستخدام npm audit signatures. تفتقر الحزم المنشورة يدويًا من أجهزة المطورين إلى المصدر، وهو ما يمثل علامة حمراء للحزم ذات التنزيلات العالية.
كم عدد حزم npm الخبيثة؟
حدد Snyk أكثر من 3000 حزمة npm خبيثة في عام 2024. بحلول الربع الرابع من عام 2025، منعت Sonatype 120,612 هجوم برامج ضارة في ربع واحد عبر npm و PyPI وسجلات أخرى. العدد في تزايد. معظم الحزم الضارة هي حزم "typosquats" ذات تنزيلات منخفضة، لكن الاختراقات عالية المستوى مثل Axios تثبت أن الحزم الشائعة ليست محصنة.
ما هي ثغرة PackageGate الأمنية؟
PackageGate هي مجموعة من ستة ثغرات أمنية من نوع "صفر يوم" تم الكشف عنها في يناير 2026 تؤثر على npm و pnpm و vlt و Bun. وتظهر إحدى النتائج أن التبعيات المستندة إلى Git يمكن أن تحمل ملفات تهيئة تمكن من تنفيذ التعليمات البرمجية حتى عندما تكون سكربتات دورة الحياة معطلة. وهذا يعني أن ignore-scripts وحده لا يكفي إذا كانت تبعياتك تشير إلى مستودعات Git. قم بتثبيت تبعيات Git على تجزئات التزام محددة.
النقاط الرئيسية
- فرض ملفات القفل هو أساسك، لكنه لن يحمي من التثبيت الأول أثناء فترة الهجوم
- عطّل سكربتات ما بعد التثبيت عالميًا باستخدام
ignore-scripts=trueفي.npmrc - ثبّت الإصدارات الدقيقة باستخدام
save-exact=trueلمنع مفاجآت نطاق semver - تحقق من مصدر الحزمة باستخدام
npm audit signaturesلاكتشاف التحميلات اليدوية - أضف Socket.dev (تحليل سلوكي) فوق Snyk (ثغرات أمنية معروفة) و
npm audit(خط أساس) - قلل عدد تبعياتك باستخدام واجهات برمجة تطبيقات Node.js الأصلية والأنظمة الأساسية المتكاملة مثل Apidog
- راقب خروج شبكة CI/CD باستخدام StepSecurity Harden-Runner
كل تبعية هي قرار ثقة. كلما قل عدد تبعياتك، صغر سطح هجومك. كلما زاد عدد طبقات التحقق التي تطبقها، زادت صعوبة تسلل المهاجمين. ابن دفاعاتك بعمق، وليس بمعزل.
