0Pricing
Security+ Academy · درس

أمان التبعيات وتحليل تكوين البرمجيات

دقّقوا في المكتبات التابعة لجهات خارجية باستخدام أدوات SCA، وفرضوا تثبيت إصدارات التبعيات، وادمجوا تنبيهات الثغرات الآلية في مسار CI/CD.

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

مخاطر التبعيات مفتوحة المصدر

تتكون التطبيقات الحديثة إلى حد كبير من مكتبات وأطر عمل مفتوحة المصدر تابعة لجهات خارجية. وقد يحتوي تطبيق Node.js نموذجي على أكثر من 1,000 تبعية غير مباشرة، بينما قد يسحب مشروع Java مئات العناصر من Maven. وتمثل كل تبعية سطحًا محتملًا للهجوم. وقد أثبتت ثغرة Log4Shell (CVE-2021-44228) في مكتبة Log4j أن تبعية واحدة قد تجعل ملايين التطبيقات قابلة للاستغلال فورًا في جميع أنحاء العالم خلال أيام من الكشف عنها.

ما تحليل تكوين البرمجيات؟

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

# SCA tool usage examples:

# npm audit (Node.js):
# npm audit
# -> Reports vulnerabilities in package.json dependencies
# -> Shows severity, CVE ID, affected package, fix version

# OWASP Dependency-Check (Java/Python/etc.):
# dependency-check --project 'MyApp' --scan ./lib/
# -> Generates HTML/XML report with CVE findings

# Snyk scan:
# snyk test
# -> Reports vulns + 'snyk fix' applies patches automatically

التبعيات غير المباشرة: الخطر الخفي

التبعيات غير المباشرة هي مكتبات تعتمد عليها تبعياتك المباشرة، ولم تخترها صراحةً. فقد تعتمد مباشرةً على الحزمة A، التي تعتمد على الحزمة B (الإصدار 1.2)، التي تعتمد بدورها على الحزمة C (الإصدار 3.0، وهو إصدار معرض لثغرة). وقد لا تكون على علم بالحزمة C، لكن تطبيقك ينفذها. وتتتبع أدوات SCA شجرة التبعيات كاملة لكشف هذه الثغرات الخفية التي لا يملك المطورون رؤية مباشرة لها.

# Dependency tree example:
# Your package.json:
#   'express': '^4.18.0'     (direct dependency)
#   'lodash':  '^4.17.21'   (direct dependency)

# Transitive dependencies (you didn't choose these):
#   express -> 'qs' 6.11.0       (URL parsing)
#   express -> 'body-parser' 1.20 -> 'qs' 6.11.0
#   lodash (self-contained in this case)

# If 'qs' 6.10.x had a prototype pollution CVE,
# you are vulnerable via express even though
# you never directly imported 'qs'.

قائمة مكونات البرمجيات (SBOM)

قائمة مكونات البرمجيات (SBOM) هي قائمة رسمية قابلة للقراءة آليًا بجميع مكونات منتج برمجي، وتشبه قائمة مكونات الطعام. وتشمل تنسيقات SBOM كلاً من SPDX (مؤسسة Linux) وCycloneDX (OWASP). وقد ألزم الأمر التنفيذي الأمريكي 14028 (2021) بتوفير قوائم SBOM للبرمجيات المباعة للحكومة الفيدرالية. وباستخدام SBOM، تستطيع فرق الأمان الاستعلام فورًا: «أي منتجاتنا يحتوي على Log4j؟» والحصول على إجابة خلال دقائق بدلًا من أيام من البحث اليدوي.

# Generate SBOM with syft:
# syft packages . -o spdx-json > sbom.spdx.json

# SBOM content example (SPDX JSON):
# {
#   'packages': [
#     { 'name': 'express',  'version': '4.18.2', 'license': 'MIT' },
#     { 'name': 'lodash',   'version': '4.17.21','license': 'MIT' },
#     { 'name': 'log4j-core','version': '2.14.0','license': 'Apache-2.0'}
#   ]
# }

