You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**🏆 Officially recognized as an [OWASP Incubator Project](https://owasp.org/cve-lite-cli)**
18
18
19
-
<p>Fast, developer-friendly vulnerability scanning for JavaScript and TypeScript projects.<br/>Practical fix guidance. Offline support. Usage-aware reachability. Clear direct vs transitive visibility.</p>
19
+
<p>Vulnerability scanning that belongs in your terminal — not your CI pipeline.<br/>Scan your lockfile, get copy-and-run fix commands, and ship clean code.</p>
20
20
21
21
<strong>Scan. Understand. Fix.</strong>
22
22
@@ -45,6 +45,24 @@
45
45
46
46
---
47
47
48
+
## The problem with how security scanning works today
49
+
50
+
Most security tooling is designed around pipelines, not people.
51
+
52
+
Dependabot files PRs you'll get to eventually. CI scanners block merges hours after the fact. Security dashboards surface a list of CVE IDs with no clear path to resolving them. By the time a developer is looking at a scan result, the code has already been reviewed and is waiting to ship.
53
+
54
+
The feedback loop is too slow to be useful, and too noisy to be trusted. Developers learn to ignore it.
55
+
56
+
There is also a more fundamental problem: these tools tell you what is vulnerable. Very few tell you what to actually do about it. The result is a gap between detection and remediation that security teams paper over with manual triage, and developers experience as alert fatigue.
57
+
58
+
## A different model
59
+
60
+
CVE Lite CLI is built around a different idea: **vulnerability scanning belongs at the developer's terminal, not at the end of a pipeline.**
61
+
62
+
It reads your lockfile locally, queries [OSV](https://osv.dev) for advisory data, and produces a concrete remediation plan — not a list of identifiers. You get copy-and-run `npm install`, `pnpm add`, `yarn add`, or `bun add` commands scoped to your package manager. You see exactly which packages are directly installed versus pulled in transitively. You can scan with no internet connection in restricted-network environments.
63
+
64
+
The tool is designed for the moment right before you push: fast, honest, and actionable.
65
+
48
66
## Quick start
49
67
50
68
```bash
@@ -58,39 +76,18 @@ Or one-off with `npx`:
58
76
npx cve-lite-cli /path/to/project
59
77
```
60
78
61
-
## What is CVE Lite CLI
62
-
63
-
CVE Lite CLI scans JavaScript and TypeScript projects for known dependency vulnerabilities and tells you what to fix first. It reads your lockfile locally, queries [OSV](https://osv.dev) for advisory data, and produces a practical remediation plan — not just a list of advisory IDs.
79
+
No account. No configuration. No source code leaves your machine.
64
80
65
-
It is built for the moment right before release: fast, local-first, and honest about what it does and does not do.
81
+
## What it does
66
82
67
-
**Key differentiators:**
68
-
69
-
-**Copy-and-run fix commands** — turns findings into package-manager-aware `npm install`, `pnpm add`, `yarn add`, or `bun add` commands you can run immediately
70
-
-**Usage-aware reachability scanning** — uses static analysis to detect if vulnerable packages are actually imported in your code, cutting alert fatigue with `--usage` and `--only-used`
71
-
-**Direct vs transitive visibility** — shows whether the risk comes from something you installed directly or a nested dependency
72
-
-**Offline advisory DB** — sync advisory data ahead of time and scan with zero runtime API calls, useful for enterprise and restricted-network environments
73
-
-**No account required** — no sign-up, no cloud dashboard, no source code upload
74
-
-**Small dependency footprint** — only four runtime dependencies, intentionally kept minimal for a security tool
<sub>✅ = built-in strength · ⚠️ = partial or workflow-dependent · ❌ = not a core strength</sub>
92
-
93
-
For detailed per-tool analysis, see [Comparison with other tools](docs/comparison.md).
83
+
-**Produces copy-and-run fix commands** — every finding comes with a package-manager-aware install command you can run immediately
84
+
-**Distinguishes direct from transitive risk** — shows whether the vulnerability is in something you installed or buried three levels deep in a dependency chain
85
+
-**Usage-aware reachability** — optionally uses static analysis to detect whether vulnerable packages are actually imported in your code, cutting noise with `--usage` and `--only-used`
86
+
-**Offline advisory DB** — sync advisory data ahead of time and scan with zero runtime API calls, designed for enterprise and air-gapped environments
87
+
-**Interactive HTML report** — generate a self-contained dashboard with severity cards, a searchable findings table, and copy-ready fix commands (`--report`)
88
+
-**Auto-fix mode** — apply validated direct dependency fixes and rescan automatically (`--fix`)
89
+
-**CI-ready** — `--fail-on high` exits non-zero on findings at or above a severity threshold; a first-party [GitHub Action](https://github.com/marketplace/actions/cve-lite-cli) is available on the Marketplace
90
+
-**Minimal footprint** — four runtime dependencies, intentionally kept small for a security tool
94
91
95
92
## What it looks like
96
93
@@ -126,16 +123,97 @@ For detailed per-tool analysis, see [Comparison with other tools](docs/compariso
126
123
</p>
127
124
</details>
128
125
129
-
## HTML vulnerability report (`--report`)
126
+
## Workflow integration
130
127
131
-
Generate a self-contained HTML dashboard from any scan — severity cards, an interactive findings table, and copy-ready fix commands, all written to a local directory and opened automatically in your browser.
128
+
CVE Lite CLI fits at every stage of the development workflow, not just CI.
**Local development** — run a scan before opening a PR. The default output is fast and minimal. `--verbose` adds the full fix plan with dependency paths and prioritized remediation commands. `--report` opens an interactive HTML dashboard.
131
+
132
+
**CI pipelines** — use `--fail-on high` to gate builds on severity. JSON output (`--json`) integrates with SIEM, dashboards, and custom automation. SARIF output is on the roadmap for direct integration with GitHub Security.
133
+
134
+
**Restricted and enterprise environments** — sync the advisory database ahead of time with `cve-lite advisories sync`, then scan offline with `--offline`. No runtime outbound calls during the scan. Syncing ~217,065 advisory records completes in under 9 seconds.
135
+
136
+
**GitHub Actions** — a first-party action is available on the Marketplace:
137
+
138
+
```yaml
139
+
- uses: OWASP/cve-lite-cli@v1
140
+
with:
141
+
verbose: "true"
142
+
fail-on: high
136
143
```
137
144
138
-
See the [HTML Report guide](docs/html-report.md) for the full option reference and output details.
145
+
CVE Lite CLI scans its own dependencies in CI. See [`self-scan.yml`](https://github.com/OWASP/cve-lite-cli/blob/main/.github/workflows/self-scan.yml).
146
+
147
+
For full CI patterns including offline workflows, git hooks, and scripted automation, see the [CI and Workflow Integration guide](docs/ci-integration.md).
<sub>✅ = built-in strength · ⚠️ = partial or workflow-dependent · ❌ = not a core strength</sub>
165
+
166
+
For detailed per-tool analysis, see [Comparison with other tools](docs/comparison.md).
167
+
168
+
## Real-world validation
169
+
170
+
CVE Lite CLI has been evaluated against real open-source projects to verify that it surfaces meaningful issues — including non-obvious transitive vulnerabilities and complex upgrade paths — not just low-signal advisory matches.
171
+
172
+
- [OWASP Juice Shop](docs/case-studies/owasp-juice-shop.md) — scanning a deliberately vulnerable application with known dependency issues
173
+
- [NestJS](docs/case-studies/nestjs.md) — working through a real transitive dependency remediation sequence across a widely-used Node.js framework
174
+
- [Analog](docs/case-studies/analog.md) — scanning a modern pnpm v9 Angular monorepo (3,367 packages) with unexpected toolchain vulnerabilities
175
+
176
+
These are not demos. They are documented scans against real codebases with real findings, recorded before and after applying fix commands.
177
+
178
+
If you maintain an open-source JavaScript or TypeScript project and want CVE Lite CLI evaluated on it, open an issue and share the repository. Strong candidates may be turned into future public case studies.
179
+
180
+
## Recognized by OWASP
181
+
182
+
CVE Lite CLI is an [OWASP Incubator Project](https://owasp.org/cve-lite-cli), peer-reviewed and maintained under the Open Web Application Security Project Foundation. Being part of OWASP means:
183
+
184
+
- **Peer-reviewed** by security professionals
185
+
- **Community-driven** development and governance
186
+
- **Vendor-neutral** with no commercial platform required
187
+
- **Open source** with transparent security practices and a minimal dependency footprint
188
+
189
+
**Where it fits in the OWASP ecosystem:**
190
+
191
+
CVE Lite CLI fills a specific gap — fast, local-first JS/TS dependency scanning close to release time — that broader OWASP tools are not optimized for:
192
+
193
+
| Tool | Focus |
194
+
|---|---|
195
+
| CVE Lite CLI | Lockfile-first, local developer CLI, remediation-focused, JS/TS |
| OWASP dep-scan | Multi-language and environment, SBOM and cloud-native |
198
+
| OWASP Dependency-Track | Platform and SBOM management, not a local CLI |
199
+
200
+
CVE Lite CLI complements these tools. It is not a replacement for continuous monitoring or full SBOM management — it is the fast local check you run before pushing.
201
+
202
+
## Philosophy
203
+
204
+
Security tooling has optimized heavily for breadth of detection and compliance reporting. That is useful at the platform level. It is the wrong model for the individual developer trying to ship clean code before end of day.
205
+
206
+
Detection without remediation creates work without resolution. A vulnerability report that ends with a list of CVE IDs shifts the burden entirely onto the developer: look up each advisory, figure out which version is safe, work out whether it is a direct or transitive dependency, and construct the right install command by hand. That friction is why security findings go unresolved.
207
+
208
+
CVE Lite CLI is built on the premise that **the closer a security tool is to the developer's natural workflow, the more likely it is to be used** — and that a tool that surfaces a problem alongside the fix is more valuable than one that only surfaces the problem.
209
+
210
+
## What's next
211
+
212
+
The CLI is the foundation. The model — local-first, actionable, developer-native — extends naturally beyond the terminal.
213
+
214
+
JSON and SARIF outputs make findings consumable by editors, dashboards, and automated workflows today. The next phase of the project is oriented around tighter developer integration: surfacing vulnerabilities at the point of dependency installation, not just at scan time; deeper IDE integration; and team-level visibility without requiring a cloud platform.
215
+
216
+
See [roadmap.md](docs/roadmap.md) for the current plan.
139
217
140
218
## Usage
141
219
@@ -192,7 +270,7 @@ cve-lite --version
192
270
193
271
### Why is `--usage` an opt-in flag?
194
272
195
-
CVE Lite CLI is designed to be blazing fast. Scanning a lockfile is nearly instantaneous, whereas running static reachability analysis across thousands of source files takes significantly more time. Furthermore, static analysis can occasionally produce false negatives (e.g., if a package is used in a build script or dynamically imported at runtime). Making `--usage` opt-in ensures the default lockfile scan remains instant and strictly reflects your dependency graph, while giving you the option to aggressively filter out unreachable noise when triaging findings.
273
+
CVE Lite CLI is designed to be fast. Scanning a lockfile is nearly instantaneous, whereas running static reachability analysis across thousands of source files takes significantly more time. Static analysis can also produce false negatives when packages are used in build scripts or dynamically imported at runtime. Making `--usage` opt-in ensures the default lockfile scan remains instant and strictly reflects your dependency graph, while giving you the option to aggressively filter out unreachable noise when triaging findings.
See the [Fix mode guide](docs/fix-mode.md) for output details and interpretation.
212
290
291
+
## HTML vulnerability report (`--report`)
292
+
293
+
Generate a self-contained HTML dashboard from any scan — severity cards, an interactive findings table with search, copy-ready fix commands, and breaking-change indicators on upgrades — all written to a local directory and opened automatically in your browser.
See the [HTML Report guide](docs/html-report.md) for the full option reference and output details.
301
+
213
302
## Offline support
214
303
215
304
For teams in enterprise, restricted-network, or air-gapped environments:
@@ -226,51 +315,6 @@ Syncing ~217,065 advisory records runs in under 9 seconds after bulk SQLite inge
226
315
227
316
See the [Offline Advisory DB guide](docs/offline-advisory-db.md) for the full workflow including CI, scheduled refresh, and controlled-network patterns.
228
317
229
-
## CI integration
230
-
231
-
The project ships a first-party [GitHub Action on the Marketplace](https://github.com/marketplace/actions/cve-lite-cli):
232
-
233
-
```yaml
234
-
- uses: OWASP/cve-lite-cli@v1
235
-
with:
236
-
verbose: "true"
237
-
fail-on: high
238
-
```
239
-
240
-
CVE Lite CLI also uses itself in CI to scan its own dependencies. See [`self-scan.yml`](https://github.com/OWASP/cve-lite-cli/blob/main/.github/workflows/self-scan.yml).
241
-
242
-
For full CI patterns including offline workflows, git hooks, and scripted automation, see the [CI and Workflow Integration guide](docs/ci-integration.md).
243
-
244
-
## Recognized by OWASP
245
-
246
-
CVE Lite CLI is an [OWASP Incubator Project](https://owasp.org/cve-lite-cli), peer-reviewed and maintained under the Open Web Application Security Project Foundation. Being part of OWASP means:
247
-
248
-
- **Peer-reviewed** by security professionals
249
-
- **Community-driven** development and governance
250
-
- **Vendor-neutral** with no commercial platform required
251
-
- **Open source** with transparent security practices and a minimal dependency footprint
252
-
253
-
**Where it fits in the OWASP ecosystem:**
254
-
255
-
CVE Lite CLI fills a specific gap — fast, local-first JS/TS dependency scanning close to release time — that broader OWASP tools are not optimized for:
256
-
257
-
| Tool | Focus |
258
-
|---|---|
259
-
| CVE Lite CLI | Lockfile-first, local developer CLI, remediation-focused, JS/TS |
| OWASP dep-scan | Multi-language and environment, SBOM and cloud-native |
262
-
| OWASP Dependency-Track | Platform and SBOM management, not a local CLI |
263
-
264
-
CVE Lite CLI complements these tools. It is not a replacement for continuous monitoring or full SBOM management — it is the fast local check you run before pushing.
265
-
266
-
## Real-world case studies
267
-
268
-
- [OWASP Juice Shop](docs/case-studies/owasp-juice-shop.md) — scanning a deliberately vulnerable application with known dependency issues
269
-
- [NestJS](docs/case-studies/nestjs.md) — working through a real transitive dependency remediation sequence
270
-
- [Analog](docs/case-studies/analog.md) — scanning a modern pnpm v9 Angular monorepo (3,367 packages) with unexpected toolchain vulnerabilities
271
-
272
-
If you maintain an open-source JavaScript or TypeScript project and want CVE Lite CLI evaluated on it, open an issue and share the repository. Strong candidates may be turned into future public case studies.
273
-
274
318
## Who uses it
275
319
276
320
CVE Lite CLI is a good fit for:
@@ -339,6 +383,10 @@ For security-related reporting: [SECURITY.md](https://github.com/OWASP/cve-lite-
339
383
340
384
If CVE Lite CLI helps your release workflow, a [GitHub star](https://github.com/OWASP/cve-lite-cli) helps more developers find it.
341
385
386
+
---
387
+
388
+
*Most tools tell you what's wrong. CVE Lite CLI tells you what to run.*
0 commit comments