| name | dependency-audit |
| description | Find vulnerable and outdated dependencies across ecosystems (Python, Node, .NET, Rust, Go). Use when auditing a project for CVEs, preparing a release, or investigating a security report. |
| requires_bins | [] |
When to use
- Pre-release security audit
- Investigating a reported CVE in a dependency
- Routine hygiene: find outdated/unpinned packages
- Multi-language monorepo sweeps
Quick commands by ecosystem
Python — pip-audit
uv tool install pip-audit
pip-audit
pip-audit -r requirements.txt
pip-audit --format json -r requirements.txt
Node — npm audit + outdated
npm audit
npm audit fix
npm outdated
pnpm audit
yarn audit
Multi-ecosystem — osv-scanner (recommended cross-language)
go install github.com/google/osv-scanner/cmd/osv-scanner@latest
osv-scanner --recursive .
osv-scanner --lockfile package-lock.json
osv-scanner --lockfile requirements.txt
osv-scanner --format json --recursive .
osv-scanner covers: npm, PyPI, Go, Cargo, Maven, NuGet, RubyGems, Pub.
.NET — dotnet list package
dotnet list package --vulnerable --include-transitive
dotnet list package --outdated
dotnet list MyApp.csproj package --vulnerable --include-transitive
Rust — cargo audit
cargo install cargo-audit
cargo audit
cargo audit --json
Go — govulncheck
go install golang.org/x/vuln/cmd/govulncheck@latest
govulncheck ./...
govulncheck -mode binary ./myapp
Reading severity
| Field | Meaning |
|---|
| CRITICAL / HIGH | Patch immediately; block release if exploitable |
| MODERATE | Schedule fix within sprint |
| LOW | Informational; fix in batch |
| GHSA-xxxx / CVE-xxxx | Cross-reference at https://osv.dev for full detail |
Focus on directly imported packages first. Transitive CVEs only matter if the vulnerable code path is reachable.
Remediation
Pin to a safe version (fastest):
pip-audit --fix
uv pip install "package>=safe_version"
npm install package@safe_version
dotnet add package PackageName --version safe_version
cargo update -p package_name --precise safe_version
go get package@safe_version
go mod tidy
Check transitive exposure: if the vulnerability is in a transitive dep and the direct dep hasn't released a fix yet, check whether your code actually calls the vulnerable symbol — if not, document and defer.