# When Log4Shell announced, query SBOM:
# grep -i 'log4j-core' sbom.spdx.json -> FOUND in 3 projects

تثبيت إصدارات التبعيات وملفات القفل

يحدد تثبيت إصدارات التبعيات إصدارات دقيقة للتبعيات بدلًا من نطاقات مرنة (^1.2.3 أو *). وتلتقط ملفات القفل (package-lock.json وyarn.lock وPipfile.lock وGemfile.lock) الإصدار الدقيق الذي تم حله لكل تبعية وقت التثبيت. ويجب إيداع هذه الملفات في نظام التحكم بالمصدر لضمان استخدام كل عضو في الفريق وكل مسار CI/CD لإصدارات تبعيات متطابقة، ومنع هجمات سلسلة التوريد التي تفسد إصدارات الحزم بين عمليات التثبيت.

# Version range vs pinned versions:

# FLEXIBLE (can pull different versions each install):
# 'express': '^4.0.0'   -> installs latest 4.x.x
# 'lodash': '*'         -> installs any version!

# PINNED (always same version):
# 'express': '4.18.2'   -> always exactly 4.18.2

# Lock file (package-lock.json):
# Records EXACT resolved version of every transitive dep.
# Commit this file! It ensures reproducible builds.
# Never .gitignore lock files (security anti-pattern).

هجمات سلسلة التوريد: انتحال الأسماء والتبعية المربكة

تستهدف هجمات سلسلة التوريد منظومة التبعيات. يتضمن انتحال الأسماء نشر حزم ضارة بأسماء تشبه أسماء الحزم الشائعة (مثل lodahs بدلًا من lodash) على أمل أن يخطئ المطورون في كتابة الاسم. أما هجمات التبعية المربكة فتستغل الترتيب الذي يبحث به مديرو الحزم في السجلات؛ إذ ينشر المهاجم حزمة ضارة بالاسم نفسه لحزمة داخلية خاصة، لكن برقم إصدار أعلى، مما يجعل مدير الحزم يثبت الإصدار العام الضار بدلًا منها.

# Dependency Confusion Attack (Alex Birsan 2021):
# Company uses internal package 'company-utils' v1.0.0
# Hosted on: internal.registry.company.com

# Attacker publishes 'company-utils' v9.9.9 to npmjs.com
# (public registry with higher version number)

# npm install resolves: 'find highest version across ALL registries'
# -> Installs v9.9.9 from public npm (attacker's malicious package!)
# -> Instead of v1.0.0 from internal registry

# Defense: use namespace scoping (@company/utils)
# or configure npm to ONLY use internal registry for private packages

أدوات SCA المتاحة في السوق

تُستخدم عدة أدوات SCA على نطاق واسع في المجال. يوفر Snyk فحصًا سهل الاستخدام للتبعيات للمطورين، مع طلبات سحب للإصلاح تلقائيًا. أما OWASP Dependency-Check فهي أداة مجانية واسعة الاستخدام للغات Java و.NET وPython وRuby. ويفتح GitHub Dependabot تلقائيًا طلبات سحب لتحديث التبعيات المعرضة للثغرات في مستودعات GitHub. كما يدمج كل من JFrog Xray وSonatype Nexus IQ تحليل SCA في مستودعات العناصر البرمجية لمنع وصول عمليات البناء المعرضة للثغرات إلى بيئة الإنتاج.

دمج SCA في مسارات CI/CD

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

# GitHub Actions SCA pipeline step:
# - name: Run Snyk SCA scan
#   uses: snyk/actions/node@master
#   env:
#     SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
#   with:
#     args: --severity-threshold=high
#             --fail-on=upgradable
# # Build fails if any HIGH or CRITICAL vuln found
# # that has an available fix (--fail-on=upgradable)
# # No fix available? Generates warning, doesn't block
# # (acknowledging risk explicitly is better than blocking forever)

تقييم سلامة الحزم مفتوحة المصدر

