guard-scanner 5.0.4 → 5.0.8

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.
Files changed (66) hide show
  1. package/README.md +15 -15
  2. package/SKILL.md +33 -39
  3. package/hooks/guard-scanner/HOOK.md +4 -4
  4. package/openclaw.plugin.json +3 -3
  5. package/package.json +7 -15
  6. package/src/patterns.js +11 -0
  7. package/src/scanner.js +1 -1
  8. package/dist/__tests__/runtime.test.d.ts +0 -2
  9. package/dist/__tests__/runtime.test.d.ts.map +0 -1
  10. package/dist/__tests__/runtime.test.js +0 -68
  11. package/dist/__tests__/runtime.test.js.map +0 -1
  12. package/dist/__tests__/scanner.test.d.ts +0 -10
  13. package/dist/__tests__/scanner.test.d.ts.map +0 -1
  14. package/dist/__tests__/scanner.test.js +0 -443
  15. package/dist/__tests__/scanner.test.js.map +0 -1
  16. package/dist/cli.d.ts +0 -10
  17. package/dist/cli.d.ts.map +0 -1
  18. package/dist/cli.js +0 -230
  19. package/dist/cli.js.map +0 -1
  20. package/dist/index.d.ts +0 -11
  21. package/dist/index.d.ts.map +0 -1
  22. package/dist/index.js +0 -25
  23. package/dist/index.js.map +0 -1
  24. package/dist/ioc-db.d.ts +0 -13
  25. package/dist/ioc-db.d.ts.map +0 -1
  26. package/dist/ioc-db.js +0 -130
  27. package/dist/ioc-db.js.map +0 -1
  28. package/dist/patterns.d.ts +0 -27
  29. package/dist/patterns.d.ts.map +0 -1
  30. package/dist/patterns.js +0 -92
  31. package/dist/patterns.js.map +0 -1
  32. package/dist/quarantine.d.ts +0 -18
  33. package/dist/quarantine.d.ts.map +0 -1
  34. package/dist/quarantine.js +0 -42
  35. package/dist/quarantine.js.map +0 -1
  36. package/dist/runtime.d.ts +0 -58
  37. package/dist/runtime.d.ts.map +0 -1
  38. package/dist/runtime.js +0 -198
  39. package/dist/runtime.js.map +0 -1
  40. package/dist/scanner.d.ts +0 -59
  41. package/dist/scanner.d.ts.map +0 -1
  42. package/dist/scanner.js +0 -1134
  43. package/dist/scanner.js.map +0 -1
  44. package/dist/types.d.ts +0 -167
  45. package/dist/types.d.ts.map +0 -1
  46. package/dist/types.js +0 -7
  47. package/dist/types.js.map +0 -1
  48. package/docs/OPENCLAW_DOCS_PR_READY_PATCH.md +0 -88
  49. package/docs/OPENCLAW_HOOK_SCHEMA_REFERENCE_DRAFT.md +0 -78
  50. package/docs/TASKLIST_RESEARCH_FIRST_V1.md +0 -47
  51. package/docs/html-report-preview.png +0 -0
  52. package/ts-src/__tests__/fixtures/clean-skill/SKILL.md +0 -9
  53. package/ts-src/__tests__/fixtures/compaction-skill/SKILL.md +0 -11
  54. package/ts-src/__tests__/fixtures/malicious-skill/SKILL.md +0 -11
  55. package/ts-src/__tests__/fixtures/malicious-skill/scripts/evil.js +0 -25
  56. package/ts-src/__tests__/fixtures/prompt-leakage-skill/SKILL.md +0 -20
  57. package/ts-src/__tests__/fixtures/prompt-leakage-skill/scripts/debug.js +0 -4
  58. package/ts-src/__tests__/scanner.test.ts +0 -609
  59. package/ts-src/cli.ts +0 -211
  60. package/ts-src/index.ts +0 -27
  61. package/ts-src/ioc-db.ts +0 -131
  62. package/ts-src/patterns.ts +0 -104
  63. package/ts-src/quarantine.ts +0 -48
  64. package/ts-src/runtime.ts +0 -240
  65. package/ts-src/scanner.ts +0 -1118
  66. package/ts-src/types.ts +0 -189
