Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dep-scan — 도달 가능성 분석, SBOM 생성, 라이선스 감사 및 CI/CD 통합을 위한 컨테이너 이미지 스캐닝 기능을 갖춘 차세대 의존성 취약점 스캐너. | Kitploit
도구/GitHubGitHub/owasp-dep-scan/dep-scan
Vulnerability ScannersContainer SecurityDevSecOpsSupply Chain Security
GitHubowasp-dep-scan/dep-scan

dep-scan

도달 가능성 분석, SBOM 생성, 라이선스 감사 및 CI/CD 통합을 위한 컨테이너 이미지 스캐닝 기능을 갖춘 차세대 의존성 취약점 스캐너.

저장소 보기
1.3k1374413일 전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 매니페스트 및 OS)를 스캔하여 알려진 CVE를 식별하고 우선순위를 지정합니다
- 여러 언어에 대한 고급 도달 가능성 분석을 수행합니다(아래 [도달 가능성 매트릭스](#reachability-matrix) 참조)
- 패키지 취약점 스캔은 로컬에서 수행되며 매우 빠릅니다. 서버는 사용되지 않습니다
- 취약점 공개 보고서(VDR) 정보가 포함된 소프트웨어 자재 명세서(SBOM)를 생성합니다
- CSAF(Common Security Advisory Framework) 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은 네 개의 슬라이서를 통해 일곱 개의 언어 생태계에 대한 도달 가능성을 계산합니다. 코드가 실제로 실행 경로에 있는 취약한 패키지는 **도달 가능(Reachable)** 으로 표시되는 반면, 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이 이를 공유 파이프라인으로 변환합니다. 따라서 실제로 호출되는 크레이트(예: RUSTSEC-2020-0071의 `time::now()`)는 Reachable로 표시되지만, 단순히 존재하기만 하는 크레이트는 그렇지 않습니다. [Rust 도달 가능성 가이드](https://depscan.readthedocs.io/languages/rust-reachability)를 참고하십시오.

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

**Go (golem).** dep-scan은 Go 프로젝트에 대해 [golem](https://github.com/cdxgen/cdxgen-plugins-bin)을 직접 호출하며(`PATH`에 `go` 필요), 모듈의 함수가 추적된 경로에 있을 때 해당 모듈을 Reachable로 표시합니다. 모듈 캐시가 준비된 신뢰할 수 없는 저장소에는 `--go-analyzer-network offline`을 사용하세요. [Go reachability guide](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)를 실행하며, 이는 패키지별 도달 가능성 판정(`ReachabilityKind` 및 `Confidence`가 포함된 `PackageReachability`)을 명시적으로 출력하고 dep-scan은 이를 권위 있는 것으로 취급하므로, 실제로 호출되는 NuGet 패키지(예: 제어된 입력에 대한 `JsonConvert.DeserializeObject`)는 Reachable로 판정됩니다. 복원된 트리를 스캔하여 버전이 지정된 purl을 확인하세요. [.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의 `--bom-dir`을 함께 전달하세요. [시맨틱 도달 가능성 가이드](https://depscan.readthedocs.io/analyzers/semantic-reachability)를 참고하세요.

### CVE에 대한 명확한 통찰

설명을 일일이 읽지 않고도 CVE를 명확하게 이해할 수 있습니다.

![Dependency Tree with Insights](https://assets.kitploit.com/production/public/readmes/6282/34125c2b04cb176c6772f998114d2b6a17e62ead3c45243e0c93fb496e9aa530.png)

### 자동 우선순위 지정

주의가 필요한 CVE에만 집중하세요.

![Prioritization](https://assets.kitploit.com/production/public/readmes/6282/a15d5535abe0f1af9842e2889de77740ac86e97486027a477316b52ac4722cb4.png)

### 선제적 대응 유지

고급 취약점 및 익스플로잇 예측으로 항상 한발 앞서 나가세요.

![Proactive Measures](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는 [OWASP dep-scan tap](https://github.com/owasp-dep-scan/homebrew-tap)에서 [독립 실행형 바이너리](#standalone-binaries-no-python-or-nodejs-required)를 `depscan`으로 설치하며, cdxgen이 번들로 포함되어 Python이나 Node.js가 필요하지 않습니다. `brew trust`는 해당 tap을 신뢰하도록 설정하는데, Homebrew는 `HOMEBREW_REQUIRE_TAP_TRUST`가 설정된 경우 서드파티 tap에서 formula를 로드하기 전에 이를 요구합니다:

```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)에 첨부되어 있습니다. 이 실행 파일에는 일치하는 [cdxgen](https://github.com/cdxgen/cdxgen) SEA 바이너리가 함께 번들되어 있으므로, Python, Node.js 또는 cdxgen을 설치하지 않아도 BOM 생성이 바로 작동합니다.

| 플랫폼                | 아키텍처      | 에셋                        |
| --------------------- | ------------- | --------------------------- |
| 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 바이너리는 현재 서명되지 않은 상태입니다. 첫 실행 시 macOS Gatekeeper가 이를 차단할 수 있습니다. `xattr -d com.apple.quarantine ./depscan-darwin-arm64`로 격리 속성을 해제하거나 시스템 설정의 개인정보 보호 및 보안에서 바이너리를 허용하십시오.

> [!NOTE]
> 취약점 데이터베이스는 여전히 첫 실행 시 다운로드됩니다. 번들로 제공되는 것은 cdxgen뿐이며 취약점 DB는 포함되지 않습니다. `depscan-vdb` 명령을 사용하여 특정 데이터베이스 변형을 선택할 수 있습니다. 예를 들어 더 작은 앱 전용 데이터베이스의 경우 `depscan-vdb download --scope app`을 사용하십시오. 전체 이미지 매트릭스는 [취약점 데이터베이스 가이드](https://depscan.readthedocs.io/vulnerability-database)를 참조하십시오.

모든 독립 실행형 바이너리는 `blint`를 번들로 포함하지만, 선택적 `nyxstone` 디스어셈블리 백엔드는 포함하지 않습니다(휠도 없고 Windows 지원도 없음). 따라서 독립 실행형 바이너리에서는 심층 디스어셈블리 기반 바이너리 분석을 사용할 수 없습니다. 필요한 경우 Python 패키지(`pip install owasp-depscan[all]`)를 사용하십시오.

### 로컬에서 컨테이너 스캔하기 (Python 버전)

Java 프로젝트를 스캔합니다.

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

`shiftleft/scan-slim` 컨테이너의 `latest` 태그를 스캔합니다

```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
```

자세한 예시는 이 저장소의 GitHub action 워크플로 아래에 있는 docker 테스트를 참조하세요.

### 로컬에서 프로젝트 스캔하기 (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 파일은 dep-scan 서비스가 `0.0.0.0`에 바인딩할 수 있도록 기본적으로 `DEPSCAN_SERVER_API_KEY`를 개발용 플레이스홀더로 설정합니다. 로컬 랩 외부에 서비스를 노출하기 전에 이 값을 재정의하십시오.

```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
```

## 로컬 개발

공식 [문서](https://docs.astral.sh/uv/)를 따라 uv를 설정하세요.

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

타입 검사는 [pyrefly](https://pyrefly.org)를 사용합니다(설정은 `pyproject.toml`의
`[tool.pyrefly]`에 있습니다). 검사는 오류가 0개로 보고되어야 합니다.

### 로컬 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
```

이렇게 하면 로컬 구성 [파일](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 보안 권고](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), [실시간 OS 스캔](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 라이선스

이 프로젝트는 2023년 8월 AppThreat Ltd.에 의해 OWASP Foundation에 기증되었습니다.

## 후원

이 프로젝트는 [NLnet](https://nlnet.nl)이 설립하고 유럽연합 집행위원회의 [Next Generation Internet](https://ngi.eu) 프로그램의 재정 지원을 받아 설립된 기금인 [NGI Zero Core](https://nlnet.nl/core)를 통해 후원받습니다. 자세한 내용은 [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)
도구 다운로드