Dependency scanning (Software Composition Analysis) is one of the highest ROI security investments you can make. This guide covers every major SCA tool and how to integrate them into your pipeline.
Anay Pandya
1,447 words
Anay Pandya
Founder of ZeriFlow · 10 years fullstack engineering · About the author
Key Takeaways
Dependency scanning — also called Software Composition Analysis (SCA) — is the practice of automatically identifying known vulnerabilities in the third-party libraries and packages your application uses. Given that modern applications are often 80-90% open-source code by volume, dependency vulnerabilities represent one of the largest and most commonly exploited attack surfaces in web security.
<div class="zf-stat-callout" style="background:#0d1117;border:1px solid rgba(16,185,129,0.25);border-left:3px solid #10b981;border-radius:4px;padding:16px 20px;margin:24px 0"> <p style="margin:0 0 4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.15em;color:#10b981;font-family:monospace">ZeriFlow Data — 12,400+ sites analyzed</p> <p style="margin:0;font-size:13px;color:#e2e8f0;line-height:1.6;font-family:monospace">In ZeriFlow's corpus of 12,400+ scanned sites, 72% score below 70/100 on security. Only 7% achieve a score above 85 — a threshold that corresponds to passing all OWASP-aligned header and configuration checks.</p> </div>
Keep reading
Is your site actually secure?
Run a free check — 60 seconds
This guide covers the fundamentals of SCA, every major tool from free to enterprise, and how to integrate dependency scanning into your CI/CD pipeline without slowing down development.
Complement SCA with deployment checks: After fixing your dependency vulnerabilities, run ZeriFlow to verify that your deployed application's security configuration — headers, TLS, exposed paths — is also clean. It takes under a minute.
The Log4Shell vulnerability (CVE-2021-44228) affected thousands of organizations because they were running Java applications that included Log4j — often as a transitive dependency several levels deep in the dependency tree. Many teams did not even know they had Log4j in their stack.
This is the SCA problem in a nutshell:
express, requests).A single vulnerable transitive dependency deep in your stack can expose your entire application to remote code execution.
package.json, requirements.txt, pom.xml, Gemfile.lock, go.sum, etc.Built directly into npm, npm audit is the fastest way to check Node.js dependencies:
npm audit
npm audit --audit-level=high # Only show High and Critical
npm audit fix # Auto-fix by upgrading packages
npm audit fix --force # Fix breaking changes too (careful)Limitations: Only covers direct and transitive Node.js dependencies; no reporting formats; no CI/CD gate built in.
pip install pip-audit
pip-audit # Scan current environment
pip-audit -r requirements.txt # Scan from requirements file
pip-audit --format json > audit.json # JSON output for CIpip-audit queries the OSV database and is the recommended Python SCA tool.
The most widely used open-source, multi-ecosystem SCA tool:
dependency-check --project 'MyApp' --scan ./src --format HTMLSupports: Java, .NET, Node.js, Ruby, Python, PHP, and more. Generates HTML, JSON, XML, JUnit, and SARIF reports. Ideal for teams that need a self-hosted, no-cost, enterprise-capable SCA tool.
CI/CD integration (Maven):
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>9.0.0</version>
<configuration>
<failBuildOnCVSS>7</failBuildOnCVSS>
</configuration>
</plugin>Snyk is the most developer-friendly commercial SCA platform:
npm install -g snyk
snyk auth
snyk test # Scan current project
snyk test --severity-threshold=high
snyk monitor # Upload to Snyk dashboard for continuous monitoringSnyk advantages: - Fix PRs — automatically opens pull requests to upgrade vulnerable packages. - License scanning — detect licenses incompatible with your commercial use. - Container scanning — scan Docker images for vulnerable OS packages. - Infrastructure as code scanning — scan Terraform and CloudFormation. - IDE plugins — real-time scanning in VS Code, IntelliJ.
Snyk has a generous free tier for open-source projects.
If you use GitHub, Dependabot is the lowest-friction SCA tool available:
For advanced configuration, add .github/dependabot.yml:
version: 2
updates:
- package-ecosystem: npm
directory: '/'
schedule:
interval: weekly
open-pull-requests-limit: 10Google's OSV (Open Source Vulnerabilities) project provides a free API for programmatic vulnerability lookups:
curl -X POST https://api.osv.dev/v1/query -d '{"package": {"name": "lodash", "ecosystem": "npm"}, "version": "4.17.20"}'OSV is particularly useful for building custom tooling or integrating vulnerability data into your own dashboards.
name: Dependency Scan
on: [push, pull_request]
jobs:
dependency_scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm audit --audit-level=high- name: Snyk Security Scan
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=highdependency_scan:
image: owasp/dependency-check:latest
script:
- /usr/share/dependency-check/bin/dependency-check.sh
--project 'MyApp'
--scan .
--format JSON
--failOnCVSS 7
artifacts:
paths:
- dependency-check-report.json1. Scan lock files, not just manifest files. package-lock.json and yarn.lock contain the exact resolved versions of all transitive dependencies — far more accurate than package.json which only specifies version ranges.
2. Block on Critical, warn on High. A build policy that blocks on CVSS >= 9.0 (Critical) and warns on CVSS 7.0-8.9 (High) is a reasonable starting point. Never block on Medium without strong justification — too many false positives.
3. Schedule daily scans. New CVEs are disclosed daily. A weekly or daily scheduled scan in CI ensures you are notified when a new vulnerability is published for a dependency you already have.
4. Track false positives explicitly. When you accept a risk (e.g., a CVE that affects a code path you do not use), document it with a suppression file and a review date. Undocumented suppressions accumulate silently.
5. Combine SCA with DAST. SCA tells you about known vulnerabilities in your libraries. DAST tools like ZeriFlow tell you about configuration issues in your deployed application. Both are necessary — they cover completely different attack surfaces.
A: SAST analyzes your own source code for insecure programming patterns. SCA analyzes your third-party dependencies for known CVEs. They are complementary — you need both.
A: No. SCA tools only find vulnerabilities that have been publicly disclosed and added to CVE databases. Zero-days, by definition, are not in any database yet.
A: Most SCA tools support suppression files (e.g., dependency-check-suppressions.xml for OWASP Dependency-Check). Document your reasoning and set a review date. Re-evaluate suppressions quarterly.
A: Prioritize by exploitability. A Critical RCE CVE in a library you actively use should be patched within 24-48 hours. A Medium-severity CVE in a dev-only dependency can follow your normal release cycle.
A: ZeriFlow focuses on configuration and header security scanning of deployed web applications — check your security headers, TLS, exposed paths, and 80+ related checks. For dependency vulnerability scanning, use npm audit, pip-audit, Snyk, or OWASP Dependency-Check. The two tools are complementary.
Dependency vulnerabilities are one of the most exploited attack vectors in modern web security — and they are almost entirely preventable with automated SCA. The tools are free, the integration is straightforward, and the ROI is immediate.
Start with the built-in tools for your ecosystem (npm audit, pip-audit) today. Add Dependabot for automatic fix PRs. Graduate to Snyk or OWASP Dependency-Check as your security program matures.
And complement your dependency scanning with ZeriFlow — your deployed application's configuration security is just as important as the libraries running inside it.
<!-- zf-internal-links -->
Check if your site is vulnerable to these attacks — free.
80+ automated security checks in under 60 seconds.
Related resources
Website Vulnerability Scanner
Run a broader website security audit across headers, TLS, DNS, cookies, SEO, and disclosure checks.
Security Headers Checker
Check CSP, HSTS, X-Frame-Options, and other response headers.
SSL Checker
Review TLS certificate, HTTPS, and transport security signals.
DMARC Checker
Validate email authentication records for domain spoofing protection.
CSP Checker
Review Content-Security-Policy coverage and common gaps.
June 24, 2026
Best Security Tools for AI Startups
Monitor your security score
Schedule recurring scans and catch regressions after deployments.