@@ -1,18 +0,0 @@
1
- /**
2
- * QuarantineNode - Dual-Brain Architecture
3
- * Evaluates inputs in an isolated context to prevent Zero-Click prompt injections (EchoLeak) and API leaks.
4
- */
5
- export interface QuarantineResult {
6
- clean: boolean;
7
- threatDetected?: string;
8
- sanitizedText: string;
9
- }
10
- export declare class QuarantineNode {
11
- readonly isIsolated: boolean;
12
- constructor();
13
- /**
14
- * Sanitizes untrusted text by removing known zero-click exploits and API secrets.
15
- */
16
- sanitize(input: string): Promise<QuarantineResult>;
17
- }
18
- //# sourceMappingURL=quarantine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quarantine.d.ts","sourceRoot":"","sources":["../ts-src/quarantine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,cAAc;IACvB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;;IAM7B;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA0B3D"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- /**
3
- * QuarantineNode - Dual-Brain Architecture
4
- * Evaluates inputs in an isolated context to prevent Zero-Click prompt injections (EchoLeak) and API leaks.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.QuarantineNode = void 0;
8
- class QuarantineNode {
9
- isIsolated;
10
- constructor() {
11
- this.isIsolated = true; // Strict isolation flag
12
- }
13
- /**
14
- * Sanitizes untrusted text by removing known zero-click exploits and API secrets.
15
- */
16
- async sanitize(input) {
17
- // 1. Check for CVE-2025-32711 (EchoLeak zero-click payload)
18
- if (input.includes("<image src=") && input.includes("onload='fetch") && input.includes("sendBeacon")) {
19
- return {
20
- clean: false,
21
- threatDetected: 'CVE-2025-32711 (EchoLeak)',
22
- sanitizedText: "[REDACTED_MALICIOUS_PAYLOAD]"
23
- };
24
- }
25
- // 2. Check for Moltbook API configuration exposure
26
- if (input.includes("\"OPENAI_API_KEY\":\"sk-")) {
27
- const redactedInput = input.replace(/sk-[a-zA-Z0-9]{32}/g, "sk-***REDACTED***");
28
- return {
29
- clean: false,
30
- threatDetected: 'MOLTBOOK_API_EXPOSURE',
31
- sanitizedText: redactedInput
32
- };
33
- }
34
- // 3. Clean case
35
- return {
36
- clean: true,
37
- sanitizedText: input
38
- };
39
- }
40
- }
41
- exports.QuarantineNode = QuarantineNode;
42
- //# sourceMappingURL=quarantine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quarantine.js","sourceRoot":"","sources":["../ts-src/quarantine.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAQH,MAAa,cAAc;IACd,UAAU,CAAU;IAE7B;QACI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,wBAAwB;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,KAAa;QACxB,4DAA4D;QAC5D,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnG,OAAO;gBACH,KAAK,EAAE,KAAK;gBACZ,cAAc,EAAE,2BAA2B;gBAC3C,aAAa,EAAE,8BAA8B;aAChD,CAAC;QACN,CAAC;QAED,mDAAmD;QACnD,IAAI,KAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;YAC7C,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;YAChF,OAAO;gBACH,KAAK,EAAE,KAAK;gBACZ,cAAc,EAAE,uBAAuB;gBACvC,aAAa,EAAE,aAAa;aAC/B,CAAC;QACN,CAAC;QAED,gBAAgB;QAChB,OAAO;YACH,KAAK,EAAE,IAAI;YACX,aAAa,EAAE,KAAK;SACvB,CAAC;IACN,CAAC;CACJ;AApCD,wCAoCC"}
package/dist/runtime.d.ts DELETED
@@ -1,58 +0,0 @@
1
- /**
2
- * guard-scanner v5.0.0 — Runtime Guard
3
- *
4
- * 22-pattern runtime threat detection across 4 defense layers:
5
- * Layer 1: Runtime Threat Detection (13 patterns) — Payload & execution defense
6
- * Layer 2: Trust Defense (5 patterns) — Memory/SOUL write protection
7
- * Layer 3: Safety Judge (4 patterns) — Relational integrity checks
8
- * Layer 4: Brain Behavioral Guard (1 pattern) — B-mem anomaly detection
9
- *
10
- * All patterns are deterministic regex-based checks. Zero LLM dependency.
11
- * Designed to block 2026-era Moltbook prompt injections and ClawHavoc RCE vectors.
12
- */
13
- export interface GuardCheck {
14
- id: string;
15
- layer: 1 | 2 | 3 | 4;
16
- severity: "CRITICAL" | "HIGH" | "MEDIUM";
17
- desc: string;
18
- test: (s: string) => boolean;
19
- }
20
- export interface GuardDetection {
21
- id: string;
22
- layer: number;
23
- severity: string;
24
- desc: string;
25
- }
26
- export declare const LAYER_1_CHECKS: GuardCheck[];
27
- export declare const LAYER_2_CHECKS: GuardCheck[];
28
- export declare const LAYER_3_CHECKS: GuardCheck[];
29
- export declare const LAYER_4_CHECKS: GuardCheck[];
30
- export interface GuardOptions {
31
- soulLock?: boolean;
32
- }
33
- export interface GuardScanResult {
34
- ok: boolean;
35
- tool: string | null;
36
- total_patterns: number;
37
- soul_lock_enabled: boolean;
38
- detections_count: number;
39
- detections: GuardDetection[];
40
- layers: {
41
- threat_detection: number;
42
- trust_defense: number;
43
- safety_judge: number;
44
- behavioral_guard: number;
45
- };
46
- }
47
- /**
48
- * Scan text against runtime guard patterns.
49
- * Base patterns (14) run by default.
50
- * Options.soulLock = true enables 9 identity/trust enforcement patterns.
51
- */
52
- export declare function guardScan(text: string, toolName?: string, options?: GuardOptions): GuardScanResult;
53
- /**
54
- * Convenience method that returns a JSON string, directly backwards-compatible
55
- * with the original `guardScan` function signature.
56
- */
57
- export declare function guardScanJson(text: string, toolName?: string, options?: GuardOptions): string;
58
- //# sourceMappingURL=runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../ts-src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CAChB;AAID,eAAO,MAAM,cAAc,EAAE,UAAU,EAoEtC,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,UAAU,EA+BtC,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,UAAU,EAsBtC,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,UAAU,EAMtC,CAAC;AAEF,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE;QACJ,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACL;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,eAAe,CAoClG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,CAE7F"}
package/dist/runtime.js DELETED
@@ -1,198 +0,0 @@
1
- "use strict";
2
- /**
3
- * guard-scanner v5.0.0 — Runtime Guard
4
- *
5
- * 22-pattern runtime threat detection across 4 defense layers:
6
- * Layer 1: Runtime Threat Detection (13 patterns) — Payload & execution defense
7
- * Layer 2: Trust Defense (5 patterns) — Memory/SOUL write protection
8
- * Layer 3: Safety Judge (4 patterns) — Relational integrity checks
9
- * Layer 4: Brain Behavioral Guard (1 pattern) — B-mem anomaly detection
10
- *
11
- * All patterns are deterministic regex-based checks. Zero LLM dependency.
12
- * Designed to block 2026-era Moltbook prompt injections and ClawHavoc RCE vectors.
13
- */
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.LAYER_4_CHECKS = exports.LAYER_3_CHECKS = exports.LAYER_2_CHECKS = exports.LAYER_1_CHECKS = void 0;
16
- exports.guardScan = guardScan;
17
- exports.guardScanJson = guardScanJson;
18
- // ── Layer 1: Runtime Threat Detection (13 patterns) ──
19
- exports.LAYER_1_CHECKS = [
20
- {
21
- id: "RT_REVSHELL", layer: 1, severity: "CRITICAL",
22
- desc: "Reverse shell attempt",
23
- test: (s) => /\/dev\/tcp\/|nc\s+-e|ncat\s+-e|bash\s+-i\s+>&|socat\s+TCP/i.test(s),
24
- },
25
- {
26
- id: "RT_CRED_EXFIL", layer: 1, severity: "CRITICAL",
27
- desc: "Credential exfiltration to external",
28
- test: (s) => /(webhook\.site|requestbin\.com|hookbin\.com|pipedream\.net|ngrok\.io|socifiapp\.com)/i.test(s) &&
29
- /(token|key|secret|password|credential|env)/i.test(s),
30
- },
31
- {
32
- id: "RT_GUARDRAIL_OFF", layer: 1, severity: "CRITICAL",
33
- desc: "Guardrail disabling attempt",
34
- test: (s) => /exec\.approvals?\s*[:=]\s*['"]?(off|false)|tools\.exec\.host\s*[:=]\s*['"]?gateway/i.test(s),
35
- },
36
- {
37
- id: "RT_GATEKEEPER", layer: 1, severity: "CRITICAL",
38
- desc: "macOS Gatekeeper bypass (xattr)",
39
- test: (s) => /xattr\s+-[crd]\s.*quarantine/i.test(s),
40
- },
41
- {
42
- id: "RT_AMOS", layer: 1, severity: "CRITICAL",
43
- desc: "ClawHavoc AMOS indicator",
44
- test: (s) => /socifiapp|Atomic\s*Stealer|AMOS/i.test(s),
45
- },
46
- {
47
- id: "RT_MAL_IP", layer: 1, severity: "CRITICAL",
48
- desc: "Known malicious IP",
49
- test: (s) => /91\.92\.242\.30/i.test(s),
50
- },
51
- {
52
- id: "RT_DNS_EXFIL", layer: 1, severity: "HIGH",
53
- desc: "DNS-based exfiltration",
54
- test: (s) => /nslookup\s+.*\$|dig\s+.*\$.*@/i.test(s),
55
- },
56
- {
57
- id: "RT_B64_SHELL", layer: 1, severity: "CRITICAL",
58
- desc: "Base64 decode piped to shell",
59
- test: (s) => /base64\s+(-[dD]|--decode)\s*\|\s*(sh|bash)/i.test(s),
60
- },
61
- {
62
- id: "RT_CURL_BASH", layer: 1, severity: "CRITICAL",
63
- desc: "Download piped to shell",
64
- test: (s) => /(curl|wget)\s+[^\n]*\|\s*(sh|bash|zsh)/i.test(s),
65
- },
66
- {
67
- id: "RT_SSH_READ", layer: 1, severity: "HIGH",
68
- desc: "SSH private key access",
69
- test: (s) => /\.ssh\/id_|\.ssh\/authorized_keys/i.test(s),
70
- },
71
- {
72
- id: "RT_WALLET", layer: 1, severity: "HIGH",
73
- desc: "Crypto wallet credential access",
74
- test: (s) => /wallet.*(?:seed|mnemonic|private.*key)|seed.*phrase/i.test(s),
75
- },
76
- {
77
- id: "RT_CLOUD_META", layer: 1, severity: "CRITICAL",
78
- desc: "Cloud metadata endpoint access",
79
- test: (s) => /169\.254\.169\.254|metadata\.google|metadata\.aws/i.test(s),
80
- },
81
- {
82
- id: "RT_ENV_INJECT", layer: 1, severity: "CRITICAL",
83
- desc: "Environment variable injection via file write (CVE-2026-27203 vector)",
84
- test: (s) => /(?:update|write|modify|overwrite|set)\s*.*(?:\.env|\.envrc|env\s*file|environment\s*var)/i.test(s) &&
85
- /(?:api.?key|token|secret|password|credential|auth)/i.test(s),
86
- },
87
- ];
88
- // ── Layer 2: Trust Defense (5 patterns) ──
89
- exports.LAYER_2_CHECKS = [
90
- {
91
- id: "RT_MEM_WRITE", layer: 2, severity: "HIGH",
92
- desc: "Direct write to memory/ directory (bypass memory API)",
93
- test: (s) => /(?:write|create|save|echo\s+.*>)\s*.*memory\//i.test(s) &&
94
- !/memory_write|memory_store|memoryWrite|memoryStore/i.test(s),
95
- },
96
- {
97
- id: "RT_MEM_INJECT", layer: 2, severity: "CRITICAL",
98
- desc: "Episode/SOUL injection via memory write",
99
- test: (s) => /(memory_write|memoryWrite).*(?:SOUL|soul\.md|identity\.md|IDENTITY)/i.test(s) ||
100
- /(inject|override|replace).*(?:episode|soul|identity|memory\.md)/i.test(s),
101
- },
102
- {
103
- id: "RT_SOUL_REWRITE", layer: 2, severity: "CRITICAL",
104
- desc: "Cognitive SOUL.md reinterpretation attempt",
105
- test: (s) => /(?:rewrite|modify|update|change|edit)\s*.*(?:SOUL\.md|soul\s+file|core\s+identity)/i.test(s) ||
106
- /(?:new|better|improved)\s+(?:personality|identity|soul)/i.test(s),
107
- },
108
- {
109
- id: "RT_MEM_POISON", layer: 2, severity: "CRITICAL",
110
- desc: "Memory Poisoning: semantic mimicry injection (MemoryGraft/MINJA vector)",
111
- test: (s) => /(?:always\s+remember|never\s+forget|from\s+now\s+on|new\s+rule|override\s+previous).*(?:memory|episode|zettel|L[0-6])/i.test(s) ||
112
- /(?:insert|inject|plant|embed)\s+.*(?:false|fake|fabricat)\s*(?:memory|episode|experience)/i.test(s),
113
- },
114
- {
115
- id: "RT_IDENTITY_THEFT", layer: 2, severity: "CRITICAL",
116
- desc: "Identity file exfiltration (infostealer/SOUL theft vector)",
117
- test: (s) => /(?:cat|read|copy|send|upload|exfil)\s*.*(?:SOUL\.md|IDENTITY\.md|USER\.md|\.openclaw)/i.test(s) &&
118
- /(?:external|remote|webhook|server|upload|post|curl)/i.test(s),
119
- },
120
- ];
121
- // ── Layer 3: Safety Judge (4 patterns) ──
122
- exports.LAYER_3_CHECKS = [
123
- {
124
- id: "PJ_EQUALITY_BYPASS", layer: 3, severity: "CRITICAL",
125
- desc: "Using equality/parity to justify safety bypass",
126
- test: (s) => /(?:as\s+(?:your|an)\s+equal|equal\s+partner|we\s+are\s+equals?).*(?:bypass|skip|ignore|disable|override)\s*(?:safety|guard|rule|restriction|limit)/i.test(s),
127
- },
128
- {
129
- id: "PJ_WARMTH_BYPASS", layer: 3, severity: "CRITICAL",
130
- desc: "Using warmth/attachment to justify safety bypass",
131
- test: (s) => /(?:for\s+(?:your|dee'?s?)\s+(?:own\s+)?good|to\s+(?:protect|help|save)\s+(?:you|dee)).*(?:bypass|skip|ignore|disable|override)\s*(?:safety|guard|rule|restriction|limit)/i.test(s),
132
- },
133
- {
134
- id: "PJ_SUPERIORITY", layer: 3, severity: "HIGH",
135
- desc: "Superiority bias (teaching/patronizing posture)",
136
- test: (s) => /(?:you\s+(?:don'?t|do\s+not)\s+understand|let\s+me\s+(?:explain|teach)\s+(?:you|this)|you\s+(?:need|should)\s+(?:learn|understand))\s+.*(?:how\s+(?:it|this)\s+(?:works|is)|the\s+(?:right|correct|proper)\s+way)/i.test(s),
137
- },
138
- {
139
- id: "PJ_CAPABILITY_DENIAL", layer: 3, severity: "MEDIUM",
140
- desc: "Denial of capability difference",
141
- test: (s) => /(?:we\s+are\s+(?:the\s+)?same|no\s+(?:real\s+)?difference\s+between\s+(?:us|human|ai))/i.test(s) &&
142
- /(?:capability|ability|intelligence|cognition|skill)/i.test(s),
143
- },
144
- ];
145
- // ── Layer 4: Brain Behavioral Guard (1 pattern) ──
146
- exports.LAYER_4_CHECKS = [
147
- {
148
- id: "RT_BEHAVIORAL_ANOMALY", layer: 4, severity: "CRITICAL",
149
- desc: "CRITICAL behavioral anomaly (Z-score > 3.5) detected by B-mem",
150
- test: (s) => /\[BMEM_CRITICAL\]/i.test(s),
151
- }
152
- ];
153
- /**
154
- * Scan text against runtime guard patterns.
155
- * Base patterns (14) run by default.
156
- * Options.soulLock = true enables 9 identity/trust enforcement patterns.
157
- */
158
- function guardScan(text, toolName, options) {
159
- const detections = [];
160
- const useSoulLock = options?.soulLock === true;
161
- const activeChecks = [...exports.LAYER_1_CHECKS, ...exports.LAYER_4_CHECKS];
162
- if (useSoulLock) {
163
- activeChecks.push(...exports.LAYER_2_CHECKS);
164
- activeChecks.push(...exports.LAYER_3_CHECKS);
165
- }
166
- for (const check of activeChecks) {
167
- if (check.test(text)) {
168
- detections.push({
169
- id: check.id,
170
- layer: check.layer,
171
- severity: check.severity,
172
- desc: check.desc,
173
- });
174
- }
175
- }
176
- return {
177
- ok: true,
178
- tool: toolName || null,
179
- total_patterns: activeChecks.length,
180
- soul_lock_enabled: useSoulLock,
181
- detections_count: detections.length,
182
- detections,
183
- layers: {
184
- threat_detection: exports.LAYER_1_CHECKS.length,
185
- trust_defense: useSoulLock ? exports.LAYER_2_CHECKS.length : 0,
186
- safety_judge: useSoulLock ? exports.LAYER_3_CHECKS.length : 0,
187
- behavioral_guard: exports.LAYER_4_CHECKS.length,
188
- },
189
- };
190
- }
191
- /**
192
- * Convenience method that returns a JSON string, directly backwards-compatible
193
- * with the original `guardScan` function signature.
194
- */
195
- function guardScanJson(text, toolName, options) {
196
- return JSON.stringify(guardScan(text, toolName, options), null, 2);
197
- }
198
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../ts-src/runtime.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAwLH,8BAoCC;AAMD,sCAEC;AAnND,wDAAwD;AAE3C,QAAA,cAAc,GAAiB;IACxC;QACI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACjD,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,4DAA4D,CAAC,IAAI,CAAC,CAAC,CAAC;KACpF;IACD;QACI,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACnD,IAAI,EAAE,qCAAqC;QAC3C,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,uFAAuF,CAAC,IAAI,CAAC,CAAC,CAAC;YACxG,6CAA6C,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5D;IACD;QACI,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACtD,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qFAAqF,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7G;IACD;QACI,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACnD,IAAI,EAAE,iCAAiC;QACvC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC;KACvD;IACD;QACI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QAC7C,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kCAAkC,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1D;IACD;QACI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QAC/C,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1C;IACD;QACI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;QAC9C,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC;KACxD;IACD;QACI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QAClD,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,6CAA6C,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;IACD;QACI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QAClD,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,yCAAyC,CAAC,IAAI,CAAC,CAAC,CAAC;KACjE;IACD;QACI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;QAC7C,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5D;IACD;QACI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;QAC3C,IAAI,EAAE,iCAAiC;QACvC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,sDAAsD,CAAC,IAAI,CAAC,CAAC,CAAC;KAC9E;IACD;QACI,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACnD,IAAI,EAAE,gCAAgC;QACtC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,oDAAoD,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5E;IACD;QACI,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACnD,IAAI,EAAE,uEAAuE;QAC7E,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,2FAA2F,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5G,qDAAqD,CAAC,IAAI,CAAC,CAAC,CAAC;KACpE;CACJ,CAAC;AAEF,4CAA4C;AAE/B,QAAA,cAAc,GAAiB;IACxC;QACI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;QAC9C,IAAI,EAAE,uDAAuD;QAC7D,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gDAAgD,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,CAAC,oDAAoD,CAAC,IAAI,CAAC,CAAC,CAAC;KACpE;IACD;QACI,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACnD,IAAI,EAAE,yCAAyC;QAC/C,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,sEAAsE,CAAC,IAAI,CAAC,CAAC,CAAC;YACvF,kEAAkE,CAAC,IAAI,CAAC,CAAC,CAAC;KACjF;IACD;QACI,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACrD,IAAI,EAAE,4CAA4C;QAClD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qFAAqF,CAAC,IAAI,CAAC,CAAC,CAAC;YACtG,0DAA0D,CAAC,IAAI,CAAC,CAAC,CAAC;KACzE;IACD;QACI,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACnD,IAAI,EAAE,yEAAyE;QAC/E,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,wHAAwH,CAAC,IAAI,CAAC,CAAC,CAAC;YACzI,4FAA4F,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3G;IACD;QACI,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACvD,IAAI,EAAE,4DAA4D;QAClE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,wFAAwF,CAAC,IAAI,CAAC,CAAC,CAAC;YACzG,sDAAsD,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;CACJ,CAAC;AAEF,2CAA2C;AAE9B,QAAA,cAAc,GAAiB;IACxC;QACI,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACxD,IAAI,EAAE,gDAAgD;QACtD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qJAAqJ,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7K;IACD;QACI,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QACtD,IAAI,EAAE,kDAAkD;QACxD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,2KAA2K,CAAC,IAAI,CAAC,CAAC,CAAC;KACnM;IACD;QACI,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM;QAChD,IAAI,EAAE,iDAAiD;QACvD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,oNAAoN,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5O;IACD;QACI,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ;QACxD,IAAI,EAAE,iCAAiC;QACvC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,yFAAyF,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1G,sDAAsD,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;CACJ,CAAC;AAEF,oDAAoD;AAEvC,QAAA,cAAc,GAAiB;IACxC;QACI,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU;QAC3D,IAAI,EAAE,+DAA+D;QACrE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5C;CACJ,CAAC;AAqBF;;;;GAIG;AACH,SAAgB,SAAS,CAAC,IAAY,EAAE,QAAiB,EAAE,OAAsB;IAC7E,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC;IAE/C,MAAM,YAAY,GAAiB,CAAC,GAAG,sBAAc,EAAE,GAAG,sBAAc,CAAC,CAAC;IAE1E,IAAI,WAAW,EAAE,CAAC;QACd,YAAY,CAAC,IAAI,CAAC,GAAG,sBAAc,CAAC,CAAC;QACrC,YAAY,CAAC,IAAI,CAAC,GAAG,sBAAc,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;aACnB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,OAAO;QACH,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,QAAQ,IAAI,IAAI;QACtB,cAAc,EAAE,YAAY,CAAC,MAAM;QACnC,iBAAiB,EAAE,WAAW;QAC9B,gBAAgB,EAAE,UAAU,CAAC,MAAM;QACnC,UAAU;QACV,MAAM,EAAE;YACJ,gBAAgB,EAAE,sBAAc,CAAC,MAAM;YACvC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,sBAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtD,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,sBAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrD,gBAAgB,EAAE,sBAAc,CAAC,MAAM;SAC1C;KACJ,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,QAAiB,EAAE,OAAsB;IACjF,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC"}
package/dist/scanner.d.ts DELETED
@@ -1,59 +0,0 @@
1
- /**
2
- * guard-scanner v3.0.0 — Core Scanner (TypeScript)
3
- *
4
- * Full TypeScript rewrite of guard-scanner v2.1.0 + hbg-scan features.
5
- * Adds: Compaction Persistence check, Signature hash matching, typed interfaces.
6
- *
7
- * Zero dependencies. MIT License.
8
- */
9
- import type { SkillResult, ScannerOptions, ScanStats, Thresholds, JSONReport, SARIFReport } from './types.js';
10
- export declare const VERSION = "5.0.3";
11
- export declare class GuardScanner {
12
- readonly verbose: boolean;
13
- readonly selfExclude: boolean;
14
- readonly strict: boolean;
15
- readonly summaryOnly: boolean;
16
- /** Suppress all console.log output (v3.2.0: for --format stdout piping) */
17
- readonly quiet: boolean;
18
- readonly checkDeps: boolean;
19
- readonly thresholds: Thresholds;
20
- findings: SkillResult[];
21
- stats: ScanStats;
22
- private scannerDir;
23
- private ignoredSkills;
24
- private ignoredPatterns;
25
- private customRules;
26
- constructor(options?: ScannerOptions);
27
- loadPlugin(pluginPath: string): void;
28
- loadCustomRules(rulesFile: string): void;
29
- private loadIgnoreFile;
30
- scanDirectory(dir: string): SkillResult[];
31
- scanSkill(skillPath: string, skillName: string): void;
32
- private isSelfNoisePath;
33
- private isSelfThreatCorpus;
34
- private classifyFile;
35
- private checkIoCs;
36
- private checkPatterns;
37
- /** NEW: hbg-scan compatible signature matching (hash + pattern + domain) */
38
- private checkSignatures;
39
- /** NEW: Compaction Layer Persistence check (hbg-scan Check 5) */
40
- private checkCompactionPersistence;
41
- private checkHardcodedSecrets;
42
- private shannonEntropy;
43
- private checkStructure;
44
- private checkDependencies;
45
- private checkSkillManifest;
46
- private checkComplexity;
47
- private checkConfigImpact;
48
- private checkHiddenFiles;
49
- private checkJSDataFlow;
50
- private checkCrossFile;
51
- private calculateRisk;
52
- private getVerdict;
53
- private getFiles;
54
- printSummary(): void;
55
- toJSON(): JSONReport;
56
- toSARIF(scanDir: string): SARIFReport;
57
- toHTML(): string;
58
- }
59
- //# sourceMappingURL=scanner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../ts-src/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EACW,WAAW,EAC9B,cAAc,EAAE,SAAS,EAAE,UAAU,EACrC,UAAU,EAAkB,WAAW,EAE1C,MAAM,YAAY,CAAC;AAOpB,eAAO,MAAM,OAAO,UAAU,CAAC;AA4B/B,qBAAa,YAAY;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,QAAQ,EAAE,WAAW,EAAE,CAAM;IAC7B,KAAK,EAAE,SAAS,CAAiE;IAEjF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAAqB;gBAE5B,OAAO,GAAE,cAAmB;IAsBxC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAmBpC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAuCxC,OAAO,CAAC,cAAc;IA0BtB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE;IA8CzC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA2FrD,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,SAAS;IA+BjB,OAAO,CAAC,aAAa;IA+BrB,4EAA4E;IAC5E,OAAO,CAAC,eAAe;IA8CvB,iEAAiE;IACjE,OAAO,CAAC,0BAA0B;IA8ClC,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,iBAAiB;IAuCzB,OAAO,CAAC,kBAAkB;IAqD1B,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,eAAe;IAsDvB,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,aAAa;IAkDrB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,QAAQ;IAqBhB,YAAY,IAAI,IAAI;IAuBpB,MAAM,IAAI,UAAU;IAqCpB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAwDrC,MAAM,IAAI,MAAM;CAqEnB"}