Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
dep-scan — ماسح ضوئي للثغرات الأمنية في التبعيات من الجيل التالي مع تحليل الوصول، توليد SBOM، تدقيق التراخيص، ومسح صور الحاويات لتكامل CI/CD. | Kitploit
أدوات/GitHubGitHub/owasp-dep-scan/dep-scan
ماسحات الثغرات الأمنيةأمن الحاوياتDevSecOpsأمن سلسلة التوريد
GitHubowasp-dep-scan/dep-scan

dep-scan

ماسح ضوئي للثغرات الأمنية في التبعيات من الجيل التالي مع تحليل الوصول، توليد SBOM، تدقيق التراخيص، ومسح صور الحاويات لتكامل CI/CD.

عرض المستودع
1.3k13744منذ 14 أيامتمت المراجعة من قبل Kitploit
الموقع الإلكتروني

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
# مقدمة

OWASP dep-scan هي أداة تدقيق أمني ومخاطر من الجيل التالي تعتمد على الثغرات الأمنية المعروفة والتنبيهات وقيود الترخيص الخاصة باعتماديات المشروع. يتم دعم كل من المستودعات المحلية وصور الحاويات كمدخلات، والأداة مثالية للتكامل مع منصات ASPM/VM وفي بيئات CI.

<img src="https://assets.kitploit.com/production/public/readmes/6282/1f4ac5f4ee45d7e9ba8026acc4ae2458bdf23f5e9119eb9f85536cf101d0e56f.png" width="200" height="auto" />

