Cyber Security Academy · درس

تهديدات سلسلة التوريد

كيف تتحول الاعتماديات إلى نواقل هجوم.

الدرس 1 من 413 خطوة

تهديدات سلسلة التوريد درس مجاني في Cyber Security Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cyber Security Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.

ما هو هجوم سلسلة التوريد

يستهدف هجوم سلسلة توريد البرمجيات مؤسسةً ليس من خلال اختراقها مباشرة، بل عبر إفساد شيء تثق به وتستخدمه، مثل مكتبة أو أداة بناء أو صورة أساسية لحاوية أو خادم تحديثات.

نظرًا إلى أن البرمجيات الحديثة تُركَّب من مئات المكونات التابعة لجهات خارجية، فإن رابطًا واحدًا مسمومًا ينتقل إلى كل مستخدم لاحق. ويستثمر المهاجم مرة واحدة ليصل إلى عدد كبير من الضحايا.

  • انعكاس الثقة — تنتقل حدود الأمان إلى خارج شيفرتك
  • نطاق الضرر المتعدي — تنتقل حزمة واحدة سيئة إلى آلاف عمليات البناء

جبل جليد التبعيات

عندما تضيف تبعية مباشرة واحدة، فإنك غالبًا تسحب عشرات التبعيات الانتقالية التي لم تخترها قط. فعادةً ما يعلن تطبيق Node أو Python عن عدد قليل من الحزم، لكنه يحلّ تبعيات تصل إلى المئات.

اعرض شجرة التبعيات المحلولة بالكامل، لا ملف البيان وحده، لمعرفة ما تشحنه فعليًا:

# npm: full resolved dependency tree
npm ls --all

# Python: pinned transitive closure
pip freeze

# count transitive nodes
npm ls --all --parseable | wc -l

التصيّد الإملائي والالتباس

ينشر المهاجمون حزمًا خبيثة بأسماء تشبه أسماء الحزم الشائعة، معتمدين على خطأ إملائي قاتل.

  • التصيّد الإملائي — reqeusts بدلًا من requests
  • محاكاة الاسم بإضافة بادئة أو لاحقة — python-requests لمحاكاة الاسم الحقيقي
  • التباس التبعيات — نشر حزمة عامة تحمل الاسم نفسه لحزمتك الداخلية الخاصة، بحيث يجلب محلّل مُعدّ بطريقة خاطئة نسخة المهاجم

دافع عن نفسك بتثبيت سجل داخلي موثوق، واستخدام حزم خاصة ذات نطاقات أو مساحات أسماء.

الاستيلاء على الحساب وحساب المشرف

قد تتحول حزمة شرعية تحظى بثقة واسعة إلى حزمة خبيثة إذا اختُرق حساب المشرف عليها أو حصل مساهم خبيث على صلاحية النشر.

تُظهر حوادث واقعية حديثة أن المهاجمين يصطادون بيانات اعتماد المشرفين، ثم يدفعون إصدار تصحيح مسمومًا يستخرج الرموز المميزة أثناء التثبيت.

  • اشترط استخدام 2FA في جميع حسابات النشر
  • فضّل الحزم التي تستخدم رموز نشر محددة النطاق وإصدارات محمية
  • راقب ظهور مشرفين جدد غير متوقعين على التبعيات الحرجة

نصوص التثبيت الخبيثة

تشغّل العديد من الأنظمة البرمجية شيفرة وقت التثبيت، قبل أن يبدأ تطبيقك بالعمل أصلًا. إذ يمكن لأمر npm install تنفيذ خطاف postinstall يسرق متغيرات البيئة أو مفاتيح SSH.

عطّل نصوص التثبيت الاعتباطية في CI، وافحص أي حزمة تحتاج إليها:

# npm: block lifecycle scripts during install
npm ci --ignore-scripts

# inspect what a package would run
npm view <package> scripts

# pnpm equivalent
pnpm install --ignore-scripts

أدوات البناء المخترقة

تُعد بيئة البناء نفسها هدفًا عالي القيمة. فإذا لوّث مهاجم مترجمًا أو صورة مشغّل CI أو مكوّنًا إضافيًا للبناء، فستحتوي كل قطعة برمجية تنتجها تلك البيئة على باب خلفي، حتى عندما تكون شيفرتك المصدرية سليمة.

ومن الأمثلة الكلاسيكية آلية تحديث طُروادة توقّع البرمجيات الخبيثة باستخدام مفتاح شرعي لتوقيع الشيفرة، فيقبلها الضحايا باعتبارها أصلية.

  • عامِل البنية التحتية للبناء باعتبارها بيئة إنتاج، وطبّق عليها التحصين الكامل
  • استخدم مشغّلات بناء مؤقتة وقابلة لإعادة الإنتاج
  • افصل مفاتيح التوقيع عن مضيف البناء

ملفات القفل وتجزئات السلامة

يثبّت ملف القفل الإصدارات الدقيقة وتجزئات المحتوى، ولذلك لا يمكن لعملية إعادة الحل أن تستبدل قطعة برمجية بأخرى بصمت. التزم دائمًا بإيداعه في المستودع، ودَع CI يتحقق منه بدلًا من إعادة الحل بحرية.

