Dependency Auditor
Analyze project dependencies for known vulnerabilities, staleness, licensing conflicts, and supply chain risks.
Guiding Principle
"Your software is only as secure as its weakest dependency."
Procedure
Step 1 — Dependency Inventory
- Parse all manifest files to build a complete dependency tree (direct + transitive).
- Separate production dependencies from dev/test dependencies.
- Identify pinning strategy: exact versions, ranges, or floating.
- Flag dependencies without lock file entries as
[INFERENCIA] risk.
- Count total dependency surface area (direct count vs. transitive count).
Step 2 — Vulnerability Scan
- Cross-reference dependencies against known CVE databases (NVD, GitHub Advisory, OSV).
- Classify each vulnerability by CVSS score: Critical (9.0+), High (7.0-8.9), Medium (4.0-6.9), Low (<4.0).
- Identify whether vulnerable code paths are reachable in the project.
- Check for known exploits in the wild vs. theoretical vulnerabilities.
- Document each finding with CVE ID, affected package, and remediation path
[HECHO].
Step 3 — Freshness & Maintenance Analysis
- Compare installed versions against latest available releases.
- Calculate days-behind-latest for each dependency.
- Check last publish date and commit activity on source repositories.
- Flag abandoned packages (no commits >12 months) as
[INFERENCIA] risk.
- Identify dependencies with pending major version upgrades.
Step 4 — License Compliance
- Extract license declarations from each package.
- Classify licenses: permissive (MIT, Apache-2.0), copyleft (GPL, AGPL), proprietary, unknown.
- Flag copyleft licenses in proprietary projects as compliance risk.
- Identify packages with no declared license.
- Produce a license compatibility matrix for the dependency tree.
Quality Criteria
- Every CVE finding includes ID, severity, and remediation
[HECHO]
- Freshness metrics based on actual registry data, not assumptions
- License classification follows SPDX identifier standards
- Transitive dependencies are included, not just direct
Anti-Patterns
- Running
npm audit alone and calling it a day (misses transitive, ignores context)
- Treating all vulnerabilities equally regardless of reachability
- Ignoring dev dependencies (they run in CI and developer machines)
- Assuming MIT means "no restrictions" without reading the actual terms