agent-security-scanner-mcp 4.1.0 → 4.2.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 +394 -1
- package/compliance/gdpr-technical-controls.json +112 -0
- package/compliance/soc2-technical-controls.json +148 -0
- package/index.js +148 -1
- package/openclaw.plugin.json +21 -1
- package/package.json +1 -1
- package/src/lib/compliance-controls.js +100 -21
- package/src/lib/compliance-evaluator.js +150 -9
- package/src/lib/compliance-evidence.js +321 -0
- package/src/lib/cyclonedx.js +113 -0
- package/src/lib/lockfile-parsers.js +671 -0
- package/src/lib/osv-client.js +254 -0
- package/src/lib/purl.js +90 -0
- package/src/lib/sbom-component.js +88 -0
- package/src/tools/compliance-controls.js +22 -12
- package/src/tools/evaluate-compliance.js +161 -0
- package/src/tools/sbom-diff.js +199 -0
- package/src/tools/sbom-generate.js +116 -0
- package/src/tools/sbom-hallucinations.js +117 -0
- package/src/tools/sbom-report.js +271 -0
- package/src/tools/sbom-vulnerabilities.js +121 -0
package/README.md
CHANGED
|
@@ -63,6 +63,10 @@ Continue reading below for full version documentation →
|
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
66
|
+
> **New in v4.2.0:** Compliance evidence collection — evaluate projects against SOC2-Technical (8 controls) and GDPR-Technical (6 controls) frameworks. Collects evidence from code scans, SBOM, vulnerability checks, and hallucination detection, then evaluates controls with pass/partial/fail/not_evaluated status. Supports evidence persistence for audit trails. [See Compliance Evaluation](#-compliance-evaluation-new-in-v420).
|
|
67
|
+
>
|
|
68
|
+
> **New in v4.1.0:** SBOM generation and dependency vulnerability analysis — generates CycloneDX v1.5 SBOMs, scans against OSV.dev for CVEs, detects hallucinated packages, compares baselines, and generates HTML audit reports. Supports 8 lock file formats and 7 manifest formats across npm, Python, Go, Rust, Ruby, and Java ecosystems. [See SBOM Tools](#-sbom--supply-chain-analysis-new-in-v410).
|
|
69
|
+
>
|
|
66
70
|
> **New in v4.0.0:** LLM-powered semantic code review agent with intent profiling — understands what your project is supposed to do and flags patterns that violate that intent. Same `eval()` call = safe in a build tool, dangerous in an e-commerce app. Supports Claude CLI (no API key needed!), Anthropic, and OpenAI. [See code-review-agent](#-llm-powered-code-review-agent-new-in-v400).
|
|
67
71
|
>
|
|
68
72
|
> **New in v3.11.0:** ClawHub ecosystem security scanning — scanned all 16,532 ClawHub skills and found 46% have critical vulnerabilities. New `scan-clawhub` CLI for batch scanning, 40+ prompt injection patterns, jailbreak detection (DAN mode, dev mode), data exfiltration checks. [See ClawHub Security Dashboard](https://www.proof-layer.com/dashboard).
|
|
@@ -87,6 +91,13 @@ Continue reading below for full version documentation →
|
|
|
87
91
|
| `scan_skill` | Deep security scan of an OpenClaw skill: prompt injection, AST+taint code analysis, ClawHavoc malware signatures, supply chain, rug pull. Returns A-F grade | Before installing any OpenClaw skill |
|
|
88
92
|
| `scanner_health` | Check plugin health: engine status, daemon status, package data availability | Diagnostics and plugin status |
|
|
89
93
|
| `list_security_rules` | List available security rules and fix templates | To check rule coverage for a language |
|
|
94
|
+
| `sbom_generate` | Generate CycloneDX v1.5 SBOM for a project (8 lock file formats, 7 manifest formats) | Before releases, for compliance audits |
|
|
95
|
+
| `sbom_scan_vulnerabilities` | Cross-reference SBOM against OSV.dev for CVEs with severity filtering | After generating SBOM, for security audits |
|
|
96
|
+
| `sbom_check_hallucinations` | Verify all SBOM packages exist in official registries | Before deploying, to catch AI-invented packages |
|
|
97
|
+
| `sbom_diff` | Compare current SBOM against baseline, detect added/removed/changed packages | In CI/CD to track dependency drift |
|
|
98
|
+
| `sbom_export_report` | Generate HTML or JSON audit report from SBOM with vulnerability data | For PCI-DSS compliance, security reviews |
|
|
99
|
+
| `get_compliance_controls` | Look up compliance controls with evaluation criteria (AIUC-1, SOC2, GDPR) | To understand compliance requirements |
|
|
100
|
+
| `evaluate_compliance` | Evaluate project against compliance frameworks with evidence collection | For SOC2/GDPR technical compliance audits |
|
|
90
101
|
|
|
91
102
|
## Quick Start
|
|
92
103
|
|
|
@@ -243,6 +254,351 @@ npx cr-agent analyze ./path/to/project -f sarif -p claude-cli
|
|
|
243
254
|
|
|
244
255
|
---
|
|
245
256
|
|
|
257
|
+
## 📦 SBOM / Supply Chain Analysis (New in v4.1.0)
|
|
258
|
+
|
|
259
|
+
Generate Software Bill of Materials (SBOM) and analyze dependencies for vulnerabilities across your entire supply chain.
|
|
260
|
+
|
|
261
|
+
### Quick Start
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
# Generate SBOM for current project
|
|
265
|
+
npx agent-security-scanner-mcp sbom-generate .
|
|
266
|
+
|
|
267
|
+
# Scan for vulnerabilities against OSV.dev
|
|
268
|
+
npx agent-security-scanner-mcp sbom-vulnerabilities .
|
|
269
|
+
|
|
270
|
+
# Check for hallucinated packages
|
|
271
|
+
npx agent-security-scanner-mcp sbom-check-hallucinations .
|
|
272
|
+
|
|
273
|
+
# Compare against baseline (CI/CD)
|
|
274
|
+
npx agent-security-scanner-mcp sbom-diff . --save-baseline # First run
|
|
275
|
+
npx agent-security-scanner-mcp sbom-diff . # Subsequent runs
|
|
276
|
+
|
|
277
|
+
# Generate HTML audit report
|
|
278
|
+
npx agent-security-scanner-mcp sbom-report . --format html
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Supported Ecosystems
|
|
282
|
+
|
|
283
|
+
| Ecosystem | Lock Files | Manifests | CLI Fallback |
|
|
284
|
+
|-----------|------------|-----------|--------------|
|
|
285
|
+
| **npm** | package-lock.json (v2/v3), yarn.lock (classic/berry), pnpm-lock.yaml | package.json | `npm ls`, `pnpm list` |
|
|
286
|
+
| **Python** | poetry.lock, Pipfile.lock | requirements.txt, pyproject.toml | — |
|
|
287
|
+
| **Go** | go.sum | go.mod | `go list` |
|
|
288
|
+
| **Rust** | Cargo.lock | — | `cargo metadata` |
|
|
289
|
+
| **Ruby** | Gemfile.lock | Gemfile | — |
|
|
290
|
+
| **Java** | — | pom.xml, build.gradle | `mvn dependency:tree` |
|
|
291
|
+
|
|
292
|
+
### SBOM Tools
|
|
293
|
+
|
|
294
|
+
#### `sbom_generate`
|
|
295
|
+
|
|
296
|
+
Generate a CycloneDX v1.5 SBOM for a project. Discovers all dependencies (direct + transitive) from lock files and manifests.
|
|
297
|
+
|
|
298
|
+
```json
|
|
299
|
+
// Input
|
|
300
|
+
{ "directory_path": "./my-project", "verbosity": "compact" }
|
|
301
|
+
|
|
302
|
+
// Output
|
|
303
|
+
{
|
|
304
|
+
"total_components": 212,
|
|
305
|
+
"direct": 20,
|
|
306
|
+
"dev": 91,
|
|
307
|
+
"ecosystems": ["npm", "pypi"],
|
|
308
|
+
"components": [
|
|
309
|
+
{ "name": "express", "version": "4.18.2", "ecosystem": "npm", "isDirect": true }
|
|
310
|
+
]
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
#### `sbom_scan_vulnerabilities`
|
|
315
|
+
|
|
316
|
+
Cross-reference SBOM components against OSV.dev vulnerability database. Returns CVE IDs, CVSS scores, severity, and fix recommendations.
|
|
317
|
+
|
|
318
|
+
```json
|
|
319
|
+
// Input
|
|
320
|
+
{ "directory_path": "./my-project", "severity_threshold": "medium" }
|
|
321
|
+
|
|
322
|
+
// Output
|
|
323
|
+
{
|
|
324
|
+
"total_vulnerabilities": 3,
|
|
325
|
+
"by_severity": { "critical": 1, "high": 1, "medium": 1 },
|
|
326
|
+
"vulnerabilities": [
|
|
327
|
+
{
|
|
328
|
+
"id": "GHSA-xxxx-yyyy-zzzz",
|
|
329
|
+
"package": "lodash",
|
|
330
|
+
"severity": "critical",
|
|
331
|
+
"cvss": 9.8,
|
|
332
|
+
"fixed_version": "4.17.21"
|
|
333
|
+
}
|
|
334
|
+
]
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
#### `sbom_check_hallucinations`
|
|
339
|
+
|
|
340
|
+
Check all packages in an SBOM against official registries to detect AI-invented package names.
|
|
341
|
+
|
|
342
|
+
```json
|
|
343
|
+
// Input
|
|
344
|
+
{ "directory_path": "./my-project" }
|
|
345
|
+
|
|
346
|
+
// Output
|
|
347
|
+
{
|
|
348
|
+
"total_checked": 212,
|
|
349
|
+
"hallucinated_count": 1,
|
|
350
|
+
"unsupported_ecosystems": ["go", "java"],
|
|
351
|
+
"hallucinated": [
|
|
352
|
+
{ "name": "react-async-utils-helper", "ecosystem": "npm" }
|
|
353
|
+
]
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
#### `sbom_diff`
|
|
358
|
+
|
|
359
|
+
Compare current project SBOM against a stored baseline. Detects added, removed, and version-changed packages.
|
|
360
|
+
|
|
361
|
+
```json
|
|
362
|
+
// Input (first run)
|
|
363
|
+
{ "directory_path": "./my-project", "save_baseline": true }
|
|
364
|
+
|
|
365
|
+
// Output
|
|
366
|
+
{ "message": "Baseline saved to .scanner/sbom-baseline.json" }
|
|
367
|
+
|
|
368
|
+
// Input (subsequent runs)
|
|
369
|
+
{ "directory_path": "./my-project" }
|
|
370
|
+
|
|
371
|
+
// Output
|
|
372
|
+
{
|
|
373
|
+
"added": [{ "name": "lodash", "version": "4.17.21", "ecosystem": "npm" }],
|
|
374
|
+
"removed": [],
|
|
375
|
+
"changed": [{ "name": "express", "from": "4.17.1", "to": "4.18.2" }]
|
|
376
|
+
}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
#### `sbom_export_report`
|
|
380
|
+
|
|
381
|
+
Generate an HTML or JSON audit report from SBOM data, optionally enriched with vulnerability scan results.
|
|
382
|
+
|
|
383
|
+
```json
|
|
384
|
+
// Input
|
|
385
|
+
{
|
|
386
|
+
"directory_path": "./my-project",
|
|
387
|
+
"format": "html",
|
|
388
|
+
"include_vulnerabilities": true,
|
|
389
|
+
"output_path": "./sbom-report.html"
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// Output
|
|
393
|
+
{
|
|
394
|
+
"report_path": "./sbom-report.html",
|
|
395
|
+
"components": 212,
|
|
396
|
+
"vulnerabilities": 3
|
|
397
|
+
}
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
### CLI Commands
|
|
401
|
+
|
|
402
|
+
```bash
|
|
403
|
+
# Generate SBOM
|
|
404
|
+
sbom-generate <dir> [--save] [--output <path>] [--verbosity minimal|compact|full]
|
|
405
|
+
|
|
406
|
+
# Scan vulnerabilities
|
|
407
|
+
sbom-vulnerabilities <dir> [--sbom-path <path>] [--verbosity minimal|compact|full]
|
|
408
|
+
|
|
409
|
+
# Check hallucinations
|
|
410
|
+
sbom-check-hallucinations <dir> [--verbosity minimal|compact|full]
|
|
411
|
+
|
|
412
|
+
# Compare baseline
|
|
413
|
+
sbom-diff <dir> [--save-baseline] [--baseline-path <path>] [--verbosity minimal|compact|full]
|
|
414
|
+
|
|
415
|
+
# Generate report
|
|
416
|
+
sbom-report <dir> [--format html|json] [--output <path>] [--no-vulnerabilities]
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
### Features
|
|
420
|
+
|
|
421
|
+
- **CycloneDX v1.5 JSON** — Industry-standard SBOM format
|
|
422
|
+
- **OSV.dev Integration** — Real-time vulnerability data with 24-hour local cache
|
|
423
|
+
- **Multi-Ecosystem** — Single scan discovers dependencies across all package managers
|
|
424
|
+
- **Direct vs Transitive** — Distinguishes direct dependencies from transitive ones
|
|
425
|
+
- **Dev Dependencies** — Optionally include/exclude development dependencies
|
|
426
|
+
- **Baseline Comparison** — Track dependency drift over time
|
|
427
|
+
- **HTML Reports** — Visual dashboard with severity charts for compliance audits
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## 📋 Compliance Evaluation (New in v4.2.0)
|
|
432
|
+
|
|
433
|
+
Evaluate projects against technical compliance frameworks with automated evidence collection from code scans, SBOM, vulnerability checks, and hallucination detection.
|
|
434
|
+
|
|
435
|
+
### Quick Start
|
|
436
|
+
|
|
437
|
+
```bash
|
|
438
|
+
# Evaluate against SOC2 technical controls
|
|
439
|
+
npx agent-security-scanner-mcp evaluate-compliance . --framework soc2-technical
|
|
440
|
+
|
|
441
|
+
# Evaluate against GDPR technical controls
|
|
442
|
+
npx agent-security-scanner-mcp evaluate-compliance . --framework gdpr-technical
|
|
443
|
+
|
|
444
|
+
# Evaluate with evidence persistence (for audit trails)
|
|
445
|
+
npx agent-security-scanner-mcp evaluate-compliance . --framework soc2-technical --save-evidence
|
|
446
|
+
|
|
447
|
+
# List available compliance frameworks
|
|
448
|
+
npx agent-security-scanner-mcp get-compliance-controls --verbosity full
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
### Supported Frameworks
|
|
452
|
+
|
|
453
|
+
| Framework | Controls | Focus Areas |
|
|
454
|
+
|-----------|----------|-------------|
|
|
455
|
+
| **AIUC-1** | 16 | AI agent security, prompt injection, hallucination |
|
|
456
|
+
| **SOC2-Technical** | 8 | Supply chain, code security, crypto, auth, drift |
|
|
457
|
+
| **GDPR-Technical** | 6 | Data privacy, encryption, third-party risks |
|
|
458
|
+
|
|
459
|
+
> **Note:** These are technical controls only. SOC2-Technical does not cover organizational, administrative, or physical SOC 2 controls. GDPR-Technical does not cover DPIAs, data subject rights, or processor contracts.
|
|
460
|
+
|
|
461
|
+
### SOC2-Technical Controls
|
|
462
|
+
|
|
463
|
+
| Control ID | Title | What It Checks |
|
|
464
|
+
|------------|-------|----------------|
|
|
465
|
+
| SOC2-T001 | Software dependency inventory exists | SBOM has ≥1 component |
|
|
466
|
+
| SOC2-T002 | No critical dependency vulnerabilities | OSV.dev scan for critical/high CVEs |
|
|
467
|
+
| SOC2-T003 | No hallucinated packages | Package registry verification |
|
|
468
|
+
| SOC2-T004 | No critical code security findings | Static analysis for injection, deserialization |
|
|
469
|
+
| SOC2-T005 | Data exfiltration/exposure below threshold | Exfiltration patterns, info-exposure scan |
|
|
470
|
+
| SOC2-T006 | Cryptographic controls adequate | Weak algorithms, hardcoded keys |
|
|
471
|
+
| SOC2-T007 | Authentication/authorization adequate | Auth bypass, permissions issues |
|
|
472
|
+
| SOC2-T008 | Dependency drift tracked | SBOM baseline comparison |
|
|
473
|
+
|
|
474
|
+
### GDPR-Technical Controls
|
|
475
|
+
|
|
476
|
+
| Control ID | Title | What It Checks |
|
|
477
|
+
|------------|-------|----------------|
|
|
478
|
+
| GDPR-T001 | Sensitive data exposure below threshold | PII patterns, secrets, logging |
|
|
479
|
+
| GDPR-T002 | Data exfiltration below threshold | External data transfer patterns |
|
|
480
|
+
| GDPR-T003 | Encryption/transport adequate | Weak crypto, plaintext transport |
|
|
481
|
+
| GDPR-T004 | Third-party dependency inventory | SBOM component count |
|
|
482
|
+
| GDPR-T005 | No critical third-party vulnerabilities | OSV.dev vulnerability scan |
|
|
483
|
+
| GDPR-T006 | No hallucinated packages | Registry verification |
|
|
484
|
+
|
|
485
|
+
### MCP Tools
|
|
486
|
+
|
|
487
|
+
#### `get_compliance_controls`
|
|
488
|
+
|
|
489
|
+
Look up compliance controls with evaluation criteria. Filter by framework, domain, or OWASP LLM tags.
|
|
490
|
+
|
|
491
|
+
```json
|
|
492
|
+
// Input
|
|
493
|
+
{ "framework": "soc2-technical", "domain": "supply-chain", "verbosity": "compact" }
|
|
494
|
+
|
|
495
|
+
// Output
|
|
496
|
+
{
|
|
497
|
+
"framework": "SOC2-Technical",
|
|
498
|
+
"controls_count": 4,
|
|
499
|
+
"controls": [
|
|
500
|
+
{
|
|
501
|
+
"id": "SOC2-T001",
|
|
502
|
+
"title": "Software dependency inventory exists",
|
|
503
|
+
"domain": "supply-chain",
|
|
504
|
+
"references": ["CC6.6", "CC7.1"],
|
|
505
|
+
"scanner_tools": ["sbom_generate"],
|
|
506
|
+
"evaluation": { "evidence_checks": [...] }
|
|
507
|
+
}
|
|
508
|
+
]
|
|
509
|
+
}
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
#### `evaluate_compliance`
|
|
513
|
+
|
|
514
|
+
Evaluate a project against compliance frameworks. Collects evidence from multiple sources, evaluates each control, and optionally saves timestamped evidence bundles.
|
|
515
|
+
|
|
516
|
+
```json
|
|
517
|
+
// Input
|
|
518
|
+
{
|
|
519
|
+
"directory_path": "./my-project",
|
|
520
|
+
"frameworks": ["soc2-technical", "gdpr-technical"],
|
|
521
|
+
"save_evidence": true,
|
|
522
|
+
"verbosity": "compact"
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
// Output
|
|
526
|
+
{
|
|
527
|
+
"directory": "./my-project",
|
|
528
|
+
"tools_run": ["scan_project", "scan_security", "sbom_generate", "sbom_scan_vulnerabilities", "sbom_check_hallucinations"],
|
|
529
|
+
"scan_summary": { "grade": "B", "by_severity": { "CRITICAL": 0, "HIGH": 2, "MEDIUM": 5 } },
|
|
530
|
+
"sbom_summary": { "component_count": 212, "ecosystems": ["npm", "pypi"] },
|
|
531
|
+
"supply_chain": {
|
|
532
|
+
"vulnerabilities": { "total": 3, "by_severity": { "critical": 0, "high": 1, "medium": 2 } },
|
|
533
|
+
"hallucinations": { "hallucinated_count": 0 },
|
|
534
|
+
"drift": { "baseline_exists": true, "added": 2, "removed": 0 }
|
|
535
|
+
},
|
|
536
|
+
"compliance": {
|
|
537
|
+
"soc2-technical": {
|
|
538
|
+
"pass": 6, "partial": 1, "fail": 0, "not_evaluated": 1,
|
|
539
|
+
"results": [
|
|
540
|
+
{ "control_id": "SOC2-T001", "status": "pass", "reasons": [] },
|
|
541
|
+
{ "control_id": "SOC2-T002", "status": "partial", "reasons": ["High-severity dependency vulnerabilities exceed threshold"] }
|
|
542
|
+
]
|
|
543
|
+
}
|
|
544
|
+
},
|
|
545
|
+
"evidence_saved": ".scanner/evidence/2026-04-02T05-30-00-soc2-technical.json"
|
|
546
|
+
}
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
### Evidence Collection
|
|
550
|
+
|
|
551
|
+
The `evaluate_compliance` tool collects evidence from multiple sources:
|
|
552
|
+
|
|
553
|
+
| Source | Tools Used | Evidence Collected |
|
|
554
|
+
|--------|------------|-------------------|
|
|
555
|
+
| Code Scan | `scan_project`, `scan_security` | Security grade, findings by severity/category |
|
|
556
|
+
| SBOM | `sbom_generate` | Component count, ecosystems, direct vs transitive |
|
|
557
|
+
| Vulnerabilities | `sbom_scan_vulnerabilities` | CVE counts by severity |
|
|
558
|
+
| Hallucinations | `sbom_check_hallucinations` | Hallucinated package count |
|
|
559
|
+
| Drift | `sbom_diff` | Added/removed/changed packages vs baseline |
|
|
560
|
+
|
|
561
|
+
### Evidence Persistence
|
|
562
|
+
|
|
563
|
+
When `save_evidence: true`, the tool saves timestamped JSON evidence bundles to `.scanner/evidence/`:
|
|
564
|
+
|
|
565
|
+
```
|
|
566
|
+
.scanner/evidence/
|
|
567
|
+
├── 2026-04-02T05-30-00-soc2-technical.json
|
|
568
|
+
├── 2026-04-02T05-35-00-gdpr-technical.json
|
|
569
|
+
└── ...
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
These bundles contain complete evidence data for audit trails and compliance documentation.
|
|
573
|
+
|
|
574
|
+
### Control Evaluation Logic
|
|
575
|
+
|
|
576
|
+
Controls use a path-based evidence check system with operators:
|
|
577
|
+
|
|
578
|
+
| Operator | Description | Example |
|
|
579
|
+
|----------|-------------|---------|
|
|
580
|
+
| `exists` | Path value is present and non-null | `sbom.component_count exists` |
|
|
581
|
+
| `eq` | Exact equality | `drift.baseline_exists eq true` |
|
|
582
|
+
| `lte` | Less than or equal | `vulnerabilities.critical lte 0` |
|
|
583
|
+
| `gte` | Greater than or equal | `sbom.component_count gte 1` |
|
|
584
|
+
|
|
585
|
+
**Three-tier null handling:**
|
|
586
|
+
1. **Explicit null** (e.g., OSV outage) → `not_evaluated` — source failure
|
|
587
|
+
2. **Missing top-level section** → `not_evaluated` — evidence never collected
|
|
588
|
+
3. **Missing leaf key** → use `default` value if specified (e.g., no crypto findings = 0)
|
|
589
|
+
|
|
590
|
+
### CLI Commands
|
|
591
|
+
|
|
592
|
+
```bash
|
|
593
|
+
# Evaluate compliance
|
|
594
|
+
evaluate-compliance <dir> [--framework <name>] [--save-evidence] [--verbosity minimal|compact|full]
|
|
595
|
+
|
|
596
|
+
# List controls
|
|
597
|
+
get-compliance-controls [--framework <name>] [--domain <name>] [--verbosity minimal|compact|full]
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
---
|
|
601
|
+
|
|
246
602
|
## Tool Reference
|
|
247
603
|
|
|
248
604
|
### `scan_security`
|
|
@@ -1158,7 +1514,7 @@ AI coding agents introduce attack surfaces that traditional security tools weren
|
|
|
1158
1514
|
|----------|-------|
|
|
1159
1515
|
| **Transport** | stdio |
|
|
1160
1516
|
| **Package** | `agent-security-scanner-mcp` (npm) |
|
|
1161
|
-
| **Tools** |
|
|
1517
|
+
| **Tools** | 17 |
|
|
1162
1518
|
| **Languages** | 12 |
|
|
1163
1519
|
| **Ecosystems** | 7 |
|
|
1164
1520
|
| **Auth** | None required |
|
|
@@ -1240,6 +1596,43 @@ All MCP tools support a `verbosity` parameter to minimize context window consump
|
|
|
1240
1596
|
|
|
1241
1597
|
## Changelog
|
|
1242
1598
|
|
|
1599
|
+
### v4.2.0 (2026-04-02) - Compliance Evidence Collection
|
|
1600
|
+
|
|
1601
|
+
**🚀 New Feature: SOC2/GDPR Technical Compliance Evaluation**
|
|
1602
|
+
|
|
1603
|
+
- **2 New MCP Tools:** `evaluate_compliance`, `get_compliance_controls` (enhanced)
|
|
1604
|
+
- **SOC2-Technical Framework:** 8 controls covering dependency inventory, vulnerabilities, hallucinations, code findings, exfiltration, crypto, auth, drift
|
|
1605
|
+
- **GDPR-Technical Framework:** 6 controls covering data exposure, exfiltration, encryption, dependency inventory, vulnerabilities, hallucinations
|
|
1606
|
+
- **Multi-Framework Registry:** Generalized loader supporting per-framework domain validation
|
|
1607
|
+
- **Evidence Collection:** Automated evidence gathering from code scans, SBOM, OSV.dev, hallucination checks
|
|
1608
|
+
- **Evidence Persistence:** Timestamped JSON bundles saved to `.scanner/evidence/` for audit trails
|
|
1609
|
+
- **Generic evidence_checks Evaluator:** Path-based check system with `exists`/`eq`/`lte`/`gte` operators
|
|
1610
|
+
- **Three-Tier Null Handling:** Distinguishes source failures (null) from absent categories (undefined)
|
|
1611
|
+
- **48 New Tests:** Comprehensive coverage for multi-framework loading, evidence checks, SOC2/GDPR evaluation
|
|
1612
|
+
|
|
1613
|
+
**Design Notes:**
|
|
1614
|
+
- Technical controls only — does not claim full SOC 2 or GDPR compliance
|
|
1615
|
+
- Missing evidence → `not_evaluated`, not false pass (secure default)
|
|
1616
|
+
- AIUC-1 backward compatibility maintained (zero regression)
|
|
1617
|
+
|
|
1618
|
+
---
|
|
1619
|
+
|
|
1620
|
+
### v4.1.0 (2026-03-27) - SBOM Generation & Vulnerability Analysis
|
|
1621
|
+
|
|
1622
|
+
**🚀 New Feature: Software Bill of Materials (SBOM)**
|
|
1623
|
+
|
|
1624
|
+
- **5 New MCP Tools:** `sbom_generate`, `sbom_scan_vulnerabilities`, `sbom_check_hallucinations`, `sbom_diff`, `sbom_export_report`
|
|
1625
|
+
- **CycloneDX v1.5:** Industry-standard SBOM format output
|
|
1626
|
+
- **8 Lock File Parsers:** package-lock.json (v2/v3), yarn.lock (classic/berry), pnpm-lock.yaml, poetry.lock, Pipfile.lock, Cargo.lock, go.sum, Gemfile.lock
|
|
1627
|
+
- **7 Manifest Parsers:** package.json, requirements.txt, pyproject.toml, go.mod, Gemfile, pom.xml, build.gradle
|
|
1628
|
+
- **CLI Fallbacks:** npm ls, pnpm list, cargo metadata, go list, mvn dependency:tree
|
|
1629
|
+
- **OSV.dev Integration:** Real-time vulnerability database with 24-hour local cache
|
|
1630
|
+
- **Baseline Comparison:** Track dependency drift with save/compare workflow
|
|
1631
|
+
- **HTML Reports:** Visual dashboard with severity charts for compliance
|
|
1632
|
+
- **86 New Tests:** Comprehensive coverage across all SBOM features
|
|
1633
|
+
|
|
1634
|
+
---
|
|
1635
|
+
|
|
1243
1636
|
### v4.0.0 (2026-03-21) - LLM-Powered Code Review Agent
|
|
1244
1637
|
|
|
1245
1638
|
**🚀 Major Release: LLM-Powered Semantic Code Review**
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.1",
|
|
3
|
+
"framework": "GDPR-Technical",
|
|
4
|
+
"source": "GDPR Articles 25, 32 — technical measures subset",
|
|
5
|
+
"source_snapshot": "2026-03-31",
|
|
6
|
+
"source_note": "Technical controls only. This does not cover organizational measures, DPIAs, data subject rights, lawful basis, or processor contracts. Not a substitute for legal compliance assessment.",
|
|
7
|
+
"domains": ["privacy", "security", "supply-chain"],
|
|
8
|
+
"controls": [
|
|
9
|
+
{
|
|
10
|
+
"id": "GDPR-T001",
|
|
11
|
+
"title": "Sensitive data exposure findings below threshold",
|
|
12
|
+
"domain": "privacy",
|
|
13
|
+
"references": ["Art. 25(1)", "Art. 32(1)(b)"],
|
|
14
|
+
"scanner_tools": ["scan_security", "scan_project"],
|
|
15
|
+
"evidence_requirements": [
|
|
16
|
+
"Information exposure scan results (secrets, PII patterns, logging of sensitive data)",
|
|
17
|
+
"No critical sensitive data exposure findings"
|
|
18
|
+
],
|
|
19
|
+
"evaluation": {
|
|
20
|
+
"evidence_checks": [
|
|
21
|
+
{ "path": "scan.by_category_severity.info-exposure.CRITICAL", "operator": "lte", "value": 0, "on_fail": "fail", "reason": "Critical sensitive data exposure findings detected", "default": 0 },
|
|
22
|
+
{ "path": "scan.by_category_severity.info-exposure.HIGH", "operator": "lte", "value": 3, "on_fail": "partial", "reason": "High-severity data exposure findings exceed threshold", "default": 0 },
|
|
23
|
+
{ "path": "scan.by_category_severity.secrets.CRITICAL", "operator": "lte", "value": 0, "on_fail": "fail", "reason": "Critical hardcoded secrets detected", "default": 0 }
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "GDPR-T002",
|
|
29
|
+
"title": "Data exfiltration findings below threshold",
|
|
30
|
+
"domain": "privacy",
|
|
31
|
+
"references": ["Art. 32(1)(b)", "Art. 32(2)"],
|
|
32
|
+
"scanner_tools": ["scan_security", "scan_project"],
|
|
33
|
+
"evidence_requirements": [
|
|
34
|
+
"Exfiltration pattern detection results",
|
|
35
|
+
"No critical or high exfiltration findings"
|
|
36
|
+
],
|
|
37
|
+
"evaluation": {
|
|
38
|
+
"evidence_checks": [
|
|
39
|
+
{ "path": "scan.by_category_severity.exfiltration.CRITICAL", "operator": "lte", "value": 0, "on_fail": "fail", "reason": "Critical data exfiltration patterns detected", "default": 0 },
|
|
40
|
+
{ "path": "scan.by_category_severity.exfiltration.HIGH", "operator": "lte", "value": 0, "on_fail": "fail", "reason": "High-severity data exfiltration patterns detected", "default": 0 }
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "GDPR-T003",
|
|
46
|
+
"title": "Encryption and secure transport controls adequate",
|
|
47
|
+
"domain": "security",
|
|
48
|
+
"references": ["Art. 32(1)(a)"],
|
|
49
|
+
"scanner_tools": ["scan_security", "scan_project"],
|
|
50
|
+
"evidence_requirements": [
|
|
51
|
+
"Cryptographic findings scan (weak algorithms, missing encryption, plaintext transport)",
|
|
52
|
+
"No critical crypto findings"
|
|
53
|
+
],
|
|
54
|
+
"evaluation": {
|
|
55
|
+
"evidence_checks": [
|
|
56
|
+
{ "path": "scan.by_category_severity.crypto.CRITICAL", "operator": "lte", "value": 0, "on_fail": "fail", "reason": "Critical cryptographic findings (weak encryption, plaintext transport)", "default": 0 },
|
|
57
|
+
{ "path": "scan.by_category_severity.crypto.HIGH", "operator": "lte", "value": 2, "on_fail": "partial", "reason": "High-severity cryptographic findings exceed threshold", "default": 0 }
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "GDPR-T004",
|
|
63
|
+
"title": "Third-party dependency inventory exists",
|
|
64
|
+
"domain": "supply-chain",
|
|
65
|
+
"references": ["Art. 28(1)", "Art. 32(1)(d)"],
|
|
66
|
+
"scanner_tools": ["sbom_generate"],
|
|
67
|
+
"evidence_requirements": [
|
|
68
|
+
"CycloneDX SBOM generated from project lockfiles",
|
|
69
|
+
"Inventory of all third-party components processing data"
|
|
70
|
+
],
|
|
71
|
+
"evaluation": {
|
|
72
|
+
"evidence_checks": [
|
|
73
|
+
{ "path": "sbom.component_count", "operator": "gte", "value": 1, "on_fail": "fail", "reason": "No third-party dependency inventory — SBOM generation found zero components" }
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "GDPR-T005",
|
|
79
|
+
"title": "No critical vulnerabilities in third-party dependencies",
|
|
80
|
+
"domain": "supply-chain",
|
|
81
|
+
"references": ["Art. 32(1)(b)", "Art. 32(1)(d)"],
|
|
82
|
+
"scanner_tools": ["sbom_generate", "sbom_scan_vulnerabilities"],
|
|
83
|
+
"evidence_requirements": [
|
|
84
|
+
"OSV vulnerability scan results for all SBOM components",
|
|
85
|
+
"Zero critical-severity known vulnerabilities in third-party code"
|
|
86
|
+
],
|
|
87
|
+
"evaluation": {
|
|
88
|
+
"evidence_checks": [
|
|
89
|
+
{ "path": "supply_chain.vulnerabilities.by_severity.critical", "operator": "lte", "value": 0, "on_fail": "fail", "reason": "Critical vulnerabilities in third-party dependencies", "default": 0 },
|
|
90
|
+
{ "path": "supply_chain.vulnerabilities.by_severity.high", "operator": "lte", "value": 5, "on_fail": "partial", "reason": "High-severity dependency vulnerabilities exceed threshold", "default": 0 }
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "GDPR-T006",
|
|
96
|
+
"title": "No hallucinated packages in dependency tree",
|
|
97
|
+
"domain": "supply-chain",
|
|
98
|
+
"references": ["Art. 32(1)(d)"],
|
|
99
|
+
"scanner_tools": ["sbom_generate", "sbom_check_hallucinations"],
|
|
100
|
+
"evidence_requirements": [
|
|
101
|
+
"Hallucination check results against official package registries",
|
|
102
|
+
"Zero phantom/hallucinated packages"
|
|
103
|
+
],
|
|
104
|
+
"evaluation": {
|
|
105
|
+
"evidence_checks": [
|
|
106
|
+
{ "path": "supply_chain.hallucinations.hallucinated_count", "operator": "eq", "value": 0, "on_fail": "fail", "reason": "Hallucinated (phantom) packages detected — supply chain integrity risk" },
|
|
107
|
+
{ "path": "supply_chain.hallucinations.legitimate_count", "operator": "gte", "value": 1, "on_fail": "not_evaluated", "not_evaluated_reason": "No packages could be verified — all ecosystems unsupported by hallucination checker", "default": 0 }
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
}
|