@lateos/npm-scan 0.9.7 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +200 -0
- package/README.de.md +52 -0
- package/README.fr.md +52 -0
- package/README.ja.md +48 -0
- package/README.md +88 -0
- package/README.zh.md +52 -0
- package/SECURITY.md +73 -0
- package/backend/fetch.js +100 -1
- package/backend/report.js +97 -0
- package/cli/cli.js +165 -9
- package/deploy/helm/npm-scan/Chart.yaml +11 -5
- package/deploy/helm/npm-scan/templates/api.yaml +29 -1
- package/deploy/helm/npm-scan/values.byoc.yaml +75 -0
- package/deploy/helm/npm-scan/values.yaml +32 -2
- package/package.json +1 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to [@lateos/npm-scan](https://github.com/lateos-ai/npm-scan) are documented here.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- `scan --file <path>` flag to analyze local `.tgz` tarballs without fetching from npm registry
|
|
11
|
+
- `scan --fail-on <level>` flag to exit with code 1 when findings >= severity (CI/CD integration)
|
|
12
|
+
- `scan --sarif [file]` to output SARIF v2.1 format for GitHub Advanced Security, VS Code, Azure DevOps
|
|
13
|
+
- `scan --csv [file]` and `report --csv [file]` to export tabular CSV for Excel/Sheets import
|
|
14
|
+
- `scan --score-only` to output only risk score (0-10), auto-added to JSON output
|
|
15
|
+
- Government/SOC 2 features: `--audit-log`, `--fips`, `--stig`, `--cache-dir` for air-gapped/federal compliance
|
|
16
|
+
- **BYOC (Bring Your Own Cloud)**: Helm chart v1.0.0 for enterprise/government VPC deployments with SIEM, PDF, SSO
|
|
17
|
+
|
|
18
|
+
## [0.9.7] — 2026-05-12
|
|
19
|
+
|
|
20
|
+
- Sigstore provenance attestation on every publish via new GitHub Actions workflow
|
|
21
|
+
- Fix duplicate Docker section in README.md
|
|
22
|
+
- Add SECURITY.md with vulnerability disclosure policy and PGP key
|
|
23
|
+
|
|
24
|
+
## [0.9.6] — 2026-05-12
|
|
25
|
+
|
|
26
|
+
- Add Docker badge (`ghcr.io/lateos/npm-scan`) to all 5 READMEs
|
|
27
|
+
- Add dedicated Docker quick-start section in all languages
|
|
28
|
+
- Replace duplicate Docker pull instructions in Integrations with cross-references
|
|
29
|
+
|
|
30
|
+
## [0.9.5] — 2026-05-12
|
|
31
|
+
|
|
32
|
+
- Fix literal `\n` escape sequences in LICENSING.md (replaced with real newlines)
|
|
33
|
+
|
|
34
|
+
## [0.9.4] — 2026-05-11
|
|
35
|
+
|
|
36
|
+
- Fix language badge links to use absolute GitHub URLs so they work from npm web UI
|
|
37
|
+
- Fix GitHub organization links from `lateos` to `lateos-ai` across all READMEs
|
|
38
|
+
|
|
39
|
+
## [0.9.3] — 2026-05-11
|
|
40
|
+
|
|
41
|
+
- Add multi-language README: Chinese (`README.zh.md`), Japanese (`README.ja.md`), French (`README.fr.md`), German (`README.de.md`)
|
|
42
|
+
- Language-switcher badges with absolute GitHub URLs in all 5 READMEs
|
|
43
|
+
|
|
44
|
+
## [0.9.2] — 2026-05-11
|
|
45
|
+
|
|
46
|
+
- **222 tests across 8 test files** (212 passing, 10 skipped for known FPs)
|
|
47
|
+
- **85% line coverage** with Node.js native test runner
|
|
48
|
+
- New test files: `test/db.test.js`, `test/detectors-edge-cases.test.js`, `test/detectors-corpus.test.js`, `test/report-snapshots.test.js`, `test/fetch.test.js`, `test/policy-edge-cases.test.js`, `test/cli.test.js`, `test/fixtures/mock-data.js`
|
|
49
|
+
- `backend/db.js:close()` resets `initPromise = null` for test isolation
|
|
50
|
+
- GitHub Actions CI with Node 18/20/22 matrix, corpus tests, and self-scan
|
|
51
|
+
- GitHub Actions PR lockfile scanner with `fail-on: high`
|
|
52
|
+
|
|
53
|
+
## [0.9.1] — 2026-05-11
|
|
54
|
+
|
|
55
|
+
- Remove `node-fetch` import and dependency (replaced in 0.9.0)
|
|
56
|
+
|
|
57
|
+
## [0.9.0] — 2026-05-11
|
|
58
|
+
|
|
59
|
+
- **Replace `node-fetch` with native `fetch`** (Node 18+) — removes external HTTP dependency
|
|
60
|
+
- **Replace `better-sqlite3` with `sql.js`** (WASM) — zero native compilation, fixes `npx` silent failure on systems without build tools
|
|
61
|
+
- Add 404 check in `backend/fetch.js` for robust registry lookups
|
|
62
|
+
- Reduce ATK-009 false positives on `lodash`/`axios`/`express`
|
|
63
|
+
- Fix ATK-002/011 false positives — stricter eval+decode rules, remove self-referential checks
|
|
64
|
+
- Fix ATK-008 `knownRepos` for `vue`
|
|
65
|
+
|
|
66
|
+
## [0.8.0] — 2026-05-11
|
|
67
|
+
|
|
68
|
+
- **YAML/JSON policy-as-code engine** — allowlists, severity overrides, suppressions, `fail_on` threshold
|
|
69
|
+
- **Text report generator** (free tier)
|
|
70
|
+
- **PDF report generator** (premium, via `pdf-lib`)
|
|
71
|
+
- **Docker**: multi-stage builds, Compose profiles, health checks, validation script, Makefile
|
|
72
|
+
- Comprehensive README rewrite with comparison table, ATK taxonomy, usage examples, integrations
|
|
73
|
+
- `.npmignore` cleanup for smaller package
|
|
74
|
+
|
|
75
|
+
## [0.7.6] — 2026-05-10
|
|
76
|
+
|
|
77
|
+
- **GitHub Action** (`action.yml`) — scan on push/PR with lockfile or package mode, fail-on severity threshold, SIEM/SBOM output support
|
|
78
|
+
- **28 comprehensive tests** covering SIEM exporters (CEF, ECS, Sentinel, QRadar), EU CRA compliance, SBOM (CycloneDX + SPDX), License key gen/validation/edition/tamper/expiry, Report/NIST (HTML, SR-series table, severity badges, all 11 ATK IDs)
|
|
79
|
+
- Fix tampered key test determinism
|
|
80
|
+
|
|
81
|
+
## [0.7.5] — 2026-05-10
|
|
82
|
+
|
|
83
|
+
- Add Elastic ECS, Microsoft Sentinel, and IBM QRadar SIEM exporters
|
|
84
|
+
|
|
85
|
+
## [0.7.4] — 2026-05-10
|
|
86
|
+
|
|
87
|
+
- Version bump only; no functional changes
|
|
88
|
+
|
|
89
|
+
## [0.7.3] — 2026-05-10
|
|
90
|
+
|
|
91
|
+
- Version bump only; no functional changes
|
|
92
|
+
|
|
93
|
+
## [0.7.2] — 2026-05-10
|
|
94
|
+
|
|
95
|
+
- Fix duplicate Enterprise Features section in README
|
|
96
|
+
|
|
97
|
+
## [0.7.1] — 2026-05-10
|
|
98
|
+
|
|
99
|
+
- Add SAML SSO and REST API sections to README
|
|
100
|
+
|
|
101
|
+
## [0.7.0] — 2026-05-10
|
|
102
|
+
|
|
103
|
+
- **Enterprise SAML SSO integration**
|
|
104
|
+
|
|
105
|
+
## [0.6.0] — 2026-05-10
|
|
106
|
+
|
|
107
|
+
- **License key enforcement** — HMAC-signed keys with community/premium/enterprise editions
|
|
108
|
+
- Feature gating for SIEM, CRA, REST API, Helm, PostgreSQL backend, SSO, audit logs
|
|
109
|
+
- **PostgreSQL schema** — teams, users, RBAC, audit log, webhooks, API keys, materialized `package_risk` view
|
|
110
|
+
- **FastAPI REST API** — scan/list/retrieve endpoints, webhook CRUD with HMAC-signed dispatch
|
|
111
|
+
- **Webhook engine** — event dispatch with retry, signature verification header
|
|
112
|
+
- **Helm chart** — API + worker + PostgreSQL deployments, secrets, ingress, PVC
|
|
113
|
+
- CLI hardened: premium features blocked without valid license key
|
|
114
|
+
|
|
115
|
+
## [0.5.0] — 2026-05-10
|
|
116
|
+
|
|
117
|
+
- **ATK-011 (Transitive Propagation)** detector
|
|
118
|
+
- **SIEM CEF export** for Splunk and ArcSight integration
|
|
119
|
+
- **EU CRA compliance report** — EU Cyber Resilience Act readiness assessment
|
|
120
|
+
- Phase 3 enterprise foundation
|
|
121
|
+
|
|
122
|
+
## [0.4.1] — 2026-05-10
|
|
123
|
+
|
|
124
|
+
- Update README for Phase 3 (ATK-011, SIEM, CRA)
|
|
125
|
+
|
|
126
|
+
## [0.4.0] — 2026-05-10
|
|
127
|
+
|
|
128
|
+
- **ATK-008 (Tarball Tampering)**, **ATK-009 (Dormant Trigger)**, **ATK-010 (Sandbox Evasion)** detectors
|
|
129
|
+
- **SPDX 2.3 SBOM** support alongside CycloneDX
|
|
130
|
+
- **NIST SP 800-161 compliance report** — supply chain risk management controls
|
|
131
|
+
- Sandbox threat model and gVisor isolation strategy
|
|
132
|
+
|
|
133
|
+
## [0.3.3] — 2026-05-10
|
|
134
|
+
|
|
135
|
+
- Fix report HTML/SBOM generation to use `atk_id`, description, package name, dynamic version
|
|
136
|
+
|
|
137
|
+
## [0.3.2] — 2026-05-10
|
|
138
|
+
|
|
139
|
+
- Update README for Phase 2 (ATK-008–010, SPDX, NIST)
|
|
140
|
+
|
|
141
|
+
## [0.3.1] — 2026-05-10
|
|
142
|
+
|
|
143
|
+
- Fix schema literal newlines
|
|
144
|
+
- Fix CLI SBOM defaults
|
|
145
|
+
- Fix SBOM finding IDs
|
|
146
|
+
|
|
147
|
+
## [0.3.0] — 2026-05-10
|
|
148
|
+
|
|
149
|
+
- **ATK-001 (Lifecycle Script)** detector — detects `preinstall`, `postinstall`, `preuninstall` hooks with suspicious commands
|
|
150
|
+
- **ATK-002 (Obfuscated Payload)** detector — hex/base64/decode-driven eval, regex obfuscation
|
|
151
|
+
- **ATK-003 (Credential Harvester)** detector — env var exfiltration, filesystem credential scraping
|
|
152
|
+
- **ATK-004 (Persistence Mechanism)** detector — cron jobs, startup scripts, `postinstall` service installs
|
|
153
|
+
- **ATK-005 (Data Exfiltration)** detector — DNS tunneling, HTTP beaconing, unexpected network calls
|
|
154
|
+
- **ATK-006 (Dependency Confusion)** detector — internal package name heuristics
|
|
155
|
+
- **ATK-007 (Typosquatting)** detector — edit-distance based package name similarity
|
|
156
|
+
|
|
157
|
+
## [0.2.5] — 2026-05-10
|
|
158
|
+
|
|
159
|
+
- Fix `.npmignore` to exclude corpus tarballs from published package
|
|
160
|
+
|
|
161
|
+
## [0.2.4] — 2026-05-10
|
|
162
|
+
|
|
163
|
+
- Version bump only; no functional changes
|
|
164
|
+
|
|
165
|
+
## [0.2.2] — 2026-05-10
|
|
166
|
+
|
|
167
|
+
- **Corpus test suite** — 50 clean packages (0% FP) + 22 malicious PoC (100% detect rate)
|
|
168
|
+
- **HTML report generator** with CLI `--html` flag
|
|
169
|
+
- ATK-007 edit-distance typosquatting implementation
|
|
170
|
+
- Switch from `adm-zip` to `tar` for tgz extraction
|
|
171
|
+
- ATK detectors hardened for fewer false positives
|
|
172
|
+
- `README.md`, `.gitignore`, corpus download scripts
|
|
173
|
+
- **Phase 1 exit**: FP < 2%, passes unit tests + corpus
|
|
174
|
+
|
|
175
|
+
## [0.2.1] — 2026-05-10
|
|
176
|
+
|
|
177
|
+
- Version bump only; no functional changes
|
|
178
|
+
|
|
179
|
+
## [0.2.0] — 2026-05-10
|
|
180
|
+
|
|
181
|
+
- **Commander.js CLI** with `scan`, `scan-lockfile`, `report` commands
|
|
182
|
+
- **ATK-001–007 detector stubs** via `backend/detectors/index.js` (`runAll`)
|
|
183
|
+
- **SQLite persistence** via `better-sqlite3` — scan auto-save, report by ID/recent
|
|
184
|
+
- **CycloneDX SBOM** — JSON and XML output with ATK vulnerability references
|
|
185
|
+
- `.github/workflows/scan.yml` — GitHub Action example for PR scanning
|
|
186
|
+
- Dependencies: `commander`, `adm-zip`, `acorn`, `node-fetch`
|
|
187
|
+
|
|
188
|
+
## [0.1.0] — 2026-05-09
|
|
189
|
+
|
|
190
|
+
- **Initial foundation**
|
|
191
|
+
- Monorepo structure (`cli/`, `backend/`, `docker/`, `docs/`)
|
|
192
|
+
- `LICENSING.md` — Apache-2.0 core + Commons Clause for premium features
|
|
193
|
+
- `CONTRIBUTING.md`
|
|
194
|
+
- `docs/attack-taxonomy.md` — ATK-001 through ATK-011 stubs
|
|
195
|
+
- `backend/license.js` skeleton for HMAC-signed license key gating
|
|
196
|
+
- `backend/db/schema.sql`
|
|
197
|
+
- `docker/Dockerfile.cli` + `docker-compose.yml`
|
|
198
|
+
- npm scripts (lint, test stubs)
|
|
199
|
+
- `.github/workflows/ci.yml`
|
|
200
|
+
- `AGENTS.md` — project instructions
|
package/README.de.md
CHANGED
|
@@ -108,6 +108,25 @@ Kein Node.js. Kein `npm install`. Keine globalen Pakete. Funktioniert auf jedem
|
|
|
108
108
|
|
|
109
109
|
---
|
|
110
110
|
|
|
111
|
+
## 🛡️ Behörden- & SOC 2 L2-bereit
|
|
112
|
+
|
|
113
|
+
| Funktion | SOC 2 | NIST 800-161 | STIG/FedRAMP |
|
|
114
|
+
|----------|-------|--------------|--------------|
|
|
115
|
+
| Audit-Protokolle (--audit-log) | CC6.8 | AU-2 | ✓ |
|
|
116
|
+
| FIPS-Krypto (--fips) | CC6.1 | SC-13 | ✓ |
|
|
117
|
+
| STIG-Bericht (--stig) | CC7.3 | RA-5 | ✓ |
|
|
118
|
+
| Offline-Cache (--cache-dir) | A1.2 | SC-8 | ✓ |
|
|
119
|
+
| Sigstore-Herleitung | CC6.2 | SI-7 | ✓ |
|
|
120
|
+
| SBOM (SPDX/CycloneDX) | CC7.4 | SA-10 | ✓ |
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Vollständig konformer Scan in luftdichten Umgebungen
|
|
124
|
+
npm-scan scan-lockfile --cache-dir /offline/cache --audit-log /var/log/npm-scan.audit --fips
|
|
125
|
+
npm-scan report --stig
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
111
130
|
## 📖 Verwendungsbeispiele
|
|
112
131
|
|
|
113
132
|
### Ein einzelnes Paket scannen
|
|
@@ -123,6 +142,9 @@ npm-scan scan express --sbom spdx # SPDX 2.3
|
|
|
123
142
|
|
|
124
143
|
# Eine YAML-Policy anwenden
|
|
125
144
|
npm-scan scan some-package --policy .npm-scan.yml
|
|
145
|
+
|
|
146
|
+
# Lokales Tarball scannen (kein Registry-Abruf nötig)
|
|
147
|
+
npm-scan scan --file path/to/malicious-package.tgz
|
|
126
148
|
```
|
|
127
149
|
|
|
128
150
|
### Eine Lock-Datei scannen
|
|
@@ -133,6 +155,18 @@ npm-scan scan-lockfile
|
|
|
133
155
|
|
|
134
156
|
# Eine bestimmte Lock-Datei scannen
|
|
135
157
|
npm-scan scan-lockfile -f ./path/to/package-lock.json
|
|
158
|
+
|
|
159
|
+
# CI/CD bei hohen oder kritischen Problemen fehlschlagen (Exit-Code 1)
|
|
160
|
+
npm-scan scan-lockfile --fail-on high
|
|
161
|
+
|
|
162
|
+
# Bei allen Erkenntnissen fehlschlagen (low und höher)
|
|
163
|
+
npm-scan scan-lockfile --fail-on low
|
|
164
|
+
|
|
165
|
+
# SARIF v2.1-Ausgabe für GitHub Advanced Security / VS Code generieren
|
|
166
|
+
npm-scan scan-lockfile --sarif results.sarif
|
|
167
|
+
|
|
168
|
+
# Nur Risiko-Score ausgeben (0-10) für Dashboards/Schwellenwerte
|
|
169
|
+
npm-scan scan-lockfile --score-only
|
|
136
170
|
```
|
|
137
171
|
|
|
138
172
|
### Berichte generieren
|
|
@@ -153,6 +187,10 @@ npm-scan report -i 42 --nist
|
|
|
153
187
|
# EU-CRA-Compliance-Tabelle ausgeben
|
|
154
188
|
npm-scan report --cra
|
|
155
189
|
|
|
190
|
+
# CSV-Export für Excel / Sheets (audit-bereit)
|
|
191
|
+
npm-scan report --csv risks.csv
|
|
192
|
+
npm-scan scan lodash --csv # CSV nach stdout
|
|
193
|
+
|
|
156
194
|
# Textbericht (kostenlos)
|
|
157
195
|
npm-scan report --text
|
|
158
196
|
|
|
@@ -576,6 +614,7 @@ node --test test/detectors-corpus.test.js
|
|
|
576
614
|
|
|
577
615
|
### Hilfe benötigt?
|
|
578
616
|
|
|
617
|
+
- 🔒 Siehe [Sicherheitsrichtlinie](SECURITY.md) für die Offenlegung von Schwachstellen
|
|
579
618
|
- 📖 Lesen Sie den [Projektplan](docs/project-plan.md)
|
|
580
619
|
- 🧬 Überprüfen Sie die [Angriffstaxonomie](docs/attack-taxonomy.md)
|
|
581
620
|
- 🐛 Öffnen Sie ein Issue oder PR
|
|
@@ -587,6 +626,19 @@ node --test test/detectors-corpus.test.js
|
|
|
587
626
|
Apache-2.0 Core + Commons Clause.
|
|
588
627
|
Siehe [`LICENSING.md`](LICENSING.md) für die genaue Grenze zwischen kostenlosen und Premium-Funktionen.
|
|
589
628
|
|
|
629
|
+
---
|
|
630
|
+
|
|
631
|
+
## 👤 Über den Maintainer
|
|
632
|
+
|
|
633
|
+
**Roongrunchai Chongolnee** — Ersteller und Maintainer von `@lateos/npm-scan`. Zertifizierter Sicherheitsexperte (CISSP, CEH, Cisco Security, AWS Cloud Practitioner) mit einem Jahrzehnt Erfahrung in Infrastruktur- und Anwendungssicherheit bei Philips. Ich habe dieses Tool entwickelt, um der Open-Source-Community eine praktische, detektorgesteuerte Abwehr gegen Supply-Chain-Malware zu bieten — und ich bin bestrebt, es transparent, gemeinschaftseigen und kontinuierlich verbessert zu halten.
|
|
634
|
+
|
|
635
|
+
[](https://www.linkedin.com/in/roongrunchai-chong-c-ab9742108/)
|
|
636
|
+
[](https://github.com/lateos-ai/npm-scan)
|
|
637
|
+
|
|
638
|
+
Issues, Ideen und Pull-Requests sind immer willkommen — Sicherheit ist am stärksten, wenn wir zusammenarbeiten.
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
|
|
590
642
|
```
|
|
591
643
|
@lateos/npm-scan — npm supply chain security scanner
|
|
592
644
|
Copyright (C) 2026 Lateos
|
package/README.fr.md
CHANGED
|
@@ -108,6 +108,25 @@ Pas de Node.js. Pas de `npm install`. Pas de paquets globaux. Fonctionne sur tou
|
|
|
108
108
|
|
|
109
109
|
---
|
|
110
110
|
|
|
111
|
+
## 🛡️ Prêt pour le Gouvernement et SOC 2 L2
|
|
112
|
+
|
|
113
|
+
| Fonctionnalité | SOC 2 | NIST 800-161 | STIG/FedRAMP |
|
|
114
|
+
|----------------|-------|--------------|--------------|
|
|
115
|
+
| Journaux d'audit (--audit-log) | CC6.8 | AU-2 | ✓ |
|
|
116
|
+
| Crypto FIPS (--fips) | CC6.1 | SC-13 | ✓ |
|
|
117
|
+
| Rapport STIG (--stig) | CC7.3 | RA-5 | ✓ |
|
|
118
|
+
| Cache hors ligne (--cache-dir) | A1.2 | SC-8 | ✓ |
|
|
119
|
+
| Provenance Sigstore | CC6.2 | SI-7 | ✓ |
|
|
120
|
+
| SBOM (SPDX/CycloneDX) | CC7.4 | SA-10 | ✓ |
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Scan conforme en environnement hermétique
|
|
124
|
+
npm-scan scan-lockfile --cache-dir /offline/cache --audit-log /var/log/npm-scan.audit --fips
|
|
125
|
+
npm-scan report --stig
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
111
130
|
## 📖 Exemples d'utilisation
|
|
112
131
|
|
|
113
132
|
### Scanner un seul paquet
|
|
@@ -123,6 +142,9 @@ npm-scan scan express --sbom spdx # SPDX 2.3
|
|
|
123
142
|
|
|
124
143
|
# Appliquer une politique YAML
|
|
125
144
|
npm-scan scan some-package --policy .npm-scan.yml
|
|
145
|
+
|
|
146
|
+
# Scanner un fichier tarball local (pas de téléchargement depuis le registre)
|
|
147
|
+
npm-scan scan --file path/to/malicious-package.tgz
|
|
126
148
|
```
|
|
127
149
|
|
|
128
150
|
### Scanner un fichier de verrouillage
|
|
@@ -133,6 +155,18 @@ npm-scan scan-lockfile
|
|
|
133
155
|
|
|
134
156
|
# Scanner un fichier de verrouillage spécifique
|
|
135
157
|
npm-scan scan-lockfile -f ./path/to/package-lock.json
|
|
158
|
+
|
|
159
|
+
# Échouer en CI/CD sur les découvertes de severity haute ou critique (code de sortie 1)
|
|
160
|
+
npm-scan scan-lockfile --fail-on high
|
|
161
|
+
|
|
162
|
+
# Échouer sur toute découverte (low et au-delà)
|
|
163
|
+
npm-scan scan-lockfile --fail-on low
|
|
164
|
+
|
|
165
|
+
# Générer une sortie SARIF v2.1 pour GitHub Advanced Security / VS Code
|
|
166
|
+
npm-scan scan-lockfile --sarif results.sarif
|
|
167
|
+
|
|
168
|
+
# Afficher uniquement le score de risque (0-10) pour les tableaux de bord/seuils
|
|
169
|
+
npm-scan scan-lockfile --score-only
|
|
136
170
|
```
|
|
137
171
|
|
|
138
172
|
### Générer des rapports
|
|
@@ -153,6 +187,10 @@ npm-scan report -i 42 --nist
|
|
|
153
187
|
# Afficher le tableau de conformité EU CRA
|
|
154
188
|
npm-scan report --cra
|
|
155
189
|
|
|
190
|
+
# Export CSV pour Excel / Sheets (prêt pour audit)
|
|
191
|
+
npm-scan report --csv risks.csv
|
|
192
|
+
npm-scan scan lodash --csv # CSV vers stdout
|
|
193
|
+
|
|
156
194
|
# Rapport texte (gratuit)
|
|
157
195
|
npm-scan report --text
|
|
158
196
|
|
|
@@ -576,6 +614,7 @@ node --test test/detectors-corpus.test.js
|
|
|
576
614
|
|
|
577
615
|
### Besoin d'aide ?
|
|
578
616
|
|
|
617
|
+
- 🔒 Voir la [politique de sécurité](SECURITY.md) pour la divulgation des vulnérabilités
|
|
579
618
|
- 📖 Lire le [plan du projet](docs/project-plan.md)
|
|
580
619
|
- 🧬 Consulter la [taxonomie des attaques](docs/attack-taxonomy.md)
|
|
581
620
|
- 🐛 Ouvrir une issue ou une PR
|
|
@@ -587,6 +626,19 @@ node --test test/detectors-corpus.test.js
|
|
|
587
626
|
Apache-2.0 core + Commons Clause.
|
|
588
627
|
Voir [`LICENSING.md`](LICENSING.md) pour la limite exacte entre les fonctionnalités gratuites et premium.
|
|
589
628
|
|
|
629
|
+
---
|
|
630
|
+
|
|
631
|
+
## 👤 À propos du mainteneur
|
|
632
|
+
|
|
633
|
+
**Roongrunchai Chongolnee** — créateur et mainteneur de `@lateos/npm-scan`. Professionnel de la sécurité certifié (CISSP, CEH, Cisco Security, AWS Cloud Practitioner) avec une décennie d'expérience en sécurité des infrastructures et des applications chez Philips. J'ai construit cet outil pour offrir à la communauté open-source une défense pratique et pilotée par des détecteurs contre les logiciels malveillants de la chaîne d'approvisionnement — et je m'engage à le maintenir transparent, détenu par la communauté et en amélioration continue.
|
|
634
|
+
|
|
635
|
+
[](https://www.linkedin.com/in/roongrunchai-chong-c-ab9742108/)
|
|
636
|
+
[](https://github.com/lateos-ai/npm-scan)
|
|
637
|
+
|
|
638
|
+
Les issues, idées et pull requests sont toujours les bienvenus — la sécurité est plus forte quand nous collaborons.
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
|
|
590
642
|
```
|
|
591
643
|
@lateos/npm-scan — npm supply chain security scanner
|
|
592
644
|
Copyright (C) 2026 Lateos
|
package/README.ja.md
CHANGED
|
@@ -108,6 +108,25 @@ Node.js不要。`npm install`不要。グローバルパッケージ不要。Doc
|
|
|
108
108
|
|
|
109
109
|
---
|
|
110
110
|
|
|
111
|
+
## 🛡️ 政府機関・SOC 2 L2 対応
|
|
112
|
+
|
|
113
|
+
| 機能 | SOC 2 | NIST 800-161 | STIG/FedRAMP |
|
|
114
|
+
|------|-------|--------------|--------------|
|
|
115
|
+
| 監査ログ (--audit-log) | CC6.8 | AU-2 | ✓ |
|
|
116
|
+
| FIPS暗号化 (--fips) | CC6.1 | SC-13 | ✓ |
|
|
117
|
+
| STIGレポート (--stig) | CC7.3 | RA-5 | ✓ |
|
|
118
|
+
| オフラインキャッシュ (--cache-dir) | A1.2 | SC-8 | ✓ |
|
|
119
|
+
| Sigstoreプロvenes | CC6.2 | SI-7 | ✓ |
|
|
120
|
+
| SBOM (SPDX/CycloneDX) | CC7.4 | SA-10 | ✓ |
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# エアギャップ環境での完全なコンプライアンススキャンを実行
|
|
124
|
+
npm-scan scan-lockfile --cache-dir /offline/cache --audit-log /var/log/npm-scan.audit --fips
|
|
125
|
+
npm-scan report --stig
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
111
130
|
## 📖 使用例
|
|
112
131
|
|
|
113
132
|
### 単一パッケージのスキャン
|
|
@@ -123,6 +142,9 @@ npm-scan scan express --sbom spdx # SPDX 2.3
|
|
|
123
142
|
|
|
124
143
|
# YAMLポリシーを適用
|
|
125
144
|
npm-scan scan some-package --policy .npm-scan.yml
|
|
145
|
+
|
|
146
|
+
# ローカルtarballをスキャン(レジストリからの取得不要)
|
|
147
|
+
npm-scan scan --file path/to/malicious-package.tgz
|
|
126
148
|
```
|
|
127
149
|
|
|
128
150
|
### ロックファイルのスキャン
|
|
@@ -133,6 +155,18 @@ npm-scan scan-lockfile
|
|
|
133
155
|
|
|
134
156
|
# 特定のロックファイルをスキャン
|
|
135
157
|
npm-scan scan-lockfile -f ./path/to/package-lock.json
|
|
158
|
+
|
|
159
|
+
# 高重大または致命的な問題でCI/CDを失敗させる(終了コード1)
|
|
160
|
+
npm-scan scan-lockfile --fail-on high
|
|
161
|
+
|
|
162
|
+
# 任何の発見項目でビルドを失敗させる(low以上)
|
|
163
|
+
npm-scan scan-lockfile --fail-on low
|
|
164
|
+
|
|
165
|
+
# SARIF v2.1出力を生成(GitHub Advanced Security / VS Code向け)
|
|
166
|
+
npm-scan scan-lockfile --sarif results.sarif
|
|
167
|
+
|
|
168
|
+
# リスクスコアのみを出力(0-10)(ダッシュボード/閾値向け)
|
|
169
|
+
npm-scan scan-lockfile --score-only
|
|
136
170
|
```
|
|
137
171
|
|
|
138
172
|
### レポートの生成
|
|
@@ -576,6 +610,7 @@ node --test test/detectors-corpus.test.js
|
|
|
576
610
|
|
|
577
611
|
### ヘルプが必要ですか?
|
|
578
612
|
|
|
613
|
+
- 🔒 [セキュリティポリシー](SECURITY.md)で脆弱性の開示方法を確認
|
|
579
614
|
- 📖 [プロジェクト計画](docs/project-plan.md)を読む
|
|
580
615
|
- 🧬 [攻撃分類](docs/attack-taxonomy.md)を確認
|
|
581
616
|
- 🐛 IssueまたはPRを開く
|
|
@@ -587,6 +622,19 @@ node --test test/detectors-corpus.test.js
|
|
|
587
622
|
Apache-2.0コア+Commons Clause。
|
|
588
623
|
無料版とプレミアム版機能の正確な境界については[`LICENSING.md`](LICENSING.md)を参照してください。
|
|
589
624
|
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
## 👤 メンテナーについて
|
|
628
|
+
|
|
629
|
+
**Roongrunchai Chongolnee** — `@lateos/npm-scan` の作成者兼メンテナー。CISSP、CEH、Cisco Security、AWS Cloud Practitioner の認定を持つセキュリティ専門家で、Philips で10年間のインフラおよびアプリケーションセキュリティの経験があります。このツールは、オープンソースコミュニティに実用的で検出器駆動型のサプライチェーン型マルウェア防御を提供するために構築しました。透明性、コミュニティ所有、継続的改善に取り組んでいます。
|
|
630
|
+
|
|
631
|
+
[](https://www.linkedin.com/in/roongrunchai-chong-c-ab9742108/)
|
|
632
|
+
[](https://github.com/lateos-ai/npm-scan)
|
|
633
|
+
|
|
634
|
+
Issue、アイデア、PRはいつでも歓迎します——セキュリティは協力によって最も強力になります。
|
|
635
|
+
|
|
636
|
+
---
|
|
637
|
+
|
|
590
638
|
```
|
|
591
639
|
@lateos/npm-scan — npm supply chain security scanner
|
|
592
640
|
Copyright (C) 2026 Lateos
|
package/README.md
CHANGED
|
@@ -107,6 +107,61 @@ No Node.js. No `npm install`. No global packages. Works on any system with Docke
|
|
|
107
107
|
|
|
108
108
|
---
|
|
109
109
|
|
|
110
|
+
## 🛡️ Government & SOC 2 L2 Ready
|
|
111
|
+
|
|
112
|
+
| Feature | SOC 2 | NIST 800-161 | STIG/FedRAMP |
|
|
113
|
+
|---------|-------|--------------|--------------|
|
|
114
|
+
| Audit logs (--audit-log) | CC6.8 | AU-2 | ✓ |
|
|
115
|
+
| FIPS crypto (--fips) | CC6.1 | SC-13 | ✓ |
|
|
116
|
+
| STIG report (--stig) | CC7.3 | RA-5 | ✓ |
|
|
117
|
+
| Offline cache (--cache-dir) | A1.2 | SC-8 | ✓ |
|
|
118
|
+
| Sigstore provenance | CC6.2 | SI-7 | ✓ |
|
|
119
|
+
| SBOM (SPDX/CycloneDX) | CC7.4 | SA-10 | ✓ |
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Air-gapped scan with full compliance
|
|
123
|
+
npm-scan scan-lockfile --cache-dir /offline/cache --audit-log /var/log/npm-scan.audit --fips
|
|
124
|
+
npm-scan report --stig
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
[](https://www.aicpa.org/interestareas/frc/assuranceadvisoryservices/sorhome.html)
|
|
128
|
+
[](https://fedramp.gov/)
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## ☁️ BYOC — Bring Your Own Cloud
|
|
133
|
+
|
|
134
|
+
Deploy npm-scan in your VPC with full data sovereignty. No data leaves your infrastructure.
|
|
135
|
+
|
|
136
|
+
| Feature | Description |
|
|
137
|
+
|---------|-------------|
|
|
138
|
+
| **Self-hosted** | Run on EKS/GKE/AKS in your AWS/Azure/GCP account |
|
|
139
|
+
| **SIEM Export** | CEF/ECS/Sentinel/QRadar to your existing SIEM |
|
|
140
|
+
| **SSO/OIDC** | SAML/OIDC integration with your identity provider |
|
|
141
|
+
| **PDF Reports** | Generate NIST-compliant PDF reports locally |
|
|
142
|
+
| **External DB** | Connect to your existing PostgreSQL/Redis |
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Deploy to your VPC with Helm
|
|
146
|
+
git clone https://github.com/lateos-ai/npm-scan.git
|
|
147
|
+
cd npm-scan/deploy/helm
|
|
148
|
+
helm install npm-scan -f values.byoc.yaml .
|
|
149
|
+
|
|
150
|
+
# BYOC values example (see values.byoc.yaml)
|
|
151
|
+
premium:
|
|
152
|
+
enabled: true
|
|
153
|
+
edition: enterprise
|
|
154
|
+
byoc:
|
|
155
|
+
enabled: true
|
|
156
|
+
cloudProvider: aws
|
|
157
|
+
vpcId: vpc-xxx
|
|
158
|
+
region: us-east-1
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Pricing**: Enterprise license $10k/yr — self-supported (docs + GitHub issues).
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
110
165
|
## 📖 Usage Examples
|
|
111
166
|
|
|
112
167
|
### Scan a single package
|
|
@@ -122,6 +177,9 @@ npm-scan scan express --sbom spdx # SPDX 2.3
|
|
|
122
177
|
|
|
123
178
|
# Apply a YAML policy
|
|
124
179
|
npm-scan scan some-package --policy .npm-scan.yml
|
|
180
|
+
|
|
181
|
+
# Scan a local tarball (no registry fetch needed)
|
|
182
|
+
npm-scan scan --file path/to/malicious-package.tgz
|
|
125
183
|
```
|
|
126
184
|
|
|
127
185
|
### Scan a lockfile
|
|
@@ -132,6 +190,18 @@ npm-scan scan-lockfile
|
|
|
132
190
|
|
|
133
191
|
# Scan a specific lockfile
|
|
134
192
|
npm-scan scan-lockfile -f ./path/to/package-lock.json
|
|
193
|
+
|
|
194
|
+
# Fail CI/CD on high or critical findings (exit code 1)
|
|
195
|
+
npm-scan scan-lockfile --fail-on high
|
|
196
|
+
|
|
197
|
+
# Fail on any findings (low and above)
|
|
198
|
+
npm-scan scan-lockfile --fail-on low
|
|
199
|
+
|
|
200
|
+
# Generate SARIF v2.1 output for GitHub Advanced Security / VS Code
|
|
201
|
+
npm-scan scan-lockfile --sarif results.sarif
|
|
202
|
+
|
|
203
|
+
# Output only risk score (0-10) for dashboards/thresholds
|
|
204
|
+
npm-scan scan-lockfile --score-only
|
|
135
205
|
```
|
|
136
206
|
|
|
137
207
|
### Generate reports
|
|
@@ -152,6 +222,10 @@ npm-scan report -i 42 --nist
|
|
|
152
222
|
# Print EU CRA compliance table
|
|
153
223
|
npm-scan report --cra
|
|
154
224
|
|
|
225
|
+
# CSV export for Excel / Sheets (audit-ready)
|
|
226
|
+
npm-scan report --csv risks.csv
|
|
227
|
+
npm-scan scan lodash --csv # CSV to stdout
|
|
228
|
+
|
|
155
229
|
# Text report (free)
|
|
156
230
|
npm-scan report --text
|
|
157
231
|
|
|
@@ -575,6 +649,7 @@ node --test test/detectors-corpus.test.js
|
|
|
575
649
|
|
|
576
650
|
### Need help?
|
|
577
651
|
|
|
652
|
+
- 🔒 See [security policy](SECURITY.md) for vulnerability disclosure
|
|
578
653
|
- 📖 Read the [project plan](docs/project-plan.md)
|
|
579
654
|
- 🧬 Review the [attack taxonomy](docs/attack-taxonomy.md)
|
|
580
655
|
- 🐛 Open an issue or PR
|
|
@@ -586,6 +661,19 @@ node --test test/detectors-corpus.test.js
|
|
|
586
661
|
Apache-2.0 core + Commons Clause.
|
|
587
662
|
See [`LICENSING.md`](LICENSING.md) for the exact boundary between free and premium features.
|
|
588
663
|
|
|
664
|
+
---
|
|
665
|
+
|
|
666
|
+
## 👤 About the Maintainer
|
|
667
|
+
|
|
668
|
+
**Roongrunchai Chongolnee** — creator and maintainer of `@lateos/npm-scan`. Certified security professional (CISSP, CEH, Cisco Security, AWS Cloud Practitioner) with a decade of infrastructure and application security experience at Philips. I built this tool to give the open-source community a practical, detector-driven defense against supply-chain malware — and I'm committed to keeping it transparent, community-owned, and continuously improved.
|
|
669
|
+
|
|
670
|
+
[](https://www.linkedin.com/in/roongrunchai-chong-c-ab9742108/)
|
|
671
|
+
[](https://github.com/lateos-ai/npm-scan)
|
|
672
|
+
|
|
673
|
+
Issues, ideas, and pull requests are always welcome — security is strongest when we collaborate.
|
|
674
|
+
|
|
675
|
+
---
|
|
676
|
+
|
|
589
677
|
```
|
|
590
678
|
@lateos/npm-scan — npm supply chain security scanner
|
|
591
679
|
Copyright (C) 2026 Lateos
|
package/README.zh.md
CHANGED
|
@@ -108,6 +108,25 @@ docker compose --profile pipeline up -d
|
|
|
108
108
|
|
|
109
109
|
---
|
|
110
110
|
|
|
111
|
+
## 🛡️ 政府与 SOC 2 L2 就绪
|
|
112
|
+
|
|
113
|
+
| 功能 | SOC 2 | NIST 800-161 | STIG/FedRAMP |
|
|
114
|
+
|------|-------|--------------|--------------|
|
|
115
|
+
| 审计日志 (--audit-log) | CC6.8 | AU-2 | ✓ |
|
|
116
|
+
| FIPS 加密 (--fips) | CC6.1 | SC-13 | ✓ |
|
|
117
|
+
| STIG 报告 (--stig) | CC7.3 | RA-5 | ✓ |
|
|
118
|
+
| 离线缓存 (--cache-dir) | A1.2 | SC-8 | ✓ |
|
|
119
|
+
| Sigstore 溯源 | CC6.2 | SI-7 | ✓ |
|
|
120
|
+
| SBOM (SPDX/CycloneDX) | CC7.4 | SA-10 | ✓ |
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# 气隙环境下的完整合规扫描
|
|
124
|
+
npm-scan scan-lockfile --cache-dir /offline/cache --audit-log /var/log/npm-scan.audit --fips
|
|
125
|
+
npm-scan report --stig
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
111
130
|
## 📖 使用示例
|
|
112
131
|
|
|
113
132
|
### 扫描单个包
|
|
@@ -123,6 +142,9 @@ npm-scan scan express --sbom spdx # SPDX 2.3
|
|
|
123
142
|
|
|
124
143
|
# 应用 YAML 策略
|
|
125
144
|
npm-scan scan some-package --policy .npm-scan.yml
|
|
145
|
+
|
|
146
|
+
# 扫描本地 tarball(无需从注册表获取)
|
|
147
|
+
npm-scan scan --file path/to/malicious-package.tgz
|
|
126
148
|
```
|
|
127
149
|
|
|
128
150
|
### 扫描锁定文件
|
|
@@ -133,6 +155,18 @@ npm-scan scan-lockfile
|
|
|
133
155
|
|
|
134
156
|
# 扫描特定锁定文件
|
|
135
157
|
npm-scan scan-lockfile -f ./path/to/package-lock.json
|
|
158
|
+
|
|
159
|
+
# 在高危或严重问题时使 CI/CD 失败(退出码 1)
|
|
160
|
+
npm-scan scan-lockfile --fail-on high
|
|
161
|
+
|
|
162
|
+
# 任何发现项都使构建失败(low 及以上)
|
|
163
|
+
npm-scan scan-lockfile --fail-on low
|
|
164
|
+
|
|
165
|
+
# 生成 SARIF v2.1 输出,用于 GitHub Advanced Security / VS Code
|
|
166
|
+
npm-scan scan-lockfile --sarif results.sarif
|
|
167
|
+
|
|
168
|
+
# 仅输出风险分数(0-10)用于仪表板/阈值
|
|
169
|
+
npm-scan scan-lockfile --score-only
|
|
136
170
|
```
|
|
137
171
|
|
|
138
172
|
### 生成报告
|
|
@@ -153,6 +187,10 @@ npm-scan report -i 42 --nist
|
|
|
153
187
|
# 打印 EU CRA 合规表格
|
|
154
188
|
npm-scan report --cra
|
|
155
189
|
|
|
190
|
+
# CSV 导出用于 Excel / Sheets(审计就绪)
|
|
191
|
+
npm-scan report --csv risks.csv
|
|
192
|
+
npm-scan scan lodash --csv # CSV 输出到标准输出
|
|
193
|
+
|
|
156
194
|
# 文本报告(免费)
|
|
157
195
|
npm-scan report --text
|
|
158
196
|
|
|
@@ -576,6 +614,7 @@ node --test test/detectors-corpus.test.js
|
|
|
576
614
|
|
|
577
615
|
### 需要帮助?
|
|
578
616
|
|
|
617
|
+
- 🔒 查看[安全策略](SECURITY.md)了解漏洞披露流程
|
|
579
618
|
- 📖 阅读[项目计划](docs/project-plan.md)
|
|
580
619
|
- 🧬 查看[攻击分类](docs/attack-taxonomy.md)
|
|
581
620
|
- 🐛 提交 issue 或 PR
|
|
@@ -587,6 +626,19 @@ node --test test/detectors-corpus.test.js
|
|
|
587
626
|
Apache-2.0 核心 + Commons Clause。
|
|
588
627
|
请参阅 [`LICENSING.md`](LICENSING.md) 了解免费版和高级版功能之间的确切界限。
|
|
589
628
|
|
|
629
|
+
---
|
|
630
|
+
|
|
631
|
+
## 👤 关于维护者
|
|
632
|
+
|
|
633
|
+
**Roongrunchai Chongolnee** — `@lateos/npm-scan` 的创建者和维护者。持有 CISSP、CEH、思科安全、AWS 云从业者认证的安全专业人士,在飞利浦拥有十年的基础设施和应用安全经验。我构建这个工具是为了让开源社区拥有一个实用、检测器驱动的供应链恶意软件防御方案——我致力于保持其透明、社区拥有和持续改进。
|
|
634
|
+
|
|
635
|
+
[](https://www.linkedin.com/in/roongrunchai-chong-c-ab9742108/)
|
|
636
|
+
[](https://github.com/lateos-ai/npm-scan)
|
|
637
|
+
|
|
638
|
+
欢迎提交 issue、想法和 PR——安全在协作中最强大。
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
|
|
590
642
|
```
|
|
591
643
|
@lateos/npm-scan — npm supply chain security scanner
|
|
592
644
|
Copyright (C) 2026 Lateos
|