dep-scan is a free, open source compliance & risk management project written in Python and released under MIT. It has 1,285 GitHub stars, 138 forks and 82 open issues, and was last pushed 1 months ago. On this registry it ranks #41 of 45 tracked projects in Compliance & Risk Management, with 5 head-to-head comparisons available.

What is dep-scan?

OWASP dep-scan is a next-generation security and risk audit tool that checks project dependencies for known vulnerabilities, advisories and license limitations, built for developers and security teams that audit local repositories or container images.

What it is

OWASP dep-scan is an open-source security and risk audit tool written in Python and published under the MIT licence. It examines application code, local repositories, Linux container images, Kubernetes manifests and operating system packages to identify known CVEs, then prioritises them by whether the vulnerable code is actually reachable. It is a project of the OWASP organisation, with documentation hosted at depscan.readthedocs.io and 1,285 stars and 138 forks on its repository.

The concrete problem it solves is audit noise. Traditional dependency scanners read a bill of materials, report every declared package with a known CVE, and leave the team to work out which of those findings matter. dep-scan replaces that flat declaration-based report with reachability-aware results: a vulnerable package whose code sits on an executed path is marked Reachable, while a package that appears in the BOM but is never called is not. It also replaces ad-hoc licence checking and manual advisory tracking by generating a Software Bill-of-Materials with Vulnerability Disclosure Report (VDR) information, a CSAF 2.0/2.1 VEX document, and a package risk audit for dependency confusion attacks and maintenance risks.

Key capabilities

  • Scans local repositories, Linux container images, Kubernetes manifests and OS packages for known CVEs with prioritisation.
  • Runs reachability analysis across seven language ecosystems through four slicers: atom for JVM, JavaScript/TypeScript, Python and PHP; rusi for Rust; golem for Go; and dosai for .NET.
  • Feeds every slicer into one shared, purl-keyed reachability engine so behaviour is uniform across languages.
  • Enables reachability by default via --reachability-analyzer FrameworkReachability; SemanticReachability additionally attributes reached services, endpoints and post-build binary or container reachability.
  • Produces an SBOM with VDR information, and a CSAF 2.0/2.1 VEX document documented in contrib/CSAF_README.md.
  • Performs package risk audit for dependency confusion attacks and maintenance risks.
  • Scans packages locally and quickly, with no server required for package vulnerability scanning.

Who uses it and how

  • Security teams integrating dependency auditing into ASPM and vulnerability management platforms, which the README calls out as an intended use.
  • CI pipelines, where the README states the tool is ideal for integration.
  • Container teams scanning Linux images and Kubernetes manifests rather than source trees alone.
  • Developers scanning local repositories on a workstation, where the missing-server design keeps results local.

Getting started

Run dep-scan locally through the documented Python install, use the standalone binaries that require neither Python nor Node.js, or run the Docker container. A server mode is available for hosted deployment, and full instructions live at depscan.readthedocs.io.

How it compares

No competing scanning products and no list of paid tools it replaces appear in the facts provided here, so it stands alone in this registry on that axis. It consumes SBOM data generated by cdxgen and depends on the atom, rusi, golem and dosai reachability engines, which are companion components rather than alternatives.

When to use it — and when not to

A self-hoster must operate a Python runtime or standalone binary, a container runtime for image scanning, and, if server mode is used, the associated service; the reachability path pulls in external slicers for each language. Teams that want a purely hosted, zero-setup commercial scanner, or those unwilling to run language-specific analysis tooling, should look elsewhere. The repository carries 82 open issues and last received a push on 2026-08-16, so the project is active but imperfectly finished, and any team adopting it should expect to track ongoing changes.

project readme (upstream, from github) — read inline

Introduction

OWASP dep-scan is a next-generation security and risk audit tool based on known vulnerabilities, advisories, and license limitations for project dependencies. Both local repositories and container images are supported as the input, and the tool is ideal for integration with ASPM/VM platforms and in CI environments.

SBOM release

Contents