يخزن حقل السلامة تجزئة؛ فإذا لم يطابق أرشيف tarball الذي تم تنزيله هذه التجزئة، يفشل التثبيت.

# package-lock.json integrity entry
# "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
# "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA=="

# CI must install from lock, never re-resolve
npm ci
yarn install --frozen-lockfile

فحص التبعيات بحثًا عن الثغرات

تُعد الإصدارات المعروفة بوجود ثغرات فيها، والموثقة على شكل CVEs، أكثر نقاط ضعف سلسلة التوريد شيوعًا. وتطابق أدوات تحليل تركيب البرمجيات (SCA) تبعياتك المحلولة مع قواعد بيانات الثغرات.

شغّل عمليات الفحص في CI، وأفشل عمليات البناء عند اكتشاف نتائج حرجة:

# npm built-in audit
npm audit --audit-level=high

# OSV scanner across ecosystems
osv-scanner --lockfile=package-lock.json

# Trivy for filesystem and images
trivy fs --severity HIGH,CRITICAL .

تثبيت الإصدارات والتضمين المحلي

تسمح نطاقات الإصدارات العائمة (^1.2.0) بدخول الإصدارات الجديدة تلقائيًا، وهو أمر مريح لكنه يعرّضك لتصحيح خبيث.

  • ثبّت الإصدارات الدقيقة وراجع الترقيات عن قصد
  • ثبّت باستخدام التجزئة لصور الحاويات، بدلًا من وسوم قابلة للتغيير مثل latest
  • ضمّن محليًا التبعيات الحرجة في مستودعك أو مرآتك الخاصة، حتى لا يتسبب حذفها من المصدر الأعلى في تعطيلك أو إصابتك
# pin a container image by immutable digest
FROM python:3.12-slim@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f

المراقبة المستمرة وإثبات المصدر

تأمين سلسلة التوريد عملية مستمرة، وليس فحصًا يُجرى مرة واحدة. يجب أن تعرف ما الذي تشحنه، ومن أين أتى، ومتى يصبح عرضة للخطر.

  • أنشئ SBOM لكل إصدار (في الدرس التالي)
  • سجّل إثبات مصدر البناء حتى تتمكن من إثبات كيفية إنتاج قطعة برمجية
  • اشترك في التنبيهات حتى يؤدي الكشف عن CVE جديدة إلى إعادة تقييم عمليات البناء التي شُحنت سابقًا

نمذجة تهديدات مسار البناء

حدّد كل مرحلة يدخل فيها إدخال غير موثوق: أجهزة المطورين، والتحكم بالمصدر، وسجلات التبعيات، ونظام البناء، وتخزين القطع البرمجية، وقناة التحديث. فكل مرحلة منها قد تكون نقطة حقن محتملة.

اطرح في كل مرحلة الأسئلة التالية: من يستطيع الكتابة هنا، وما الذي يتيح لهم الاختراق فعله، وكيف سأكتشفه؟ وينتج عن ذلك قائمة أولويات لعناصر التحكم، بدلًا من قائمة تحقق عامة.

تحقق سريع: التباس التبعيات

اختبر مدى فهمك لفئة شائعة من هجمات سلسلة التوريد.

مراجعة: تهديدات سلسلة التوريد

تعلمت لماذا تمثل التبعيات مسارات للهجوم وكيف تقلل تعرضك لها.

  • يعني انعكاس الثقة أن أمانك يعتمد على جهات خارجية لا تتحكم فيها
  • تشمل التهديدات الرئيسية: التصيّد الإملائي، والتباس التبعيات، والاستيلاء على حساب المشرف، ونصوص التثبيت الخبيثة، وأدوات البناء المخترقة
  • تشمل وسائل الدفاع الأساسية: ملفات القفل مع تجزئات السلامة، وفحص SCA، والتثبيت الدقيق باستخدام التجزئة، وتفعيل 2FA للناشرين، والمراقبة المستمرة

ستجرد في الدرس التالي محتويات برنامجك بدقة باستخدام SBOM.

البدء مجانًا

تعلم Cyber Security Academy مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
76
الدروس
303

الأسئلة الشائعة

هل درس «تهديدات سلسلة التوريد» مجاني؟

نعم — نص درس «تهديدات سلسلة التوريد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cyber Security Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.

ماذا ستتعلم في «تهديدات سلسلة التوريد»؟

كيف تتحول الاعتماديات إلى نواقل هجوم. تتمرن على Cyber Security Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cyber Security Academy؟

لا تُشترط خبرة سابقة. Cyber Security Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «تهديدات سلسلة التوريد»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cyber Security Academy هذا؟

نعم. كل درس في Cyber Security Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تهديدات سلسلة التوريد
  2. قائمة مكونات البرمجيات (SBOM)
  3. توقيع الاعتماديات والآثار البرمجية
  4. تأمين مسارات CI/CD
← العودة إلى Cyber Security Academy