[![SBOM](https://img.shields.io/badge/SBOM-with_%E2%9D%A4%EF%B8%8F_by_cdxgen-FF753D)](https://github.com/cdxgen/cdxgen) [![release](https://github.com/owasp-dep-scan/dep-scan/actions/workflows/pythonpublish.yml/badge.svg)](https://github.com/owasp-dep-scan/dep-scan/actions/workflows/pythonpublish.yml)

## المحتويات

- [الميزات](#features)
    - [تدفقات بيانات دقيقة قابلة للوصول](#precise-reachable-data-flows)
    - [مصفوفة قابلية الوصول](#reachability-matrix)
    - [قابلية الوصول في Rust (عبر rusi)](#rust-reachability-via-rusi)
    - [قابلية الوصول في Go (عبر golem)](#go-reachability-via-golem)
    - [قابلية الوصول في .NET (عبر dosai)](#net-reachability-via-dosai)
    - [قابلية الوصول في JVM وJavaScript وPython وPHP (عبر atom)](#jvm-javascript-python-and-php-reachability-via-atom)
    - [مصادر بيانات الثغرات](#vulnerability-data-sources)
    - [توزيعات Linux](#linux-distros)
- [البدء السريع](#quick-start)
    - [فحص المشاريع محليًا (إصدار Python)](#scanning-projects-locally-python-version)
    - [Homebrew (macOS وLinux)](#homebrew-macos-and-linux)
    - [ملفات ثنائية مستقلة (لا تتطلب Python أو Node.js)](#standalone-binaries-no-python-or-nodejs-required)
    - [فحص الحاويات محليًا (إصدار Python)](#scanning-containers-locally-python-version)
    - [فحص المشاريع محليًا (حاوية Docker)](#scanning-projects-locally-docker-container)
    - [وضع الخادم](#server-mode)
- [التطوير المحلي](#local-development)
- [التوثيق (depscan.readthedocs.io)](https://depscan.readthedocs.io)
- [الترخيص](#license)

## الميزات

- فحص معظم شيفرة التطبيقات (المستودعات المحلية، وصور حاويات Linux، وبيانات Kubernetes، ونظام التشغيل) لتحديد ثغرات CVE المعروفة مع تحديد الأولويات
- إجراء تحليل متقدم لقابلية الوصول لعدة لغات (راجع [مصفوفة قابلية الوصول](#reachability-matrix) أدناه)
- يتم فحص ثغرات الحزم محليًا وبسرعة كبيرة. لا يتم استخدام أي خادم
- إنشاء قائمة مكونات البرمجيات (SBOM) مع معلومات تقرير الإفصاح عن الثغرات (VDR)
- إنشاء مستند Common Security Advisory Framework (CSAF) 2.0/2.1 VEX (راجع [CSAF Readme](https://github.com/owasp-dep-scan/dep-scan/blob/master/contrib/CSAF_README.md))
- إجراء تدقيق عميق لمخاطر الحزم ضد هجمات الخلط بين الاعتماديات ومخاطر الصيانة (راجع [وثائق تدقيق المخاطر](https://depscan.readthedocs.io/adv-usage#package-risk-audit))

### تدفقات بيانات دقيقة قابلة للوصول

تدفقات بيانات مفصلة لتحديد المسارات القابلة للوصول وغير القابلة للوصول في تطبيقك بناءً على السياق الكامل.

![Reachable Flows](https://assets.kitploit.com/production/public/readmes/6282/2119dbdc4e7df4627c7e772ddbcf87fbe70c72f1b4472b71f4c8e0ffe53b6fe1.png)

### مصفوفة قابلية الوصول

تحسب dep-scan قابلية الوصول لسبعة أنظمة بيئية لغوية عبر أربعة أدوات تقطيع (slicers). تُعلَّم الحزمة المعرضة للثغرات والتي تكون شيفرتها فعليًا على مسار تنفيذ بأنها **قابلة للوصول**، بينما الحزمة التي تكون معلنة فقط في BOM ولكن لا يتم استدعاؤها أبدًا فلا تُعلَّم كذلك. تُغذّي كل أداة تقطيع نفس محرك قابلية الوصول المشترك المرتبط بـ purl، لذا يكون السلوك موحدًا عبر اللغات. قابلية الوصول مفعّلة افتراضيًا (`--reachability-analyzer FrameworkReachability`)؛ وتضيف `SemanticReachability` بالإضافة إلى ذلك إسناد الخدمات ونقاط النهاية التي تم الوصول إليها وقابلية الوصول بعد البناء (الثنائي/الحاوية).

| اللغة / النظام البيئي               | محرك إمكانية الوصول                                   | المحلل الافتراضي        |
| ---------------------------------- | ----------------------------------------------------- | ----------------------- |
| Java / JVM (Groovy, Kotlin, Scala) | [atom](https://github.com/AppThreat/atom)             | `FrameworkReachability` |
| JavaScript / TypeScript            | atom                                                  | `FrameworkReachability` |
| Python                             | atom                                                  | `FrameworkReachability` |
| PHP                                | atom                                                  | `FrameworkReachability` |
| Rust                               | [rusi](https://github.com/cdxgen/cdxgen-plugins-bin)  | `FrameworkReachability` |
| Go                                 | [golem](https://github.com/cdxgen/cdxgen-plugins-bin) | `FrameworkReachability` |
| .NET (C#, VB, F#, R)               | [dosai](https://github.com/owasp-dep-scan/dosai)      | `FrameworkReachability` |

للتعرف على المفاهيم الكامنة وراء إمكانية الوصول وتحديد الأولويات، اقرأ فصلي [نموذج إمكانية الوصول](https://depscan.readthedocs.io/concepts/reachability-model) و[تحديد الأولويات](https://depscan.readthedocs.io/concepts/prioritization). للحصول على أمثلة تطبيقية لكل لغة، راجع [أدلة اللغات](https://depscan.readthedocs.io/languages/rust-reachability). للاطلاع على جانب الامتثال (VDR وCSAF VEX)، راجع [دليل VDR](https://depscan.readthedocs.io/output/vdr-guide) و[دليل CSAF VEX](https://depscan.readthedocs.io/output/vex-csaf-guide).

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

**Rust (rusi).** يشغّل cdxgen أداة [rusi](https://github.com/cdxgen/cdxgen-plugins-bin) ويحفظ تقريرها، الذي يحوّله dep-scan إلى خط المعالجة المشترك، بحيث تكون الحزمة (crate) التي تُستدعى فعليًا (على سبيل المثال `time::now()` لـ RUSTSEC-2020-0071) قابلة للوصول، بينما الحزمة الموجودة فقط دون استدعاء ليست كذلك. راجع [دليل إمكانية الوصول في Rust](https://depscan.readthedocs.io/languages/rust-reachability).

```bash
depscan -i ./my-rust-app -o ./reports --profile research
```

**Go (golem).** يستدعي dep-scan أداة [golem](https://github.com/cdxgen/cdxgen-plugins-bin) مباشرةً لمشاريع Go (يتطلب وجود `go` في `PATH`)، ويضع علامة Reachable على الوحدة عندما تكون دوالها على مسار متتبَّع. استخدم `--go-analyzer-network offline` للمستودعات غير الموثوقة مع ذاكرة تخزين مؤقت دافئة للوحدات. راجع [دليل إمكانية الوصول في Go](https://depscan.readthedocs.io/languages/go-reachability).

```bash
depscan -i ./my-go-app -o ./reports -t go
```

**.NET (dosai).** يشغّل cdxgen أداة [dosai](https://github.com/owasp-dep-scan/dosai)، التي تُصدر حكمًا صريحًا حول قابلية الوصول لكل حزمة (`PackageReachability` مع `ReachabilityKind` و`Confidence`) تعتبره dep-scan مرجعًا موثوقًا، لذا فإن حزمة NuGet التي تُستدعى فعليًا (على سبيل المثال `JsonConvert.DeserializeObject` على مدخل خاضع للتحكم) تكون قابلة للوصول (Reachable). افحص شجرة مستعادة بحثًا عن purls ذات إصدارات. راجع [دليل قابلية الوصول في .NET](https://depscan.readthedocs.io/languages/dotnet-reachability).

```bash
depscan -i ./my-dotnet-app -o ./reports -t dotnet
```

**JVM وJavaScript/TypeScript وPython وPHP (atom).** تشترك هذه المنظومات الأربع في أداة التقطيع [atom](https://github.com/AppThreat/atom)، التي تبني تمثيلاً وسيطاً مستقلاً عن اللغة وتنفّذ التقطيع الساكن. راجع [دليل إمكانية الوصول لـ JVM وJS وPython وPHP](https://depscan.readthedocs.io/languages/jvm-js-python-php-reachability).

```bash
depscan --profile research -t java -i ./my-java-app -o ./reports --explain
```

للانتقال إلى ما هو أبعد من إمكانية الوصول المعتمدة على إطار العمل إلى مستويات نقطة النهاية والخدمة وما بعد البناء، مرّر `--reachability-analyzer SemanticReachability` مع `--bom-dir` لـ BOMs دورة الحياة. راجع [دليل إمكانية الوصول الدلالي](https://depscan.readthedocs.io/analyzers/semantic-reachability).

### رؤى واضحة حول CVEs

افهم CVEs بوضوح دون الحاجة إلى قراءة الوصف بالكامل.

![شجرة التبعيات مع الرؤى](https://assets.kitploit.com/production/public/readmes/6282/34125c2b04cb176c6772f998114d2b6a17e62ead3c45243e0c93fb496e9aa530.png)

### تحديد الأولويات التلقائي

ركّز فقط على CVEs التي تحتاج إلى اهتمامك.

![تحديد الأولويات](https://assets.kitploit.com/production/public/readmes/6282/a15d5535abe0f1af9842e2889de77740ac86e97486027a477316b52ac4722cb4.png)

### ابقَ استباقيًا

ابقَ دائمًا متقدمًا بخطوة عبر التنبؤ المتقدم بالثغرات والاستغلال.

![التدابير الاستباقية](https://assets.kitploit.com/production/public/readmes/6282/e5e9ba507172bec28c66e6c623ca929481ccb76d61d2d84d9f7ceba2b5f10596.png)

### مصادر بيانات الثغرات

- OSV
- NVD
- GitHub
- NPM
- Linux [vuln-list](https://github.com/appthreat/vuln-list)

### توزيعات Linux

- AlmaLinux
- Debian
- Alpine
- Amazon Linux
- Arch Linux
- RHEL/CentOS
- Rocky Linux
- Ubuntu
- OpenSUSE/SLES
- Photon
- Chainguard
- Wolfi OS

## البدء السريع

يُعد dep-scan مثاليًا للاستخدام أثناء التكامل المستمر (CI) وكأداة تطوير محلية.

### فحص المشاريع محليًا (إصدار Python)

```bash
sudo npm install -g @cyclonedx/cdxgen
# Normal version recommended for most users (MIT)
pip install owasp-depscan

# For a full version with all extensions and server mode (Multiple Licenses)
pip install owasp-depscan[all]
```

سيؤدي هذا إلى تثبيت أمرين يُسمّيان `cdxgen` و`depscan`.

يمكنك استدعاء أمر الفحص مباشرةً مع الخيارات المتنوعة.

```bash
cd <project to scan>
depscan --src $PWD --reports-dir $PWD/reports
```

القائمة الكاملة للخيارات أدناه:

```text
usage: depscan [-h] [--config CONFIG] [--no-banner] [-i SRC_DIR_IMAGE] [-o REPORTS_DIR] [--csaf]
               [--profile {appsec,research,operational,threat-modeling,license-compliance,generic,machine-learning,ml,deep-learning,ml-deep,ml-tiny}]
               [--lifecycle {pre-build,build,post-build} [{pre-build,build,post-build} ...]]
               [--technique {auto,source-code-analysis,binary-analysis,manifest-analysis,hash-comparison,instrumentation,filename} [{auto,source-code-analysis,binary-analysis,manifest-analysis,hash-comparison,instrumentation,filename} ...]]
               [--bom-engine {auto,CdxgenGenerator,CdxgenServerGenerator,CdxgenImageBasedGenerator,BlintGenerator} |
               --vulnerability-analyzer {auto,VDRAnalyzer,LifecycleAnalyzer}] [--reachability-analyzer {off,FrameworkReachability,SemanticReachability}] [--no-suggest]
               [--risk-audit] [--cdxgen-args CDXGEN_ARGS] [--private-ns PRIVATE_NS] [-t PROJECT_TYPE [PROJECT_TYPE ...]] [--bom BOM | --bom-dir BOM_DIR | --purl SEARCH_PURL]
               [--report-template REPORT_TEMPLATE] [--report-name REPORT_NAME] [--deep] [--fuzzy-search] [--search-order {purl,pcu,cpe,cpu,url}] [--no-universal]
               [--no-vuln-table] [--server] [--server-host SERVER_HOST] [--server-port SERVER_PORT] [--cdxgen-server CDXGEN_SERVER] [--debug] [-q | --explain] [-v]

Fully open-source security and license audit for application dependencies and container images based on known vulnerabilities and advisories.

options:
  -h, --help            show this help message and exit
  --config CONFIG       Path to the configuration file. Default: $PWD/.config/depscan.toml
  --no-banner           Do not display the logo and donation banner. Please make a donation to OWASP before using this argument.
  -i, --src SRC_DIR_IMAGE
                        Source directory or container image or binary file
  -o, --reports-dir REPORTS_DIR
                        Reports directory
  --csaf                Generate a OASIS CSAF VEX document
  --profile {appsec,research,operational,threat-modeling,license-compliance,generic,machine-learning,ml,deep-learning,ml-deep,ml-tiny}
                        Profile to use while generating the BOM. For granular control, use the arguments --bom-engine, --vulnerability-analyzer, or --reachability-analyzer.
  --lifecycle {pre-build,build,post-build} [{pre-build,build,post-build} ...]
                        Product lifecycle for the generated BOM. Multiple values allowed.
  --technique {auto,source-code-analysis,binary-analysis,manifest-analysis,hash-comparison,instrumentation,filename} [{auto,source-code-analysis,binary-analysis,manifest-analysis,hash-comparison,instrumentation,filename} ...]
                        Analysis technique to use for BOM generation. Multiple values allowed.
  --bom-engine {auto,CdxgenGenerator,CdxgenServerGenerator,CdxgenImageBasedGenerator,BlintGenerator}
                        BOM generation engine to use. Defaults to automatic selection based on project type and lifecycle.
  --vulnerability-analyzer {auto,VDRAnalyzer,LifecycleAnalyzer}
                        Vulnerability analyzer to use. Defaults to automatic selection based on bom_dir argument.
  --reachability-analyzer {off,FrameworkReachability,SemanticReachability}
                        Reachability analyzer to use. Default FrameworkReachability.
  --no-suggest          Disable suggest mode
  --risk-audit          Perform package risk audit (slow operation). Npm only.
  --cdxgen-args CDXGEN_ARGS
                        Additional arguments to pass to cdxgen
  --private-ns PRIVATE_NS
                        Private namespace to use while performing oss risk audit. Private packages should not be available in public registries by default. Comma separated
                        values accepted.
  -t, --type PROJECT_TYPE [PROJECT_TYPE ...]
                        Override project types if auto-detection is incorrect. Multiple values supported.
  --bom BOM             Examine using the given Software Bill-of-Materials (SBOM) file in CycloneDX format. Use cdxgen command to produce one.
  --bom-dir BOM_DIR     Examine all the Bill-of-Materials (BOM) files in the given directory.
  --purl SEARCH_PURL    Scan a single package url.
  --custom-data CUSTOM_DATA
                        Path to directory containing custom vulnerability data (JSON/YAML/TOML) to override/augment results.
  --report-template REPORT_TEMPLATE
                        Jinja template file used for rendering a custom report
  --report-name REPORT_NAME
                        Filename of the custom report written to the --reports-dir
  --deep                Perform deep scan by passing this --deep argument to cdxgen. Useful while scanning docker images and OS packages.
  --fuzzy-search        Perform fuzzy search by creating variations of package names. Use this when the input SBOM lacks a PURL.
  --search-order {purl,pcu,cpe,cpu,url}
                        Attributes to use while searching for vulnerabilities. Default: PURL, CPE, URL (pcu).
  --no-universal        Depscan would attempt to perform a single universal scan instead of individual scans per language type.
  --no-vuln-table       Do not print the table with the full list of vulnerabilities. This can help reduce console output.
  --server              Run depscan as a server
  --server-host SERVER_HOST
                        depscan server host
  --server-port SERVER_PORT
                        depscan server port
  --server-allowed-hosts [SERVER_ALLOWED_HOSTS ...]
                        List of allowed hostnames or IPs that can access the server (e.g., 'localhost 192.168.1.10'). If unspecified, no host allowlist is
                        enforced.
  --server-allowed-paths [SERVER_ALLOWED_PATHS ...]
                        List of allowed filesystem paths that can be scanned by the server. Restricts `path` parameter in /scan requests.
  --cdxgen-server CDXGEN_SERVER
                        cdxgen server url. Eg: http://cdxgen:9090
  --debug               Run depscan in debug mode.
  -q, --quiet           Makes depscan quiet.
  --explain             Makes depscan to explain the various analysis. Useful for creating detailed reports.
  --explanation-mode {Endpoints,EndpointsAndReachables,NonReachables,LLMPrompts}
                        Style of explanation needed. Defaults to Endpoints and Reachables.
  --annotate            Include the generated text VDR report as an annotation. Defaults to true when explain is enabled; false otherwise.
  -v, --version         Display the version
```

### Homebrew (macOS وLinux)

يقوم Homebrew بتثبيت [الملف التنفيذي المستقل](#standalone-binaries-no-python-or-nodejs-required) باسم `depscan` من [OWASP dep-scan tap](https://github.com/owasp-dep-scan/homebrew-tap)، مع تضمين cdxgen دون الحاجة إلى Python أو Node.js. يقبل `brew trust` الـ tap، وهو ما يتطلبه Homebrew قبل تحميل الصيغ من tap تابع لجهة خارجية عند تعيين `HOMEBREW_REQUIRE_TAP_TRUST`:

```bash
brew tap owasp-dep-scan/tap
brew trust --tap owasp-dep-scan/tap
brew install dep-scan
depscan --src $PWD --reports-dir $PWD/reports
```

### ملفات تنفيذية مستقلة (لا تتطلب Python أو Node.js)

تُرفَق ملفات تنفيذية مسبقة البناء أحادية الملف مع كل [إصدار على GitHub](https://github.com/owasp-dep-scan/dep-scan/releases). وهي تتضمن ملفاً تنفيذياً SEA مطابقاً لـ [cdxgen](https://github.com/cdxgen/cdxgen)، لذا يعمل إنشاء BOM مباشرةً دون الحاجة إلى تثبيت Python أو Node.js أو cdxgen.

| المنصة                | المعمارية     | الملف                       |
| --------------------- | ------------- | --------------------------- |
| Linux (glibc)         | x86_64        | `depscan-linux-amd64`       |
| Linux (glibc)         | arm64         | `depscan-linux-arm64`       |
| Linux (musl / Alpine) | x86_64        | `depscan-linux-amd64-musl`  |
| Linux (musl / Alpine) | arm64         | `depscan-linux-arm64-musl`  |
| macOS                 | Apple silicon | `depscan-darwin-arm64`      |
| macOS                 | Intel         | `depscan-darwin-amd64`      |
| Windows               | x86_64        | `depscan-windows-amd64.exe` |

لكل ملف ملف `.sha256` مطابق للتحقق منه.

```bash
# Example: Linux x86_64
curl -LO https://github.com/owasp-dep-scan/dep-scan/releases/latest/download/depscan-linux-amd64
curl -LO https://github.com/owasp-dep-scan/dep-scan/releases/latest/download/depscan-linux-amd64.sha256
sha256sum -c depscan-linux-amd64.sha256
chmod +x depscan-linux-amd64
./depscan-linux-amd64 --src $PWD --reports-dir $PWD/reports
```

> [!NOTE]
> إن ملفات macOS الثنائية غير موقّعة حاليًا. عند التشغيل الأول قد يحظرها Gatekeeper في macOS؛ أزل سمة الحجر الصحي باستخدام `xattr -d com.apple.quarantine ./depscan-darwin-arm64` (أو اسمح بالملف الثنائي من System Settings، Privacy & Security).

> [!NOTE]
> لا يزال يتم تنزيل قاعدة بيانات الثغرات عند التشغيل الأول. يتم تضمين cdxgen فقط، وليس قاعدة بيانات الثغرات. استخدم الأمر `depscan-vdb` لاختيار نسخة محددة من قاعدة البيانات، على سبيل المثال `depscan-vdb download --scope app` للحصول على قاعدة بيانات أصغر خاصة بالتطبيقات فقط. راجع [دليل قاعدة بيانات الثغرات](https://depscan.readthedocs.io/vulnerability-database) للاطلاع على مصفوفة الصور الكاملة.

تضمّن جميع الملفات الثنائية المستقلة `blint`، ولكن ليس الواجهة الخلفية الاختيارية للتفكيك `nyxstone` (التي لا تتوفر لها حزم wheels ولا دعم لـ Windows). لذلك لا يتوفر تحليل الملفات الثنائية العميق القائم على التفكيك في الملفات الثنائية المستقلة؛ استخدم حزمة Python (`pip install owasp-depscan[all]`) إذا كنت بحاجة إليها.

### فحص الحاويات محليًا (إصدار Python)

افحص مشروع Java.

```bash
depscan --src <path> -o containertests -t java
```

افحص وسم `latest` للحاوية `shiftleft/scan-slim`

```bash
depscan --src shiftleft/scan-slim -o containertests -t docker
```

أدرج `license` في النوع لإجراء تدقيق الترخيص.

```bash
depscan --src shiftleft/scan-slim -o containertests -t docker license
```

يمكنك أيضًا تحديد الصورة باستخدام ملخص sha256

```bash
depscan --src redmine@sha256:a5c5f8a64a0d9a436a0a6941bc3fb156be0c89996add834fe33b66ebeed2439e -o containertests -t docker
```

يمكنك أيضًا حفظ صور الحاويات باستخدام الأمر docker أو podman save وتمرير الأرشيف إلى depscan للفحص.

```bash
docker save -o /tmp/scanslim.tar shiftleft/scan-slim:latest
# podman save --format oci-archive -o /tmp/scanslim.tar shiftleft/scan-slim:latest
depscan --src /tmp/scanslim.tar -o reports -t docker
```

راجع اختبارات docker ضمن سير عمل إجراءات GitHub لهذا المستودع للحصول على مزيد من الأمثلة.

### فحص المشاريع محليًا (حاوية Docker)

يمكن استخدام صورة الحاوية `ghcr.io/owasp-dep-scan/dep-scan` لإجراء الفحص.

للفحص باستخدام الإعدادات الافتراضية

```bash
docker run --rm -v $PWD:/app ghcr.io/owasp-dep-scan/dep-scan depscan --src /app --reports-dir /app/reports
```

للفحص باستخدام إعدادات مبنية على متغيرات بيئة مخصصة

```bash
docker run --rm \
    -e VDB_HOME=/db \
    -e GITHUB_TOKEN=<token> \
    -v /tmp:/db \
    -v $PWD:/app ghcr.io/owasp-dep-scan/dep-scan depscan --src /app --reports-dir /app/reports
```

في المثال أعلاه، يتم تركيب `/tmp` كـ `/db` داخل الحاوية. ثم يتم تحديد هذا الدليل كـ `VDB_HOME` لتخزين معلومات الثغرات مؤقتًا. بهذه الطريقة يمكن تخزين قاعدة البيانات مؤقتًا وإعادة استخدامها لتحسين الأداء.

### وضع الخادم

يمكن تشغيل dep-scan و cdxgen في وضع الخادم. استخدم ملف docker-compose المرفق للبدء.

```bash
git clone https://github.com/owasp-dep-scan/dep-scan
docker compose up
```

ملف compose المرفق يضبط `DEPSCAN_SERVER_API_KEY` على قيمة نائبة تطويرية افتراضيًا حتى تتمكن خدمة dep-scan من الارتباط بـ `0.0.0.0`. تجاوز هذه القيمة قبل كشف الخدمة خارج مختبر محلي.

```bash
depscan --server --server-host 127.0.0.1 --server-port 7070
```

إذا كنت بحاجة إلى ربط dep-scan بعنوان غير محلي، فقم بتعيين مفتاح API أولاً:

```bash
export DEPSCAN_SERVER_API_KEY="change-this-before-production"
depscan --server --server-host 0.0.0.0 --server-port 7070
```

> [!IMPORTANT]
> يرفض dep-scan الارتباط بعنوان غير محلي دون وجود `DEPSCAN_SERVER_API_KEY` أو موافقة صريحة عبر `DEPSCAN_SERVER_ALLOW_UNAUTHENTICATED_BIND=true`.

استخدم نقطة النهاية `/scan` لتنفيذ عمليات الفحص.

> [!NOTE]
> المعامل `type` إلزامي في وضع الخادم. عند تفعيل مصادقة مفتاح API، أرسل المفتاح باستخدام `X-API-Key` أو `Authorization: Bearer <key>`.

- فحص دليل محلي.
  فحص ملف SBOM (موجود محليًا).

```bash
curl \
  -H 'X-API-Key: dev-only-change-me' \
  --json '{"path": "/tmp/vulnerable-aws-koa-app/sbom_file.json", "type": "js"}' \
  http://127.0.0.1:7070/scan
```

- فحص مستودع GitHub.

```bash
curl \
  -H 'Authorization: Bearer dev-only-change-me' \
  --json '{"url": "https://github.com/HooliCorp/vulnerable-aws-koa-app", "type": "js"}' \
  http://127.0.0.1:7070/scan \
  -o app.vdr.json
```

- رفع ملف SBOM وإنشاء النتائج بناءً عليه.

```bash
curl -X POST \
  -H 'X-API-Key: dev-only-change-me' \
  -H 'Content-Type: multipart/form-data' \
  -F 'file=@/tmp/app/sbom_file.json' \
  http://127.0.0.1:7070/scan?type=js
```

## التطوير المحلي

قم بإعداد uv باتباع [التوثيق](https://docs.astral.sh/uv/) الرسمي.

```shell
uv sync --all-extras --all-packages
uv run depscan --help
uv run pytest
uv run pyrefly check
```

يستخدم فحص الأنواع [pyrefly](https://pyrefly.org) (توجد الإعدادات في
`[tool.pyrefly]` داخل `pyproject.toml`)؛ ومن المتوقع أن يُبلّغ الفحص عن صفر
من الأخطاء.

### إعداد VDB محليًا

```shell
vdb --clean
vdb --download-image
# To scan containers and OS images
# vdb --download-full-image
```

### فحص depscan المحلي

```shell
uv run depscan --config .config/depscan-dev.toml
```

سيؤدي هذا تلقائيًا إلى استخدام التكوين المحدد في ملف التكوين المحلي [file](https://github.com/owasp-dep-scan/dep-scan/blob/master/.config/depscan.toml).

## التوثيق

التوثيق الكامل متاح على [depscan.readthedocs.io](https://depscan.readthedocs.io). الصفحات الرئيسية:

- [اللغات المدعومة ومصفوفة إمكانية الوصول](https://depscan.readthedocs.io/supported-languages)
- [تحليل إمكانية الوصول](https://depscan.readthedocs.io/reachability-analysis) (المحور)
    - [نموذج إمكانية الوصول](https://depscan.readthedocs.io/concepts/reachability-model)
    - [كيف يحدد dep-scan الأولويات](https://depscan.readthedocs.io/concepts/prioritization)
    - [SBOM والأدلة](https://depscan.readthedocs.io/concepts/sbom-and-evidence)
    - أدلة اللغات: [Rust](https://depscan.readthedocs.io/languages/rust-reachability)، [Go](https://depscan.readthedocs.io/languages/go-reachability)، [.NET](https://depscan.readthedocs.io/languages/dotnet-reachability)، [JVM/JS/Python/PHP](https://depscan.readthedocs.io/languages/jvm-js-python-php-reachability)
    - المحللات: [إمكانية الوصول في الأطر](https://depscan.readthedocs.io/analyzers/framework-reachability)، [إمكانية الوصول الدلالية](https://depscan.readthedocs.io/analyzers/semantic-reachability)
- المخرجات والامتثال: [دليل VDR](https://depscan.readthedocs.io/output/vdr-guide)، [دليل CSAF VEX](https://depscan.readthedocs.io/output/vex-csaf-guide)
- [التخصيص عبر متغيرات البيئة](https://depscan.readthedocs.io/env-var#customization-through-environment-variables)
- الاستخدام المتقدم: [GitHub Security Advisory](https://depscan.readthedocs.io/adv-usage#github-security-advisory)، [وضع الاقتراح](https://depscan.readthedocs.io/adv-usage#suggest-mode)، [تدقيق مخاطر الحزم](https://depscan.readthedocs.io/adv-usage#package-risk-audit)، [فحص نظام التشغيل المباشر](https://depscan.readthedocs.io/adv-usage#live-os-scan)، [فحص التراخيص](https://depscan.readthedocs.io/adv-usage#license-scan)، [التقارير المخصصة](https://depscan.readthedocs.io/adv-usage#custom-reports)

## الترخيص

رخصة MIT

تم التبرع بهذا المشروع لمؤسسة OWASP في أغسطس 2023 من قبل AppThreat Ltd.

## التمويل

يُموَّل هذا المشروع من خلال [NGI Zero Core](https://nlnet.nl/core)، وهو صندوق أنشأته [NLnet](https://nlnet.nl) بدعم مالي من برنامج [Next Generation Internet](https://ngi.eu) التابع للمفوضية الأوروبية. اعرف المزيد على [صفحة مشروع NLnet](https://nlnet.nl/project/OWASP-dep-scan).

[<img src="https://assets.kitploit.com/production/public/readmes/6282/0a90ce2437c2c6d5609888b393ff1dd7f449dfc396d9a15484ddb51d849646a9.png" alt="NLnet foundation logo" width="20%" />](https://nlnet.nl)
[<img src="https://nlnet.nl/image/logos/NGI0_tag.svg" alt="NGI Zero Logo" width="20%" />](https://nlnet.nl/core)
تنزيل الأداة