Features

  • Scan most application code (local repos, Linux container images, Kubernetes manifests, and OS) to identify known CVEs with prioritization
  • Perform advanced reachability analysis for multiple languages (see the reachability matrix below)
  • Package vulnerability scanning is performed locally and is quite fast. No server is used
  • Generate Software Bill-of-Materials (SBOM) with Vulnerability Disclosure Report (VDR) information
  • Generate a Common Security Advisory Framework (CSAF) 2.0/2.1 VEX document (check out the CSAF Readme)
  • Perform deep packages risk audit for dependency confusion attacks and maintenance risks (see the risk audit docs)

Precise Reachable data-flows

Detailed data flows to identify both reachable and non-reachable paths in your application based on the full context.

Reachable Flows

Reachability matrix

dep-scan computes reachability for seven language ecosystems through four slicers. A vulnerable package whose code is actually on an executed path is marked Reachable, while a package that is merely declared in the BOM but never called is not. Every slicer feeds the same shared, purl-keyed reachability engine, so the behavior is uniform across languages. Reachability is on by default (--reachability-analyzer FrameworkReachability); SemanticReachability additionally attributes reached services, endpoints, and post-build (binary/container) reachability.

Language / ecosystem Reachability engine Default analyzer
Java / JVM (Groovy, Kotlin, Scala) atom FrameworkReachability
JavaScript / TypeScript atom FrameworkReachability
Python atom FrameworkReachability
PHP atom FrameworkReachability
Rust rusi FrameworkReachability
Go golem FrameworkReachability
.NET (C#, VB, F#, R) dosai FrameworkReachability

For the concepts behind reachability and prioritization, read the reachability model and prioritization chapters. For per-language worked examples, see the Language Guides. For the compliance story (VDR and CSAF VEX), see the VDR guide and the CSAF VEX guide.

Reachability is on by default under --profile research, which is what dep-scan uses when reachability is on. The commands below are enough to get started; the per-language guides cover binary resolution, backend and network safety, restore requirements, and worked examples on the in-repo fixtures.

Rust (rusi). cdxgen runs rusi and persists its report, which dep-scan converts into the shared pipeline, so a crate that is actually called (for example time::now() for RUSTSEC-2020-0071) is Reachable while one merely present is not. See the Rust reachability guide.

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

Go (golem). dep-scan invokes golem directly for Go projects (needs go on PATH), marking a module Reachable when its functions are on a traced path. Use --go-analyzer-network offline for untrusted repos with a warm module cache. See the Go reachability guide.

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

.NET (dosai). cdxgen runs dosai, which emits an explicit per-package reachability verdict (PackageReachability with ReachabilityKind and Confidence) that dep-scan treats as authoritative, so a NuGet package actually called (for example JsonConvert.DeserializeObject on a controlled input) is Reachable. Scan a restored tree for versioned purls. See the .NET reachability guide.

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

JVM, JavaScript/TypeScript, Python, and PHP (atom). These four ecosystems share the atom slicer, which builds a language-agnostic intermediate representation and performs static slicing. See the JVM, JS, Python, and PHP reachability guide.

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

To move beyond framework-forward reachability to endpoint, service, and post-build tiers, pass --reachability-analyzer SemanticReachability with a --bom-dir of lifecycle BOMs. See the semantic reachability guide.

Clear insights about CVEs

Understand CVEs clearly without having to read through the description.

Dependency Tree with Insights

Automatic prioritization

Only focus on CVEs that need your attention.

Prioritization

Stay proactive

Always stay a step ahead with advanced vulnerability and exploit prediction.

Proactive Measures

Vulnerability Data sources

Linux distros

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

Quick Start

dep-scan is ideal for use during continuous integration (CI) and as a local development tool.

Scanning projects locally (Python version)

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]

This would install two commands called cdxgen and depscan.

You can invoke the scan command directly with the various options.

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

The full list of options is below:

usage: dep

readme truncated — read the full docs on github

Frequently asked questions

Is dep-scan free to use?

dep-scan is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does dep-scan do?

OWASP dep-scan is a next-generation security and risk audit tool based on known vulnerabilities, advisories, and license limitations for project dependencies. B

What is dep-scan written in?

dep-scan is primarily written in Python. Its source is publicly available at https://github.com/owasp-dep-scan/dep-scan, and it has 1,285 GitHub stars.