supply-chain-guard 4.2.0 → 4.4.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/README.md +219 -220
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/correlation-engine.d.ts.map +1 -1
- package/dist/correlation-engine.js +25 -0
- package/dist/correlation-engine.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/policy-engine.d.ts +34 -0
- package/dist/policy-engine.d.ts.map +1 -0
- package/dist/policy-engine.js +244 -0
- package/dist/policy-engine.js.map +1 -0
- package/dist/reporter.js +6 -3
- package/dist/reporter.js.map +1 -1
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +28 -2
- package/dist/scanner.js.map +1 -1
- package/dist/trust-signals.d.ts +13 -0
- package/dist/trust-signals.d.ts.map +1 -0
- package/dist/trust-signals.js +144 -0
- package/dist/trust-signals.js.map +1 -0
- package/dist/types.d.ts +32 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,32 +1,69 @@
|
|
|
1
|
-
#
|
|
1
|
+
# supply-chain-guard
|
|
2
2
|
|
|
3
|
-
Open-source supply-chain security scanner for npm, PyPI, VS Code extensions, GitHub Actions
|
|
3
|
+
Open-source supply-chain security scanner for npm, PyPI, Cargo, Go, Docker, Terraform, VS Code extensions, GitHub Actions and GitHub repositories. Detects malware campaigns (GlassWorm, Vidar, Shai-Hulud), fake AI tool repos, account takeovers, and 170+ threat indicators with a correlation engine that links findings into attack-chain incidents.
|
|
4
4
|
|
|
5
5
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
6
6
|
[](https://nodejs.org)
|
|
7
|
-
[](https://www.npmjs.com/package/supply-chain-guard)
|
|
8
8
|
|
|
9
9
|
## Background
|
|
10
10
|
|
|
11
11
|
For a deep dive into how GlassWorm infiltrates the software supply chain and the detection techniques behind this tool, read the blog post: [How GlassWorm Gets In and How We Locked It Out](https://blog.elvatis.com/how-glassworm-gets-in-and-how-we-locked-it-out/).
|
|
12
12
|
|
|
13
|
-
## What It
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
13
|
+
## What It Detects
|
|
14
|
+
|
|
15
|
+
### Malware Campaigns
|
|
16
|
+
- GlassWorm campaign markers and Solana blockchain C2
|
|
17
|
+
- Vidar/GhostSocks infostealers (April 2026 Claude Code leak campaign)
|
|
18
|
+
- Shai-Hulud self-replicating npm worm
|
|
19
|
+
- XZ Utils backdoor (CVE-2024-3094), SolarWinds SUNBURST, Codecov, ua-parser-js, coa/rc
|
|
20
|
+
- Fake AI tool repos (Claude Code, Copilot, Cursor, ChatGPT, OpenClaw lures)
|
|
21
|
+
|
|
22
|
+
### Code-Level Threats
|
|
23
|
+
- Obfuscated execution: `eval(atob())`, `eval(Buffer.from())`, template literal eval, dynamic `import()`
|
|
24
|
+
- Invisible Unicode, RTL override, SVG script injection, steganography
|
|
25
|
+
- Shannon entropy analysis for encoded payloads
|
|
26
|
+
- Proxy handler traps, WebAssembly from external sources
|
|
27
|
+
|
|
28
|
+
### Supply Chain Attacks
|
|
29
|
+
- Install hook deep analysis (secret harvesting, download-exec chains, binary blobs)
|
|
30
|
+
- Levenshtein-based typosquatting detection against top 80 npm packages
|
|
31
|
+
- Dependency confusion and namespace squatting
|
|
32
|
+
- Known-bad version blocklist (axios, ua-parser-js, coa, rc, event-stream, node-ipc, colors, faker)
|
|
33
|
+
- Publishing anomaly detection (maintainer changes, version gaps, script additions)
|
|
34
|
+
|
|
35
|
+
### Infrastructure & CI/CD
|
|
36
|
+
- GitHub Actions: unpinned actions, secrets exfiltration, encoded payloads, curl piping
|
|
37
|
+
- Dockerfile: curl pipe, unpinned base images, hardcoded secrets, SUID bits
|
|
38
|
+
- Terraform/IaC: inline scripts, external modules, hardcoded secrets
|
|
39
|
+
- Package manager configs (.npmrc, .yarnrc, pip.conf): HTTP registries, exposed tokens
|
|
40
|
+
- Git hooks and submodule security
|
|
41
|
+
|
|
42
|
+
### Repository Trust Signals
|
|
43
|
+
- GitHub repo metadata analysis (account age, star-farming, single-commit repos)
|
|
44
|
+
- Release artifact scanning (.exe, .7z, double extensions, LNK shortcuts, PE magic)
|
|
45
|
+
- README lure detection (leaked/cracked/urgency language)
|
|
46
|
+
|
|
47
|
+
### Credential Detection
|
|
48
|
+
- AWS access keys (AKIA/ASIA), GitHub tokens (ghp_/gho_), npm tokens
|
|
49
|
+
- SSH private keys, generic API keys, PEM private keys
|
|
50
|
+
|
|
51
|
+
### Dead-Drop Resolver / C2 Detection
|
|
52
|
+
- Steam Community profiles, Telegram channels, Pastebin, GitHub Gists
|
|
53
|
+
- DNS TXT records, DNS-over-HTTPS, dynamic WebSocket URLs
|
|
54
|
+
- Known C2 domains and IPs (from IOC blocklist)
|
|
55
|
+
|
|
56
|
+
### Correlation Engine (v4.2)
|
|
57
|
+
Links individual findings into incident-level attack chains:
|
|
58
|
+
- "GlassWorm Campaign" (marker + eval + exfiltration)
|
|
59
|
+
- "Vidar Stealer Infection" (dead-drop + browser theft + dropper)
|
|
60
|
+
- "npm Account Takeover" (maintainer change + install hooks + C2)
|
|
61
|
+
- "Fake Repository Malware" (lure + exe release + new account)
|
|
62
|
+
- 15+ correlation rules with confidence scoring
|
|
63
|
+
|
|
64
|
+
### Trust Breakdown (v4.2)
|
|
65
|
+
4-dimension trust scoring for every scan:
|
|
66
|
+
- Publisher Trust (40%) / Code Quality (30%) / Dependency Trust (20%) / Release Process (10%)
|
|
30
67
|
|
|
31
68
|
## Installation
|
|
32
69
|
|
|
@@ -42,177 +79,155 @@ npx supply-chain-guard scan ./my-project
|
|
|
42
79
|
|
|
43
80
|
## Quickstart
|
|
44
81
|
|
|
45
|
-
**Scan a local directory:**
|
|
46
|
-
|
|
47
82
|
```bash
|
|
83
|
+
# Scan a local directory
|
|
48
84
|
supply-chain-guard scan ./my-project
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**Scan a GitHub repository:**
|
|
52
85
|
|
|
53
|
-
|
|
86
|
+
# Scan a GitHub repo (includes trust signal analysis)
|
|
54
87
|
supply-chain-guard scan https://github.com/user/repo
|
|
55
|
-
```
|
|
56
88
|
|
|
57
|
-
|
|
89
|
+
# Analyze a GitHub repo for trust signals + malware
|
|
90
|
+
supply-chain-guard repo https://github.com/user/repo
|
|
58
91
|
|
|
59
|
-
|
|
92
|
+
# Scan an npm package (downloads without installing)
|
|
60
93
|
supply-chain-guard npm suspicious-package-name
|
|
61
|
-
```
|
|
62
94
|
|
|
63
|
-
|
|
95
|
+
# Scan a PyPI package
|
|
96
|
+
supply-chain-guard pypi suspicious-package
|
|
64
97
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
Findings: 2 critical, 1 high, 1 medium
|
|
98
|
+
# Scan a VS Code extension
|
|
99
|
+
supply-chain-guard vscode publisher.extension-name
|
|
68
100
|
|
|
69
|
-
|
|
70
|
-
|
|
101
|
+
# Detect dependency confusion
|
|
102
|
+
supply-chain-guard confusion ./my-project
|
|
71
103
|
|
|
72
|
-
|
|
73
|
-
|
|
104
|
+
# Monitor a Solana C2 wallet
|
|
105
|
+
supply-chain-guard monitor <wallet-address> --once
|
|
74
106
|
```
|
|
75
107
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
## Usage
|
|
79
|
-
|
|
80
|
-
### Scan a Local Directory
|
|
108
|
+
## Output Formats
|
|
81
109
|
|
|
82
110
|
```bash
|
|
83
|
-
supply-chain-guard scan ./
|
|
111
|
+
supply-chain-guard scan ./project # Human-readable text (default)
|
|
112
|
+
supply-chain-guard scan ./project --format json # JSON (for CI/CD pipelines)
|
|
113
|
+
supply-chain-guard scan ./project --format html # Standalone HTML report
|
|
114
|
+
supply-chain-guard scan ./project --format markdown # Markdown (for PR comments)
|
|
115
|
+
supply-chain-guard scan ./project --format sarif # SARIF 2.1.0 (GitHub Code Scanning)
|
|
116
|
+
supply-chain-guard scan ./project --format sbom # CycloneDX 1.5 SBOM (NIS2/SSDF compliance)
|
|
84
117
|
```
|
|
85
118
|
|
|
86
|
-
|
|
119
|
+
## CI Exit Code Control
|
|
87
120
|
|
|
88
121
|
```bash
|
|
89
|
-
supply-chain-guard scan
|
|
122
|
+
supply-chain-guard scan ./project --fail-on critical # Fail only on critical
|
|
123
|
+
supply-chain-guard scan ./project --fail-on high # Fail on high or above
|
|
124
|
+
supply-chain-guard scan ./project --fail-on info # Fail on any finding
|
|
90
125
|
```
|
|
91
126
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
Downloads and analyzes the published tarball without installing it:
|
|
127
|
+
## Filtering
|
|
95
128
|
|
|
96
129
|
```bash
|
|
97
|
-
supply-chain-guard
|
|
98
|
-
supply-chain-guard
|
|
130
|
+
supply-chain-guard scan ./project --min-severity high
|
|
131
|
+
supply-chain-guard scan ./project --exclude SOLANA_MAINNET,HEX_ARRAY
|
|
99
132
|
```
|
|
100
133
|
|
|
101
|
-
|
|
134
|
+
## Policy Configuration (v4.4)
|
|
102
135
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
# Continuous monitoring
|
|
107
|
-
supply-chain-guard monitor <wallet-address>
|
|
108
|
-
|
|
109
|
-
# One-shot check
|
|
110
|
-
supply-chain-guard monitor <wallet-address> --once
|
|
136
|
+
Create `.supply-chain-guard.yml` in your project root to customize behavior:
|
|
111
137
|
|
|
112
|
-
|
|
113
|
-
|
|
138
|
+
```yaml
|
|
139
|
+
rules:
|
|
140
|
+
disable:
|
|
141
|
+
- HEX_ARRAY
|
|
142
|
+
- CHARCODE_OBFUSCATION
|
|
143
|
+
severityOverrides:
|
|
144
|
+
GHA_UNPINNED_ACTION: medium
|
|
145
|
+
|
|
146
|
+
allowlist:
|
|
147
|
+
packages:
|
|
148
|
+
- internal-utils
|
|
149
|
+
domains:
|
|
150
|
+
- company.internal
|
|
151
|
+
githubOrgs:
|
|
152
|
+
- my-org
|
|
153
|
+
|
|
154
|
+
suppress:
|
|
155
|
+
- rule: RELEASE_EXE_ARTIFACT
|
|
156
|
+
reason: Legitimate Windows installer
|
|
157
|
+
|
|
158
|
+
baseline:
|
|
159
|
+
file: .scg-baseline.json
|
|
114
160
|
```
|
|
115
161
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
# Human-readable text (default)
|
|
120
|
-
supply-chain-guard scan ./project
|
|
121
|
-
|
|
122
|
-
# JSON (for CI/CD pipelines)
|
|
123
|
-
supply-chain-guard scan ./project --format json
|
|
162
|
+
## Baseline Diffing (v4.4)
|
|
124
163
|
|
|
125
|
-
|
|
126
|
-
supply-chain-guard scan ./project --format markdown
|
|
164
|
+
Only report NEW findings (ignore known baseline):
|
|
127
165
|
|
|
128
|
-
|
|
129
|
-
|
|
166
|
+
```bash
|
|
167
|
+
# Save current findings as baseline
|
|
168
|
+
supply-chain-guard scan ./project --save-baseline .scg-baseline.json
|
|
130
169
|
|
|
131
|
-
#
|
|
132
|
-
supply-chain-guard scan ./project --
|
|
170
|
+
# On subsequent scans, only show new findings
|
|
171
|
+
supply-chain-guard scan ./project --baseline .scg-baseline.json
|
|
133
172
|
```
|
|
134
173
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
By default, the scanner exits 2 on critical findings and 1 on high findings. Use `--fail-on` to set a custom threshold:
|
|
174
|
+
## Example Output
|
|
138
175
|
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
|
|
176
|
+
```
|
|
177
|
+
supply-chain-guard scan report
|
|
178
|
+
──────────────────────────────────────────────────
|
|
179
|
+
Target: ./suspicious-package
|
|
180
|
+
Type: directory
|
|
181
|
+
Duration: 142ms
|
|
142
182
|
|
|
143
|
-
|
|
144
|
-
supply-chain-guard scan ./project --fail-on high
|
|
183
|
+
Risk Score: 83/100 (CRITICAL)
|
|
145
184
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
185
|
+
Trust Breakdown
|
|
186
|
+
──────────────────────────────────────────────────
|
|
187
|
+
Publisher: ██░░░░░░░░ 20/100
|
|
188
|
+
Code: ███░░░░░░░ 30/100
|
|
189
|
+
Deps: ██████████ 100/100
|
|
190
|
+
Release: ████████░░ 80/100
|
|
191
|
+
Overall: ████░░░░░░ 48/100
|
|
149
192
|
|
|
150
|
-
|
|
193
|
+
Correlated Incidents
|
|
194
|
+
──────────────────────────────────────────────────
|
|
151
195
|
|
|
152
|
-
|
|
196
|
+
[CRITICAL] Vidar Stealer Infection (95% confidence)
|
|
197
|
+
Multiple infostealer indicators: dead-drop resolvers for C2,
|
|
198
|
+
browser credential theft, and crypto wallet targeting.
|
|
199
|
+
Indicators: DEAD_DROP_STEAM, VIDAR_BROWSER_THEFT, DROPPER_TEMP_EXEC
|
|
153
200
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
supply-chain-guard scan ./project --min-severity high
|
|
201
|
+
Findings (6)
|
|
202
|
+
──────────────────────────────────────────────────
|
|
157
203
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
```
|
|
204
|
+
[CRITICAL] Steam Community profile URL in code (dead-drop resolver)
|
|
205
|
+
Rule: DEAD_DROP_STEAM | File: src/config.js:12
|
|
161
206
|
|
|
162
|
-
|
|
207
|
+
[CRITICAL] Browser credential file access (infostealer)
|
|
208
|
+
Rule: VIDAR_BROWSER_THEFT | File: src/steal.js:45
|
|
163
209
|
|
|
210
|
+
[CRITICAL] Dropper: write + execute in temp directory
|
|
211
|
+
Rule: DROPPER_TEMP_EXEC | File: src/loader.js:23
|
|
164
212
|
```
|
|
165
|
-
supply-chain-guard scan report
|
|
166
|
-
──────────────────────────────────────────────────────
|
|
167
|
-
Target: ./suspicious-package
|
|
168
|
-
Type: directory
|
|
169
|
-
Time: 2026-03-19T02:30:00.000Z
|
|
170
|
-
Duration: 142ms
|
|
171
213
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
Fix: Quarantine this code immediately.
|
|
187
|
-
|
|
188
|
-
🔴 [CRITICAL] Base64-encoded eval detected (common malware obfuscation)
|
|
189
|
-
Rule: EVAL_ATOB
|
|
190
|
-
File: src/loader.js:15
|
|
191
|
-
Match: eval(atob("aHR0cHM6Ly..."))
|
|
192
|
-
Fix: Do not execute this code. Decode the base64 to inspect the payload.
|
|
193
|
-
|
|
194
|
-
🟠 [HIGH] Suspicious invisible Unicode characters detected
|
|
195
|
-
Rule: INVISIBLE_UNICODE
|
|
196
|
-
File: src/utils.js:3
|
|
197
|
-
Fix: Inspect this file in a hex editor.
|
|
198
|
-
|
|
199
|
-
🟡 [MEDIUM] Solana mainnet RPC reference detected
|
|
200
|
-
Rule: SOLANA_MAINNET
|
|
201
|
-
File: src/c2.js:8
|
|
202
|
-
Fix: If this project has no blockchain functionality, investigate.
|
|
203
|
-
|
|
204
|
-
Recommendations
|
|
205
|
-
──────────────────────────────────────────────────────
|
|
206
|
-
• CRITICAL: GlassWorm malware marker detected. Quarantine immediately.
|
|
207
|
-
• CRITICAL: Encoded code execution detected. Do not run this code.
|
|
208
|
-
• Review files with invisible Unicode characters.
|
|
209
|
-
• Solana blockchain references may indicate C2 communication.
|
|
210
|
-
```
|
|
214
|
+
## Supported Ecosystems
|
|
215
|
+
|
|
216
|
+
| Ecosystem | Command | What It Scans |
|
|
217
|
+
|-----------|---------|---------------|
|
|
218
|
+
| npm | `scan`, `npm` | package.json, install scripts, lockfile, tarball |
|
|
219
|
+
| PyPI | `pypi` | setup.py, setup.cfg, pyproject.toml, install hooks |
|
|
220
|
+
| Cargo/Rust | `scan` | Cargo.toml, build.rs, proc macros |
|
|
221
|
+
| Go | `scan` | go.mod, init() functions, CGo, plugin loading |
|
|
222
|
+
| Docker | `scan` | Dockerfile, docker-compose.yml, Containerfile |
|
|
223
|
+
| Terraform | `scan` | .tf, .hcl files (provisioners, modules, secrets) |
|
|
224
|
+
| VS Code | `vscode` | .vsix files, activation events, dangerous APIs |
|
|
225
|
+
| GitHub Actions | `scan` | .github/workflows/*.yml |
|
|
226
|
+
| GitHub Repos | `repo` | Trust signals, releases, README lures |
|
|
227
|
+
| Solana | `monitor` | C2 wallet memo transactions |
|
|
211
228
|
|
|
212
229
|
## GitHub Action
|
|
213
230
|
|
|
214
|
-
Add supply-chain-guard to your CI/CD pipeline:
|
|
215
|
-
|
|
216
231
|
```yaml
|
|
217
232
|
name: Supply Chain Security
|
|
218
233
|
on: [push, pull_request]
|
|
@@ -222,10 +237,10 @@ jobs:
|
|
|
222
237
|
runs-on: ubuntu-latest
|
|
223
238
|
steps:
|
|
224
239
|
- uses: actions/checkout@v4
|
|
225
|
-
- uses: homeofe/supply-chain-guard@
|
|
240
|
+
- uses: homeofe/supply-chain-guard@v4
|
|
226
241
|
with:
|
|
227
|
-
fail-on: critical
|
|
228
|
-
comment-on-pr: true
|
|
242
|
+
fail-on: critical
|
|
243
|
+
comment-on-pr: true
|
|
229
244
|
```
|
|
230
245
|
|
|
231
246
|
### Action Inputs
|
|
@@ -233,53 +248,15 @@ jobs:
|
|
|
233
248
|
| Input | Description | Default |
|
|
234
249
|
|-------|-------------|---------|
|
|
235
250
|
| `path` | Path to scan | `.` |
|
|
236
|
-
| `format` | Output format (text/json/markdown) | `markdown` |
|
|
251
|
+
| `format` | Output format (text/json/markdown/html/sarif/sbom) | `markdown` |
|
|
237
252
|
| `min-severity` | Minimum severity to report | `low` |
|
|
238
253
|
| `exclude-rules` | Comma-separated rule IDs to exclude | |
|
|
239
254
|
| `fail-on` | Fail check at this severity or above | `critical` |
|
|
240
255
|
| `comment-on-pr` | Post findings as PR comment | `true` |
|
|
241
256
|
|
|
242
|
-
### Action Outputs
|
|
243
|
-
|
|
244
|
-
| Output | Description |
|
|
245
|
-
|--------|-------------|
|
|
246
|
-
| `score` | Risk score (0-100) |
|
|
247
|
-
| `risk-level` | clean/low/medium/high/critical |
|
|
248
|
-
| `findings-count` | Total number of findings |
|
|
249
|
-
| `report` | Full scan report |
|
|
250
|
-
|
|
251
|
-
## Detection Rules
|
|
252
|
-
|
|
253
|
-
| Rule ID | Severity | Description |
|
|
254
|
-
|---------|----------|-------------|
|
|
255
|
-
| `GLASSWORM_MARKER` | Critical | GlassWorm campaign marker variable |
|
|
256
|
-
| `EVAL_ATOB` | Critical | Base64-encoded eval |
|
|
257
|
-
| `EVAL_BUFFER` | Critical | Buffer-encoded eval |
|
|
258
|
-
| `FUNCTION_ATOB` | Critical | Function constructor with base64 |
|
|
259
|
-
| `EVAL_HEX` | Critical | Hex-encoded eval |
|
|
260
|
-
| `SCRIPT_CURL_EXEC` | Critical | Install script with curl pipe to shell |
|
|
261
|
-
| `SCRIPT_WGET_EXEC` | Critical | Install script with wget pipe to shell |
|
|
262
|
-
| `INVISIBLE_UNICODE` | High | Invisible Unicode characters (obfuscation) |
|
|
263
|
-
| `SUSPICIOUS_I_JS` | High | Suspicious i.js file |
|
|
264
|
-
| `SUSPICIOUS_INIT_JSON` | High | GlassWorm persistence file |
|
|
265
|
-
| `EXEC_ENCODED` | High | Encoded exec call |
|
|
266
|
-
| `SCRIPT_NODE_INLINE` | High | Inline Node.js in install script |
|
|
267
|
-
| `SCRIPT_ENCODED` | High | Encoding in install script |
|
|
268
|
-
| `ENV_EXFILTRATION` | High | Environment variable exfiltration |
|
|
269
|
-
| `DNS_EXFILTRATION` | High | DNS-based data exfiltration |
|
|
270
|
-
| `MALICIOUS_PACKAGE_NAME` | High | Known malicious package name pattern |
|
|
271
|
-
| `MALICIOUS_DEPENDENCY` | High | Dependency matches malicious pattern |
|
|
272
|
-
| `SOLANA_MAINNET` | Medium | Solana mainnet RPC reference |
|
|
273
|
-
| `HELIUS_RPC` | Medium | Helius RPC reference |
|
|
274
|
-
| `HEX_ARRAY` | Medium | Large hex array (obfuscated payload) |
|
|
275
|
-
| `CHARCODE_OBFUSCATION` | Medium | Character code string construction |
|
|
276
|
-
| `SCRIPT_PREINSTALL_EXEC` | Medium | Exec in preinstall script |
|
|
277
|
-
| `GIT_DATE_ANOMALY` | Medium | Git commit date manipulation |
|
|
278
|
-
| `COMPLEX_INSTALL_SCRIPT` | Low | Complex install script |
|
|
279
|
-
|
|
280
257
|
## Adding Custom Patterns
|
|
281
258
|
|
|
282
|
-
Edit `src/patterns.ts` to add new detection rules
|
|
259
|
+
Edit `src/patterns.ts` to add new detection rules:
|
|
283
260
|
|
|
284
261
|
```typescript
|
|
285
262
|
{
|
|
@@ -291,54 +268,76 @@ Edit `src/patterns.ts` to add new detection rules. Each pattern needs:
|
|
|
291
268
|
}
|
|
292
269
|
```
|
|
293
270
|
|
|
294
|
-
##
|
|
295
|
-
|
|
296
|
-
1. **File Scanner**: Recursively scans directories, skipping `node_modules`, `.git`, and build artifacts. Checks file content against known malicious patterns using regex.
|
|
297
|
-
|
|
298
|
-
2. **npm Scanner**: Downloads package tarballs from the npm registry without installing them. Analyzes package.json scripts, dependencies, and published file contents.
|
|
299
|
-
|
|
300
|
-
3. **Solana Monitor**: Polls the Solana blockchain for transactions on known C2 wallet addresses. Decodes memo instructions that GlassWorm uses to encode payload URLs.
|
|
301
|
-
|
|
302
|
-
4. **Scoring**: Each finding contributes to a risk score based on severity. The score determines the overall risk level (clean/low/medium/high/critical).
|
|
271
|
+
## Architecture
|
|
303
272
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
-
|
|
312
|
-
|
|
313
|
-
|
|
273
|
+
```
|
|
274
|
+
scan() -> collectFiles() -> per-file analysis
|
|
275
|
+
-> Pattern matching (170+ rules across 12 categories)
|
|
276
|
+
-> Entropy analysis (Shannon entropy for encoded payloads)
|
|
277
|
+
-> IOC blocklist check (known C2 domains, IPs, hashes)
|
|
278
|
+
-> Install hook deep analysis (secret harvesting, download-exec)
|
|
279
|
+
-> Dependency risk analysis (Levenshtein typosquatting)
|
|
280
|
+
-> Sub-scanners (lockfile, GitHub Actions, Docker, Cargo, Go, IaC)
|
|
281
|
+
-> GitHub trust signal analysis (account age, stars, releases)
|
|
282
|
+
-> Correlation engine (links findings into incidents)
|
|
283
|
+
-> Trust breakdown (4-dimension scoring)
|
|
284
|
+
-> Report generation (text/json/html/markdown/sarif/sbom)
|
|
285
|
+
```
|
|
314
286
|
|
|
315
287
|
## Contributing
|
|
316
288
|
|
|
317
289
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. The most impactful contribution is adding new detection patterns for emerging threats.
|
|
318
290
|
|
|
319
|
-
|
|
320
291
|
## Changelog
|
|
321
292
|
|
|
293
|
+
### v4.4.0 (2026-04-04)
|
|
294
|
+
- **New: Policy Engine** -- `.supply-chain-guard.yml` config for rule disable, severity overrides, allowlists, suppressions
|
|
295
|
+
- **New: Baseline System** -- `--save-baseline` / `--baseline` for diff-only CI scanning (only new findings)
|
|
296
|
+
- **New: Trust Signals** -- positive indicators (SECURITY.md, CODEOWNERS, LICENSE, lockfile, repository link)
|
|
297
|
+
- **New:** Secret exfiltration chain correlations (install hook + network + obfuscation)
|
|
298
|
+
- **New:** Suppression count in reports
|
|
299
|
+
- 18 new tests (482 total)
|
|
300
|
+
|
|
301
|
+
### v4.3.0 (2026-04-04)
|
|
302
|
+
- Documentation overhaul: complete README rewrite covering all features through v4.2
|
|
303
|
+
- Updated all version references, examples, and detection rule tables
|
|
304
|
+
|
|
305
|
+
### v4.2.0 (2026-04-04)
|
|
306
|
+
- **New: Correlation Engine** -- links findings into incident-level attack chains (15+ rules)
|
|
307
|
+
- **New: Trust Breakdown** -- 4-dimension scoring (publisher/code/dependency/release)
|
|
308
|
+
- **New: Install Hook Scanner** -- deep analysis (secret harvesting, download-exec, binary blobs)
|
|
309
|
+
- **New: Dependency Risk Analyzer** -- Levenshtein typosquat detection
|
|
310
|
+
- **New: Publishing Anomaly Detector** -- maintainer changes, version gaps
|
|
311
|
+
- **New: Release Scanner** -- double extensions, LNK, PE magic, password hints
|
|
312
|
+
- **New:** C2 patterns (DoH, Gist dead-drops, dynamic WebSocket)
|
|
313
|
+
- **New:** Secrets detection (AWS, GitHub, SSH, npm tokens, private keys)
|
|
314
|
+
- 59 new tests (464 total), ~174 detection rules
|
|
315
|
+
|
|
316
|
+
### v4.1.0 (2026-04-04)
|
|
317
|
+
- **New: GitHub Trust Scanner** -- repo metadata, star-farming, release artifacts, README lures
|
|
318
|
+
- **New: IOC Blocklist** -- known C2 domains/IPs, malware hashes, bad npm versions, malicious accounts
|
|
319
|
+
- **New:** Vidar/GhostSocks/dropper patterns, dead-drop resolver detection
|
|
320
|
+
- **New:** Claude Code leak campaign signatures, fake AI tool lure detection
|
|
321
|
+
- 42 new tests (405 total), ~143 detection rules
|
|
322
|
+
|
|
323
|
+
### v4.0.0 (2026-04-04)
|
|
324
|
+
- **New:** Dockerfile, package config, git security, Cargo/Rust, Go module, entropy scanners
|
|
325
|
+
- **New:** Build-tool, monorepo, IaC/Terraform patterns
|
|
326
|
+
- **New:** HTML report format with severity filtering
|
|
327
|
+
- **New:** Shai-Hulud worm, advanced obfuscation, campaign signatures
|
|
328
|
+
- 94 new tests (363 total), 110+ detection rules
|
|
329
|
+
|
|
322
330
|
### v3.1.0 (2026-03-26)
|
|
323
|
-
-
|
|
324
|
-
- **New:** `--fail-on <severity>` flag for tiered CI pipelines (fail only at specified severity threshold)
|
|
325
|
-
- **Tests:** Full unit test coverage for solana-monitor (23 tests), reporter (39 tests), CLI integration (22 tests)
|
|
326
|
-
- **Total:** 269 tests, all passing
|
|
331
|
+
- SBOM export (CycloneDX 1.5), `--fail-on` flag, full test coverage (269 tests)
|
|
327
332
|
|
|
328
333
|
### v3.0.0 (2026-03-26)
|
|
329
|
-
-
|
|
330
|
-
- **New:** GitHub Actions workflow scanner detects CI/CD pipeline attacks (unpinned actions, secrets exfiltration, encoded payloads)
|
|
331
|
-
- **New:** SARIF 2.1.0 output format for GitHub Code Scanning integration (`--format sarif`)
|
|
332
|
-
- **New:** Solana C2 wallet watchlist with persistent monitoring and webhook alerts (`watchlist` commands)
|
|
333
|
-
- **New:** Blog post reference and improved quickstart guide
|
|
334
|
-
- **Docs:** Example GitHub Actions workflow for SARIF upload at `docs/github-actions-sarif.yml`
|
|
334
|
+
- PyPI scanner, GitHub Actions scanner, SARIF output, Solana watchlist
|
|
335
335
|
|
|
336
336
|
### v2.0.0
|
|
337
|
-
- Multi-platform scanner (npm, PyPI, VS Code)
|
|
338
|
-
- Dependency confusion detection
|
|
339
|
-
- Lockfile integrity checks
|
|
340
|
-
- Solana C2 monitoring
|
|
337
|
+
- Multi-platform scanner (npm, PyPI, VS Code), dependency confusion, lockfile checks
|
|
341
338
|
|
|
339
|
+
### v1.0.0
|
|
340
|
+
- Initial release: GlassWorm detection, npm scanning, Solana C2 monitoring
|
|
342
341
|
|
|
343
342
|
## License
|
|
344
343
|
|
package/dist/cli.js
CHANGED
|
@@ -20,7 +20,7 @@ const program = new commander_1.Command();
|
|
|
20
20
|
program
|
|
21
21
|
.name("supply-chain-guard")
|
|
22
22
|
.description("Open-source supply-chain security scanner. Detects GlassWorm and similar malware campaigns in npm packages, PyPI packages, code repos, VS Code extensions, and project dependencies.")
|
|
23
|
-
.version("4.
|
|
23
|
+
.version("4.4.0");
|
|
24
24
|
// ── scan command ────────────────────────────────────────────────────
|
|
25
25
|
program
|
|
26
26
|
.command("scan")
|
|
@@ -31,6 +31,8 @@ program
|
|
|
31
31
|
.option("-e, --exclude <rules>", "Comma-separated list of rule IDs to exclude")
|
|
32
32
|
.option("-d, --depth <depth>", "Maximum directory depth", "20")
|
|
33
33
|
.option("--fail-on <severity>", "Exit non-zero only if findings at or above this severity: critical, high, medium, low, info")
|
|
34
|
+
.option("--baseline <file>", "Baseline file to diff against (only show new findings)")
|
|
35
|
+
.option("--save-baseline <file>", "Save current findings as baseline for future diffs")
|
|
34
36
|
.action(async (target, opts) => {
|
|
35
37
|
try {
|
|
36
38
|
const options = {
|
|
@@ -39,8 +41,15 @@ program
|
|
|
39
41
|
minSeverity: opts.minSeverity,
|
|
40
42
|
excludeRules: opts.exclude?.split(",").map((r) => r.trim()),
|
|
41
43
|
maxDepth: parseInt(opts.depth, 10),
|
|
44
|
+
baselineFile: opts.baseline,
|
|
42
45
|
};
|
|
43
46
|
const report = await (0, scanner_js_1.scan)(options);
|
|
47
|
+
// Save baseline if requested
|
|
48
|
+
if (opts.saveBaseline) {
|
|
49
|
+
const { saveBaseline } = await import("./policy-engine.js");
|
|
50
|
+
saveBaseline(report.findings, opts.saveBaseline);
|
|
51
|
+
console.error(`Baseline saved to ${opts.saveBaseline} (${report.findings.length} findings)`);
|
|
52
|
+
}
|
|
44
53
|
console.log((0, reporter_js_1.formatReport)(report, options.format));
|
|
45
54
|
// Exit code logic
|
|
46
55
|
if (opts.failOn) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|