قبل إضافة تبعية، قيّم وضعها الأمني باستخدام مؤشرات متعددة. نشاط الصيانة: هل يُصان المشروع بنشاط؟ متى كان آخر إيداع وإصدار؟ سجل الثغرات المعروفة: كم عدد CVEs التي ظهرت فيه، وما سرعة ترقيعها؟ حجم التنزيلات: تجذب الحزم واسعة الاستخدام مزيدًا من التدقيق الأمني. عدد التبعيات: تؤدي الحزم ذات التبعيات الأقل إلى مخاطر غير مباشرة أقل. ويوفر OpenSSF Scorecard تقييمًا آليًا لممارسات أمان المشاريع مفتوحة المصدر.

استراتيجيات معالجة الثغرات

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

الامتثال للتراخيص في التبعيات

تخدم أدوات SCA غرضين متكاملين: فهي تحدد الثغرات الأمنية وتبلغ أيضًا عن مشكلات الامتثال للتراخيص في التبعيات مفتوحة المصدر. وتشمل التراخيص الشائعة التي قد تسبب مشكلات GPL v2/v3 (ترخيص المشاركة بالمثل، الذي يتطلب أيضًا إتاحة منتجك كمصدر مفتوح إذا وزعته)، وAGPL (يوسع GPL ليشمل خدمات الشبكة)، وSSPL. وقد يؤدي استخدام مكتبة مرخصة بموجب GPL في برمجيات تجارية احتكارية دون ترخيص تجاري إلى مسؤولية قانونية جسيمة. وتؤتمت أدوات SCA مثل FOSSA وBlack Duck وWhiteSource فحص التراخيص بالتوازي مع اكتشاف الثغرات، بما يضمن الامتثال لالتزامات البرمجيات مفتوحة المصدر.

# License compliance risk levels:
# PERMISSIVE (low risk for commercial use):
#   MIT, Apache 2.0, BSD 2/3-Clause
#   -> Can use in proprietary code, just keep attribution

# WEAK COPYLEFT (medium risk - check usage):
#   LGPL -> can link dynamically without open-sourcing your code
#   MPL 2.0 -> modifications to MPL files must be open-sourced

# STRONG COPYLEFT (high risk for proprietary products):
#   GPL v2, GPL v3 -> if you distribute code using GPL library,
#                     your entire product must also be GPL
#   AGPL -> extends GPL to SaaS/network services

# SCA policy: block AGPL/GPL in commercial product
# -> Review any exception requests manually

تحقق سريع

اختبر مدى فهمك لمفاهيم CompTIA Security+ (SY0-701) الواردة في هذا الدرس.

مراجعة الدرس

تعلمت في هذا الدرس أن أدوات SCA تفحص شجرة التبعيات كاملة، بما في ذلك التبعيات غير المباشرة، بحثًا عن CVEs معروفة، وأن قوائم SBOM توفر حصرًا قابلًا للقراءة آليًا يتيح الاستجابة السريعة عند الكشف عن ثغرات جديدة، وأن دمج SCA كبوابة جودة في CI/CD يكشف التبعيات المعرضة للثغرات قبل وصولها إلى الإنتاج. بعد ذلك، سنستكشف DevSecOps وكيفية نقل ضوابط الأمان إلى مراحل مبكرة ضمن مسار CI/CD الكامل.

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

هل درس «أمان التبعيات وتحليل تكوين البرمجيات» مجاني؟

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

ماذا ستتعلم في «أمان التبعيات وتحليل تكوين البرمجيات»؟

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

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

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

كم من الوقت يستغرق درس «أمان التبعيات وتحليل تكوين البرمجيات»؟

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

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

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

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

  1. التحقق من المدخلات وترميز المخرجات
  2. الإدارة الآمنة للأسرار ومتغيرات البيئة
  3. أمان التبعيات وتحليل تكوين البرمجيات
  4. DevSecOps: نقل الأمان إلى مراحل مبكرة من مسارات التطوير
← العودة إلى Security+ Academy