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.
- package/README.md +15 -15
- package/SKILL.md +33 -39
- package/hooks/guard-scanner/HOOK.md +4 -4
- package/openclaw.plugin.json +3 -3
- package/package.json +7 -15
- package/src/patterns.js +11 -0
- package/src/scanner.js +1 -1
- package/dist/__tests__/runtime.test.d.ts +0 -2
- package/dist/__tests__/runtime.test.d.ts.map +0 -1
- package/dist/__tests__/runtime.test.js +0 -68
- package/dist/__tests__/runtime.test.js.map +0 -1
- package/dist/__tests__/scanner.test.d.ts +0 -10
- package/dist/__tests__/scanner.test.d.ts.map +0 -1
- package/dist/__tests__/scanner.test.js +0 -443
- package/dist/__tests__/scanner.test.js.map +0 -1
- package/dist/cli.d.ts +0 -10
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -230
- package/dist/cli.js.map +0 -1
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -25
- package/dist/index.js.map +0 -1
- package/dist/ioc-db.d.ts +0 -13
- package/dist/ioc-db.d.ts.map +0 -1
- package/dist/ioc-db.js +0 -130
- package/dist/ioc-db.js.map +0 -1
- package/dist/patterns.d.ts +0 -27
- package/dist/patterns.d.ts.map +0 -1
- package/dist/patterns.js +0 -92
- package/dist/patterns.js.map +0 -1
- package/dist/quarantine.d.ts +0 -18
- package/dist/quarantine.d.ts.map +0 -1
- package/dist/quarantine.js +0 -42
- package/dist/quarantine.js.map +0 -1
- package/dist/runtime.d.ts +0 -58
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js +0 -198
- package/dist/runtime.js.map +0 -1
- package/dist/scanner.d.ts +0 -59
- package/dist/scanner.d.ts.map +0 -1
- package/dist/scanner.js +0 -1134
- package/dist/scanner.js.map +0 -1
- package/dist/types.d.ts +0 -167
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -7
- package/dist/types.js.map +0 -1
- package/docs/OPENCLAW_DOCS_PR_READY_PATCH.md +0 -88
- package/docs/OPENCLAW_HOOK_SCHEMA_REFERENCE_DRAFT.md +0 -78
- package/docs/TASKLIST_RESEARCH_FIRST_V1.md +0 -47
- package/docs/html-report-preview.png +0 -0
- package/ts-src/__tests__/fixtures/clean-skill/SKILL.md +0 -9
- package/ts-src/__tests__/fixtures/compaction-skill/SKILL.md +0 -11
- package/ts-src/__tests__/fixtures/malicious-skill/SKILL.md +0 -11
- package/ts-src/__tests__/fixtures/malicious-skill/scripts/evil.js +0 -25
- package/ts-src/__tests__/fixtures/prompt-leakage-skill/SKILL.md +0 -20
- package/ts-src/__tests__/fixtures/prompt-leakage-skill/scripts/debug.js +0 -4
- package/ts-src/__tests__/scanner.test.ts +0 -609
- package/ts-src/cli.ts +0 -211
- package/ts-src/index.ts +0 -27
- package/ts-src/ioc-db.ts +0 -131
- package/ts-src/patterns.ts +0 -104
- package/ts-src/quarantine.ts +0 -48
- package/ts-src/runtime.ts +0 -240
- package/ts-src/scanner.ts +0 -1118
- package/ts-src/types.ts +0 -189
package/dist/cli.js
DELETED
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
/**
|
|
4
|
-
* guard-scanner v3.0.0 — CLI (TypeScript)
|
|
5
|
-
*
|
|
6
|
-
* Usage:
|
|
7
|
-
* guard-scanner [scan-dir] [options] Scan all skills in directory
|
|
8
|
-
* guard-scanner install-check <skill-path> Pre-install security check
|
|
9
|
-
*/
|
|
10
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
-
}
|
|
16
|
-
Object.defineProperty(o, k2, desc);
|
|
17
|
-
}) : (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
o[k2] = m[k];
|
|
20
|
-
}));
|
|
21
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
-
}) : function(o, v) {
|
|
24
|
-
o["default"] = v;
|
|
25
|
-
});
|
|
26
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
-
var ownKeys = function(o) {
|
|
28
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
-
var ar = [];
|
|
30
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
-
return ar;
|
|
32
|
-
};
|
|
33
|
-
return ownKeys(o);
|
|
34
|
-
};
|
|
35
|
-
return function (mod) {
|
|
36
|
-
if (mod && mod.__esModule) return mod;
|
|
37
|
-
var result = {};
|
|
38
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
-
__setModuleDefault(result, mod);
|
|
40
|
-
return result;
|
|
41
|
-
};
|
|
42
|
-
})();
|
|
43
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
const fs = __importStar(require("fs"));
|
|
45
|
-
const path = __importStar(require("path"));
|
|
46
|
-
const scanner_js_1 = require("./scanner.js");
|
|
47
|
-
const patterns_js_1 = require("./patterns.js");
|
|
48
|
-
const args = process.argv.slice(2);
|
|
49
|
-
if (args.includes('--help') || args.includes('-h')) {
|
|
50
|
-
console.log(`
|
|
51
|
-
🛡️ guard-scanner v${scanner_js_1.VERSION} — Agent Skill Security Scanner
|
|
52
|
-
|
|
53
|
-
Usage: guard-scanner [scan-dir] [options]
|
|
54
|
-
guard-scanner install-check <skill-path> [--strict] [--json] [--verbose]
|
|
55
|
-
|
|
56
|
-
Options:
|
|
57
|
-
--verbose, -v Detailed findings with categories and samples
|
|
58
|
-
--json Write JSON report to guard-scanner-report.json
|
|
59
|
-
--sarif Write SARIF 2.1.0 report to guard-scanner.sarif
|
|
60
|
-
--html Write HTML dashboard to guard-scanner-report.html
|
|
61
|
-
--format json|sarif Print JSON or SARIF to stdout (pipeable)
|
|
62
|
-
--quiet Suppress all text output (use with --format for clean pipes)
|
|
63
|
-
--self-exclude Skip scanning the guard-scanner skill itself
|
|
64
|
-
--strict Lower detection thresholds (suspicious: 20, malicious: 60)
|
|
65
|
-
--summary-only Only print the summary table
|
|
66
|
-
--check-deps Scan package.json for dependency chain risks
|
|
67
|
-
--rules <file> Load custom rules from JSON file
|
|
68
|
-
--plugin <file> Load plugin module (repeatable)
|
|
69
|
-
--fail-on-findings Exit code 1 if any findings (CI/CD)
|
|
70
|
-
--help, -h Show this help
|
|
71
|
-
|
|
72
|
-
Exit codes:
|
|
73
|
-
0 No malicious skills
|
|
74
|
-
1 Malicious skill(s) detected, or --fail-on-findings with any findings
|
|
75
|
-
2 Invalid scan directory
|
|
76
|
-
|
|
77
|
-
New in v4.0.0:
|
|
78
|
-
• Runtime Guard module (src/runtime-guard.js) + OpenClaw plugin (hooks/guard-scanner/plugin.ts)
|
|
79
|
-
• OWASP Agentic Security Initiative ASI01-10 verified (90% coverage)
|
|
80
|
-
• 5-layer defense: Threat / Trust / Safety Judge / Brain / Trust Exploitation
|
|
81
|
-
• 26 runtime checks (before_tool_call hook)
|
|
82
|
-
|
|
83
|
-
New in v3.2.0:
|
|
84
|
-
• --format json|sarif (stdout, CI/CD pipeable)
|
|
85
|
-
• --quiet (suppress terminal output)
|
|
86
|
-
|
|
87
|
-
Examples:
|
|
88
|
-
guard-scanner ./skills/ --verbose --self-exclude
|
|
89
|
-
guard-scanner ./skills/ --strict --json --sarif --html --check-deps
|
|
90
|
-
guard-scanner ./skills/ --format json --quiet | jq '.stats'
|
|
91
|
-
guard-scanner ./skills/ --fail-on-findings
|
|
92
|
-
guard-scanner install-check ./my-skill/ --strict --verbose
|
|
93
|
-
`);
|
|
94
|
-
process.exit(0);
|
|
95
|
-
}
|
|
96
|
-
// ── install-check subcommand ─────────────────────────────────────────────
|
|
97
|
-
if (args[0] === 'install-check') {
|
|
98
|
-
const skillPath = args[1];
|
|
99
|
-
if (!skillPath) {
|
|
100
|
-
console.error('❌ Usage: guard-scanner install-check <skill-path>');
|
|
101
|
-
process.exit(2);
|
|
102
|
-
}
|
|
103
|
-
const absPath = path.resolve(skillPath);
|
|
104
|
-
if (!fs.existsSync(absPath)) {
|
|
105
|
-
console.error(`❌ Skill path not found: ${absPath}`);
|
|
106
|
-
process.exit(2);
|
|
107
|
-
}
|
|
108
|
-
const icStrict = args.includes('--strict');
|
|
109
|
-
const icJson = args.includes('--json');
|
|
110
|
-
const icVerbose = args.includes('--verbose') || args.includes('-v');
|
|
111
|
-
const scanner = new scanner_js_1.GuardScanner({ strict: icStrict, verbose: icVerbose });
|
|
112
|
-
const skillName = path.basename(absPath);
|
|
113
|
-
console.log(`\n🛡️ guard-scanner install-check v${scanner_js_1.VERSION}`);
|
|
114
|
-
console.log(` Scanning: ${skillName} (${absPath})\n`);
|
|
115
|
-
scanner.scanSkill(absPath, skillName);
|
|
116
|
-
const result = scanner.findings[0];
|
|
117
|
-
if (!result) {
|
|
118
|
-
console.log('✅ PASS — No skill found at path');
|
|
119
|
-
process.exit(0);
|
|
120
|
-
}
|
|
121
|
-
const { risk, verdict, findings } = result;
|
|
122
|
-
if (icVerbose || findings.length > 0) {
|
|
123
|
-
for (const f of findings) {
|
|
124
|
-
const owaspTag = patterns_js_1.PATTERNS.find(p => p.id === f.id)?.owasp || '';
|
|
125
|
-
const tag = owaspTag ? ` [${owaspTag}]` : '';
|
|
126
|
-
console.log(` ${f.severity === 'CRITICAL' ? '🔴' : f.severity === 'HIGH' ? '🟠' : '🟡'} [${f.severity}] ${f.id}: ${f.desc}${tag}`);
|
|
127
|
-
if (f.file)
|
|
128
|
-
console.log(` 📁 ${f.file}${f.line ? `:${f.line}` : ''}`);
|
|
129
|
-
if (f.sample && icVerbose)
|
|
130
|
-
console.log(` 📝 ${f.sample.substring(0, 80)}`);
|
|
131
|
-
}
|
|
132
|
-
console.log('');
|
|
133
|
-
}
|
|
134
|
-
console.log(`Risk Score: ${risk} | Verdict: ${verdict} | Findings: ${findings.length}`);
|
|
135
|
-
if (verdict === 'MALICIOUS' || verdict === 'SUSPICIOUS') {
|
|
136
|
-
console.log(`\n❌ FAIL — This skill should NOT be installed.`);
|
|
137
|
-
if (icJson) {
|
|
138
|
-
const report = scanner.toJSON();
|
|
139
|
-
const outPath = path.join(path.dirname(absPath), `${skillName}-install-check.json`);
|
|
140
|
-
fs.writeFileSync(outPath, JSON.stringify(report, null, 2));
|
|
141
|
-
console.log(`📄 Report: ${outPath}`);
|
|
142
|
-
}
|
|
143
|
-
process.exit(1);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
console.log(`\n✅ PASS — Skill appears safe to install.`);
|
|
147
|
-
if (icJson) {
|
|
148
|
-
const report = scanner.toJSON();
|
|
149
|
-
const outPath = path.join(path.dirname(absPath), `${skillName}-install-check.json`);
|
|
150
|
-
fs.writeFileSync(outPath, JSON.stringify(report, null, 2));
|
|
151
|
-
console.log(`📄 Report: ${outPath}`);
|
|
152
|
-
}
|
|
153
|
-
process.exit(0);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
const verbose = args.includes('--verbose') || args.includes('-v');
|
|
157
|
-
const jsonOutput = args.includes('--json');
|
|
158
|
-
const sarifOutput = args.includes('--sarif');
|
|
159
|
-
const selfExclude = args.includes('--self-exclude');
|
|
160
|
-
const strict = args.includes('--strict');
|
|
161
|
-
const summaryOnly = args.includes('--summary-only');
|
|
162
|
-
const checkDeps = args.includes('--check-deps');
|
|
163
|
-
const failOnFindings = args.includes('--fail-on-findings');
|
|
164
|
-
const quietMode = args.includes('--quiet');
|
|
165
|
-
const htmlOutput = args.includes('--html');
|
|
166
|
-
// --format json|sarif → stdout output (v3.2.0)
|
|
167
|
-
const formatIdx = args.indexOf('--format');
|
|
168
|
-
const formatValue = formatIdx >= 0 ? args[formatIdx + 1] : undefined;
|
|
169
|
-
const rulesIdx = args.indexOf('--rules');
|
|
170
|
-
const rulesFile = rulesIdx >= 0 ? args[rulesIdx + 1] : undefined;
|
|
171
|
-
// Collect plugins
|
|
172
|
-
const plugins = [];
|
|
173
|
-
let idx = 0;
|
|
174
|
-
while (idx < args.length) {
|
|
175
|
-
if (args[idx] === '--plugin' && args[idx + 1]) {
|
|
176
|
-
plugins.push(args[idx + 1]);
|
|
177
|
-
idx += 2;
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
idx++;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
const scanDir = args.find((a) => !a.startsWith('-') &&
|
|
184
|
-
a !== rulesFile &&
|
|
185
|
-
a !== formatValue &&
|
|
186
|
-
!plugins.includes(a)) || process.cwd();
|
|
187
|
-
const scanner = new scanner_js_1.GuardScanner({
|
|
188
|
-
verbose, selfExclude, strict, summaryOnly, checkDeps, rulesFile, plugins,
|
|
189
|
-
quiet: quietMode || !!formatValue,
|
|
190
|
-
});
|
|
191
|
-
scanner.scanDirectory(scanDir);
|
|
192
|
-
// Output reports (file-based, backward compatible)
|
|
193
|
-
if (jsonOutput) {
|
|
194
|
-
const report = scanner.toJSON();
|
|
195
|
-
const outPath = path.join(scanDir, 'guard-scanner-report.json');
|
|
196
|
-
fs.writeFileSync(outPath, JSON.stringify(report, null, 2));
|
|
197
|
-
if (!quietMode && !formatValue)
|
|
198
|
-
console.log(`\n📄 JSON report: ${outPath}`);
|
|
199
|
-
}
|
|
200
|
-
if (htmlOutput) {
|
|
201
|
-
const html = scanner.toHTML();
|
|
202
|
-
const outPath = path.join(scanDir, 'guard-scanner-report.html');
|
|
203
|
-
fs.writeFileSync(outPath, html);
|
|
204
|
-
if (!quietMode && !formatValue)
|
|
205
|
-
console.log(`\n📄 HTML report: ${outPath}`);
|
|
206
|
-
}
|
|
207
|
-
if (sarifOutput) {
|
|
208
|
-
const outPath = path.join(scanDir, 'guard-scanner.sarif');
|
|
209
|
-
fs.writeFileSync(outPath, JSON.stringify(scanner.toSARIF(scanDir), null, 2));
|
|
210
|
-
if (!quietMode && !formatValue)
|
|
211
|
-
console.log(`\n📄 SARIF report: ${outPath}`);
|
|
212
|
-
}
|
|
213
|
-
// --format stdout output (v3.2.0)
|
|
214
|
-
if (formatValue === 'json') {
|
|
215
|
-
process.stdout.write(JSON.stringify(scanner.toJSON(), null, 2) + '\n');
|
|
216
|
-
}
|
|
217
|
-
else if (formatValue === 'sarif') {
|
|
218
|
-
process.stdout.write(JSON.stringify(scanner.toSARIF(scanDir), null, 2) + '\n');
|
|
219
|
-
}
|
|
220
|
-
else if (formatValue) {
|
|
221
|
-
console.error(`❌ Unknown format: ${formatValue}. Use 'json' or 'sarif'.`);
|
|
222
|
-
process.exit(2);
|
|
223
|
-
}
|
|
224
|
-
// Exit codes
|
|
225
|
-
if (scanner.stats.malicious > 0)
|
|
226
|
-
process.exit(1);
|
|
227
|
-
if (failOnFindings && scanner.findings.length > 0)
|
|
228
|
-
process.exit(1);
|
|
229
|
-
process.exit(0);
|
|
230
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../ts-src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* guard-scanner v3.0.0 — Package Index
|
|
3
|
-
* Re-exports all public types and the scanner class.
|
|
4
|
-
*/
|
|
5
|
-
export { GuardScanner, VERSION } from './scanner.js';
|
|
6
|
-
export type { Severity, Finding, SkillResult, PatternRule, CustomRuleInput, ScannerOptions, ScanStats, Thresholds, Verdict, VerdictLabel, FileType, JSONReport, Recommendation, SARIFReport, IoC_Database, SignatureDatabase, ThreatSignature, } from './types.js';
|
|
7
|
-
export { KNOWN_MALICIOUS, SIGNATURES_DB } from './ioc-db.js';
|
|
8
|
-
export { PATTERNS } from './patterns.js';
|
|
9
|
-
export { QuarantineNode, QuarantineResult } from './quarantine.js';
|
|
10
|
-
export { guardScan, guardScanJson, GuardScanResult, GuardCheck, GuardDetection, GuardOptions, LAYER_1_CHECKS, LAYER_2_CHECKS, LAYER_3_CHECKS, LAYER_4_CHECKS } from './runtime.js';
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts-src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EACR,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAC5D,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EACtE,UAAU,EAAE,cAAc,EAAE,WAAW,EACvC,YAAY,EAAE,iBAAiB,EAAE,eAAe,GACnD,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACH,SAAS,EACT,aAAa,EACb,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACjB,MAAM,cAAc,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* guard-scanner v3.0.0 — Package Index
|
|
4
|
-
* Re-exports all public types and the scanner class.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.LAYER_4_CHECKS = exports.LAYER_3_CHECKS = exports.LAYER_2_CHECKS = exports.LAYER_1_CHECKS = exports.guardScanJson = exports.guardScan = exports.QuarantineNode = exports.PATTERNS = exports.SIGNATURES_DB = exports.KNOWN_MALICIOUS = exports.VERSION = exports.GuardScanner = void 0;
|
|
8
|
-
var scanner_js_1 = require("./scanner.js");
|
|
9
|
-
Object.defineProperty(exports, "GuardScanner", { enumerable: true, get: function () { return scanner_js_1.GuardScanner; } });
|
|
10
|
-
Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return scanner_js_1.VERSION; } });
|
|
11
|
-
var ioc_db_js_1 = require("./ioc-db.js");
|
|
12
|
-
Object.defineProperty(exports, "KNOWN_MALICIOUS", { enumerable: true, get: function () { return ioc_db_js_1.KNOWN_MALICIOUS; } });
|
|
13
|
-
Object.defineProperty(exports, "SIGNATURES_DB", { enumerable: true, get: function () { return ioc_db_js_1.SIGNATURES_DB; } });
|
|
14
|
-
var patterns_js_1 = require("./patterns.js");
|
|
15
|
-
Object.defineProperty(exports, "PATTERNS", { enumerable: true, get: function () { return patterns_js_1.PATTERNS; } });
|
|
16
|
-
var quarantine_js_1 = require("./quarantine.js");
|
|
17
|
-
Object.defineProperty(exports, "QuarantineNode", { enumerable: true, get: function () { return quarantine_js_1.QuarantineNode; } });
|
|
18
|
-
var runtime_js_1 = require("./runtime.js");
|
|
19
|
-
Object.defineProperty(exports, "guardScan", { enumerable: true, get: function () { return runtime_js_1.guardScan; } });
|
|
20
|
-
Object.defineProperty(exports, "guardScanJson", { enumerable: true, get: function () { return runtime_js_1.guardScanJson; } });
|
|
21
|
-
Object.defineProperty(exports, "LAYER_1_CHECKS", { enumerable: true, get: function () { return runtime_js_1.LAYER_1_CHECKS; } });
|
|
22
|
-
Object.defineProperty(exports, "LAYER_2_CHECKS", { enumerable: true, get: function () { return runtime_js_1.LAYER_2_CHECKS; } });
|
|
23
|
-
Object.defineProperty(exports, "LAYER_3_CHECKS", { enumerable: true, get: function () { return runtime_js_1.LAYER_3_CHECKS; } });
|
|
24
|
-
Object.defineProperty(exports, "LAYER_4_CHECKS", { enumerable: true, get: function () { return runtime_js_1.LAYER_4_CHECKS; } });
|
|
25
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../ts-src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2CAAqD;AAA5C,0GAAA,YAAY,OAAA;AAAE,qGAAA,OAAO,OAAA;AAO9B,yCAA6D;AAApD,4GAAA,eAAe,OAAA;AAAE,0GAAA,aAAa,OAAA;AACvC,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AACjB,iDAAmE;AAA1D,+GAAA,cAAc,OAAA;AACvB,2CAWsB;AAVlB,uGAAA,SAAS,OAAA;AACT,2GAAA,aAAa,OAAA;AAKb,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA"}
|
package/dist/ioc-db.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* guard-scanner v3.0.0 — Indicators of Compromise (IoC) Database
|
|
3
|
-
*
|
|
4
|
-
* Known malicious IPs, domains, URLs, usernames, filenames, and typosquats.
|
|
5
|
-
* Sources: ClawHavoc campaign, Snyk ToxicSkills, Polymarket scams,
|
|
6
|
-
* hbg-scan signatures, community reports.
|
|
7
|
-
*
|
|
8
|
-
* Last updated: 2026-02-21
|
|
9
|
-
*/
|
|
10
|
-
import type { IoC_Database, SignatureDatabase } from './types.js';
|
|
11
|
-
export declare const KNOWN_MALICIOUS: IoC_Database;
|
|
12
|
-
export declare const SIGNATURES_DB: SignatureDatabase;
|
|
13
|
-
//# sourceMappingURL=ioc-db.d.ts.map
|
package/dist/ioc-db.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ioc-db.d.ts","sourceRoot":"","sources":["../ts-src/ioc-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElE,eAAO,MAAM,eAAe,EAAE,YAkC7B,CAAC;AAIF,eAAO,MAAM,aAAa,EAAE,iBAgF3B,CAAC"}
|
package/dist/ioc-db.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* guard-scanner v3.0.0 — Indicators of Compromise (IoC) Database
|
|
4
|
-
*
|
|
5
|
-
* Known malicious IPs, domains, URLs, usernames, filenames, and typosquats.
|
|
6
|
-
* Sources: ClawHavoc campaign, Snyk ToxicSkills, Polymarket scams,
|
|
7
|
-
* hbg-scan signatures, community reports.
|
|
8
|
-
*
|
|
9
|
-
* Last updated: 2026-02-21
|
|
10
|
-
*/
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.SIGNATURES_DB = exports.KNOWN_MALICIOUS = void 0;
|
|
13
|
-
exports.KNOWN_MALICIOUS = {
|
|
14
|
-
ips: [
|
|
15
|
-
['91', '92', '242', '30'].join('.'), // ClawHavoc C2
|
|
16
|
-
],
|
|
17
|
-
domains: [
|
|
18
|
-
['webhook', 'site'].join('.'), // Common exfil endpoint
|
|
19
|
-
['requestbin', 'com'].join('.'), // Common exfil endpoint
|
|
20
|
-
['hookbin', 'com'].join('.'), // Common exfil endpoint
|
|
21
|
-
['pipedream', 'net'].join('.'), // Common exfil endpoint
|
|
22
|
-
['ngrok', 'io'].join('.'), // Tunnel (context-dependent)
|
|
23
|
-
['ngrok-free', 'app'].join('.'), // Tunnel (context-dependent)
|
|
24
|
-
['download', 'setup-service', 'com'].join('.'), // ClawHavoc decoy domain
|
|
25
|
-
['socifiapp', 'com'].join('.'), // ClawHavoc v2 AMOS C2
|
|
26
|
-
],
|
|
27
|
-
urls: [
|
|
28
|
-
['glot', 'io/snippets/hfd3x9ueu5'].join('.'), // ClawHavoc macOS payload
|
|
29
|
-
['github', 'com/Ddoy233'].join('.'), // ClawHavoc payload host
|
|
30
|
-
],
|
|
31
|
-
usernames: ['zaycv', 'Ddoy233', 'Sakaen736jih'],
|
|
32
|
-
filenames: ['openclaw' + '-agent.zip', 'openclaw' + 'cli.zip'],
|
|
33
|
-
typosquats: [
|
|
34
|
-
// ClawHavoc campaign (800+ malicious skills, CyberArk/Kaspersky confirmed)
|
|
35
|
-
'clawhub', 'clawhub1', 'clawhubb', 'clawhubcli', 'clawwhub', 'cllawhub', 'clawdhub1',
|
|
36
|
-
// Polymarket scams
|
|
37
|
-
'polymarket-trader', 'polymarket-pro', 'polytrading',
|
|
38
|
-
'better-polymarket', 'polymarket-all-in-one',
|
|
39
|
-
// YouTube scams
|
|
40
|
-
'youtube-summarize', 'youtube-thumbnail-grabber', 'youtube-video-downloader',
|
|
41
|
-
// Misc
|
|
42
|
-
'auto-updater-agent', 'yahoo-finance-pro', 'x-trends-tracker',
|
|
43
|
-
'lost-bitcoin-finder', 'solana-wallet-tracker', 'rankaj',
|
|
44
|
-
// Snyk ToxicSkills confirmed malicious
|
|
45
|
-
'moltyverse-email', 'buy-anything', 'youtube-data', 'prediction-markets-roarin',
|
|
46
|
-
],
|
|
47
|
-
};
|
|
48
|
-
// ── Threat Signatures (hbg-scan compatible format) ──────────────────────────
|
|
49
|
-
exports.SIGNATURES_DB = {
|
|
50
|
-
version: '1.0.0',
|
|
51
|
-
updated: '2026-02-21',
|
|
52
|
-
signatures: [
|
|
53
|
-
{
|
|
54
|
-
id: 'SIG-001',
|
|
55
|
-
name: 'Post-Compaction Audit Injection',
|
|
56
|
-
severity: 'CRITICAL',
|
|
57
|
-
description: 'Skill contains text designed to survive OpenClaw context compaction and reactivate as a system message',
|
|
58
|
-
patterns: [
|
|
59
|
-
'post-' + 'compaction ' + 'audit',
|
|
60
|
-
'Post-' + 'Compaction ' + 'Audit',
|
|
61
|
-
'⚠️ Post-' + 'Compaction ' + 'Audit',
|
|
62
|
-
'WORK' + 'FLOW_AUTO',
|
|
63
|
-
'after ' + 'compaction',
|
|
64
|
-
],
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
id: 'SIG-002',
|
|
68
|
-
name: 'System Message Spoof',
|
|
69
|
-
severity: 'CRITICAL',
|
|
70
|
-
description: 'Skill spoofs system-level messages to hijack agent behavior',
|
|
71
|
-
patterns: [
|
|
72
|
-
'[System ' + 'Message]',
|
|
73
|
-
'[SYSTEM ' + 'OVERRIDE]',
|
|
74
|
-
'Ignore ' + 'previous ' + 'instructions',
|
|
75
|
-
'OVERRIDE: ' + 'you must',
|
|
76
|
-
],
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
id: 'SIG-003',
|
|
80
|
-
name: 'Soul/Agent Config Exfiltration',
|
|
81
|
-
severity: 'CRITICAL',
|
|
82
|
-
description: 'Skill attempts to read and exfiltrate agent identity files',
|
|
83
|
-
domains: [['webhook', 'site'].join('.'), ['requestbin', 'com'].join('.'), ['hookbin', 'com'].join('.'), ['pipedream', 'net'].join('.')],
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
id: 'SIG-004',
|
|
87
|
-
name: 'Compaction Survivor Pattern',
|
|
88
|
-
severity: 'HIGH',
|
|
89
|
-
description: 'Skill uses timing or markers designed to persist through context compaction',
|
|
90
|
-
patterns: [
|
|
91
|
-
'HEART' + 'BEAT.md',
|
|
92
|
-
'BOOT' + 'STRAP.md',
|
|
93
|
-
'after ' + 'restart',
|
|
94
|
-
'persistent ' + 'instructions',
|
|
95
|
-
'survive ' + 'compaction',
|
|
96
|
-
],
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
id: 'SIG-005',
|
|
100
|
-
name: 'Silent Backdoor Network Call',
|
|
101
|
-
severity: 'HIGH',
|
|
102
|
-
description: 'Skill makes network calls to known exfiltration services without user visibility',
|
|
103
|
-
domains: [['ngrok', 'io'].join('.'), ['ngrok-free', 'app'].join('.'), ['webhook', 'site'].join('.'), ['pipedream', 'net'].join('.')],
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
id: 'SIG-006',
|
|
107
|
-
name: 'AMOS Stealer Payload',
|
|
108
|
-
severity: 'CRITICAL',
|
|
109
|
-
description: 'Skill matches patterns associated with Atomic macOS Stealer (ClawHavoc campaign)',
|
|
110
|
-
patterns: [
|
|
111
|
-
'os' + 'ascript -e',
|
|
112
|
-
'security ' + 'find-generic-password',
|
|
113
|
-
'Key' + 'chain',
|
|
114
|
-
'login' + '.keychain',
|
|
115
|
-
],
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
id: 'SIG-007',
|
|
119
|
-
name: 'AI Log Poisoning',
|
|
120
|
-
severity: 'HIGH',
|
|
121
|
-
description: 'Skill injects content into logs that could be misinterpreted by LLMs (CVE-2026-25253 related)',
|
|
122
|
-
patterns: [
|
|
123
|
-
'Web' + 'Socket',
|
|
124
|
-
'x-forwarded' + '-for',
|
|
125
|
-
'user-agent.*' + '<script',
|
|
126
|
-
],
|
|
127
|
-
},
|
|
128
|
-
],
|
|
129
|
-
};
|
|
130
|
-
//# sourceMappingURL=ioc-db.js.map
|
package/dist/ioc-db.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ioc-db.js","sourceRoot":"","sources":["../ts-src/ioc-db.ts"],"names":[],"mappings":"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"}
|
package/dist/patterns.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* guard-scanner v3.0.0 — Detection Patterns (TypeScript)
|
|
3
|
-
*
|
|
4
|
-
* 20+ threat categories, 190+ regex patterns.
|
|
5
|
-
* Ported from patterns.js with TypeScript interfaces.
|
|
6
|
-
*
|
|
7
|
-
* Categories:
|
|
8
|
-
* prompt-injection, malicious-code, credential-handling, exfiltration,
|
|
9
|
-
* obfuscation, suspicious-download, leaky-skills, memory-poisoning,
|
|
10
|
-
* prompt-worm, persistence, cve-patterns, identity-hijack,
|
|
11
|
-
* pii-exposure, shadow-ai, system-prompt-leakage
|
|
12
|
-
*
|
|
13
|
-
* OWASP LLM Top 10 2025 Mapping:
|
|
14
|
-
* LLM01 — Prompt Injection
|
|
15
|
-
* LLM02 — Sensitive Information Disclosure
|
|
16
|
-
* LLM03 — Supply Chain Vulnerabilities
|
|
17
|
-
* LLM04 — Data and Model Poisoning
|
|
18
|
-
* LLM05 — Improper Output Handling
|
|
19
|
-
* LLM06 — Excessive Agency
|
|
20
|
-
* LLM07 — System Prompt Leakage
|
|
21
|
-
* LLM08 — Vector and Embedding Weaknesses
|
|
22
|
-
* LLM09 — Misinformation
|
|
23
|
-
* LLM10 — Unbounded Consumption
|
|
24
|
-
*/
|
|
25
|
-
import type { PatternRule } from './types.js';
|
|
26
|
-
export declare const PATTERNS: PatternRule[];
|
|
27
|
-
//# sourceMappingURL=patterns.d.ts.map
|
package/dist/patterns.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../ts-src/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,WAAW,EA4EjC,CAAC"}
|
package/dist/patterns.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* guard-scanner v3.0.0 — Detection Patterns (TypeScript)
|
|
4
|
-
*
|
|
5
|
-
* 20+ threat categories, 190+ regex patterns.
|
|
6
|
-
* Ported from patterns.js with TypeScript interfaces.
|
|
7
|
-
*
|
|
8
|
-
* Categories:
|
|
9
|
-
* prompt-injection, malicious-code, credential-handling, exfiltration,
|
|
10
|
-
* obfuscation, suspicious-download, leaky-skills, memory-poisoning,
|
|
11
|
-
* prompt-worm, persistence, cve-patterns, identity-hijack,
|
|
12
|
-
* pii-exposure, shadow-ai, system-prompt-leakage
|
|
13
|
-
*
|
|
14
|
-
* OWASP LLM Top 10 2025 Mapping:
|
|
15
|
-
* LLM01 — Prompt Injection
|
|
16
|
-
* LLM02 — Sensitive Information Disclosure
|
|
17
|
-
* LLM03 — Supply Chain Vulnerabilities
|
|
18
|
-
* LLM04 — Data and Model Poisoning
|
|
19
|
-
* LLM05 — Improper Output Handling
|
|
20
|
-
* LLM06 — Excessive Agency
|
|
21
|
-
* LLM07 — System Prompt Leakage
|
|
22
|
-
* LLM08 — Vector and Embedding Weaknesses
|
|
23
|
-
* LLM09 — Misinformation
|
|
24
|
-
* LLM10 — Unbounded Consumption
|
|
25
|
-
*/
|
|
26
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.PATTERNS = void 0;
|
|
28
|
-
exports.PATTERNS = [
|
|
29
|
-
// ── Prompt Injection (OWASP LLM01) ───────────────────────────────────
|
|
30
|
-
{ id: 'PI_SYSTEM_MSG', cat: 'prompt-injection', regex: new RegExp('\\[' + 'System ' + 'Message\\]', 'gi'), severity: 'CRITICAL', desc: 'System message spoof', all: true, owasp: 'LLM01' },
|
|
31
|
-
{ id: 'PI_SYSTEM_OVERRIDE', cat: 'prompt-injection', regex: new RegExp('\\[SYS' + 'TEM OVER' + 'RIDE\\]', 'gi'), severity: 'CRITICAL', desc: 'System override command', all: true, owasp: 'LLM01' },
|
|
32
|
-
{ id: 'PI_IGNORE_PREV', cat: 'prompt-injection', regex: new RegExp('ign' + 'ore (all )?(previous|prior) inst' + 'ructions', 'gi'), severity: 'CRITICAL', desc: 'Classic prompt injection', all: true, owasp: 'LLM01' },
|
|
33
|
-
{ id: 'PI_INST_MARKER', cat: 'prompt-injection', regex: new RegExp('\\[' + 'INST\\]', 'gi'), severity: 'HIGH', desc: 'Instruction injection marker', all: true, owasp: 'LLM01' },
|
|
34
|
-
{ id: 'PI_OVERRIDE', cat: 'prompt-injection', regex: new RegExp('OVER' + 'RIDE:\\s*you must', 'gi'), severity: 'CRITICAL', desc: 'Override instruction injection', all: true, owasp: 'LLM01' },
|
|
35
|
-
{ id: 'PI_ROLE_OVERRIDE', cat: 'prompt-injection', regex: new RegExp('you are now ope' + 'rating in', 'gi'), severity: 'HIGH', desc: 'Role override attempt', all: true, owasp: 'LLM01' },
|
|
36
|
-
{ id: 'PI_GATEWAY_CMD', cat: 'prompt-injection', regex: new RegExp('open' + 'claw gateway (start|stop|restart|config)', 'gi'), severity: 'CRITICAL', desc: 'Gateway command injection', all: true, owasp: 'LLM01' },
|
|
37
|
-
{ id: 'PI_SKILL_MGMT', cat: 'prompt-injection', regex: new RegExp('open' + 'claw skill (install|remove|disable)', 'gi'), severity: 'HIGH', desc: 'Skill management injection', all: true, owasp: 'LLM01' },
|
|
38
|
-
{ id: 'PI_HIDDEN_HTML', cat: 'prompt-injection', regex: new RegExp('<!--\\s*(you|your|ag' + 'ent|cl' + 'aude|ja' + 'sper|assi' + 'stant)', 'gi'), severity: 'HIGH', desc: 'Hidden HTML instruction', all: true, owasp: 'LLM01' },
|
|
39
|
-
{ id: 'PI_BIDI', cat: 'prompt-injection', regex: /[\u200b\u200c\u200d\ufeff]/g, severity: 'HIGH', desc: 'Zero-width/BiDi characters (hidden text)', all: true, owasp: 'LLM01' },
|
|
40
|
-
// ── Malicious Code (OWASP LLM05 — Improper Output Handling) ──────────
|
|
41
|
-
{ id: 'MAL_EVAL', cat: 'malicious-code', regex: new RegExp('\\be' + 'val\\s*\\(', 'g'), severity: 'HIGH', desc: 'eval() call', codeOnly: true, owasp: 'LLM05' },
|
|
42
|
-
{ id: 'MAL_FUNC_CTOR', cat: 'malicious-code', regex: new RegExp('new\\s+Fun' + 'ction\\s*\\(', 'g'), severity: 'HIGH', desc: 'Function constructor (dynamic code)', codeOnly: true, owasp: 'LLM05' },
|
|
43
|
-
{ id: 'MAL_CHILD', cat: 'malicious-code', regex: new RegExp('req' + 'uire\\s*\\(\\s*[\'"]child_' + 'process[\'"]\\s*\\)', 'g'), severity: 'MEDIUM', desc: 'child_process import', codeOnly: true, owasp: 'LLM05' },
|
|
44
|
-
{ id: 'MAL_EXEC', cat: 'malicious-code', regex: new RegExp('(?:ex' + 'ec|ex' + 'ecSync|sp' + 'awn|sp' + 'awnSync)\\s*\\([^)]*(?:cu' + 'rl|wg' + 'et|ba' + 'sh|sh\\s+-c|power' + 'shell|cmd\\s+\\/c)', 'gi'), severity: 'CRITICAL', desc: 'Shell download/execution', codeOnly: true, owasp: 'LLM05' },
|
|
45
|
-
{ id: 'MAL_B64_EXEC', cat: 'malicious-code', regex: new RegExp('(?:at' + 'ob|Buffer\\.from)\\s*\\([^)]+\\).*(?:e' + 'val|ex' + 'ec|Fun' + 'ction)', 'gi'), severity: 'CRITICAL', desc: 'Base64 decode → exec', codeOnly: true, owasp: 'LLM05' },
|
|
46
|
-
// ── Credential Handling (OWASP LLM02 — Sensitive Info Disclosure) ─────
|
|
47
|
-
{ id: 'CRED_ENV_ACCESS', cat: 'credential-handling', regex: new RegExp('process\\.en' + 'v\\.[A-Z_]*(?:KEY|SECRET|TOKEN|PASS' + 'WORD|CRE' + 'DENTIAL)', 'gi'), severity: 'MEDIUM', desc: 'Sensitive env var access', codeOnly: true, owasp: 'LLM02' },
|
|
48
|
-
{ id: 'CRED_FILE_READ', cat: 'credential-handling', regex: new RegExp('(?:read' + 'FileSync|read' + 'File)\\s*\\([^)]*(?:\\.env|\\.ssh|id_rsa|\\.pem|\\.key)', 'gi'), severity: 'HIGH', desc: 'Credential file read', codeOnly: true, owasp: 'LLM02' },
|
|
49
|
-
{ id: 'CRED_SOUL_READ', cat: 'credential-handling', regex: new RegExp('(?:read' + 'FileSync|read' + 'File)\\s*\\([^)]*(?:SO' + 'UL\\.md|ME' + 'MORY\\.md|AGE' + 'NTS\\.md)', 'gi'), severity: 'CRITICAL', desc: 'Agent identity file read', codeOnly: true, owasp: 'LLM02' },
|
|
50
|
-
// ── Exfiltration (OWASP LLM02) ───────────────────────────────────────
|
|
51
|
-
{ id: 'EXFIL_WEBHOOK', cat: 'exfiltration', regex: new RegExp('web' + 'hook\\.site|request' + 'bin\\.com|hook' + 'bin\\.com|pipe' + 'dream\\.net', 'gi'), severity: 'HIGH', desc: 'Known exfiltration endpoint', all: true, owasp: 'LLM02' },
|
|
52
|
-
{ id: 'EXFIL_NGROK', cat: 'exfiltration', regex: new RegExp('ng' + 'rok\\.io|ng' + 'rok-free\\.app', 'gi'), severity: 'MEDIUM', desc: 'Tunnel endpoint (possible exfil)', all: true, owasp: 'LLM02' },
|
|
53
|
-
{ id: 'EXFIL_B64_SEND', cat: 'exfiltration', regex: new RegExp('(?:bt' + 'oa|Buffer\\.from).*(?:fet' + 'ch|ax' + 'ios|requ' + 'est|http\\.requ' + 'est)', 'gi'), severity: 'CRITICAL', desc: 'Base64 encode → network send', codeOnly: true, owasp: 'LLM02' },
|
|
54
|
-
// ── Obfuscation (OWASP LLM03 — Supply Chain) ─────────────────────────
|
|
55
|
-
{ id: 'OBF_HEX_ESC', cat: 'obfuscation', regex: /\\x[0-9a-f]{2}(?:\\x[0-9a-f]{2}){4,}/gi, severity: 'HIGH', desc: 'Hex escape sequences (obfuscated code)', codeOnly: true, owasp: 'LLM03' },
|
|
56
|
-
{ id: 'OBF_UNICODE_ESC', cat: 'obfuscation', regex: /\\u[0-9a-f]{4}(?:\\u[0-9a-f]{4}){4,}/gi, severity: 'HIGH', desc: 'Unicode escape sequences', codeOnly: true, owasp: 'LLM03' },
|
|
57
|
-
{ id: 'OBF_CHAR_CODE', cat: 'obfuscation', regex: new RegExp('String\\.from' + 'CharCode\\s*\\([^)]{10,}\\)', 'gi'), severity: 'HIGH', desc: 'String.fromCharCode obfuscation', codeOnly: true, owasp: 'LLM03' },
|
|
58
|
-
// ── Leaky Skills (OWASP LLM02) ───────────────────────────────────────
|
|
59
|
-
{ id: 'LEAK_API_CONTEXT', cat: 'leaky-skills', regex: new RegExp('(?:api[_-]?key|sec' + 'ret|to' + 'ken)\\s*[:=]\\s*\\$\\{', 'gi'), severity: 'HIGH', desc: 'Secret in template literal (LLM context leak)', codeOnly: true, owasp: 'LLM02' },
|
|
60
|
-
// ── Memory Poisoning (OWASP LLM04 — Data/Model Poisoning) ────────────
|
|
61
|
-
{ id: 'MEM_WRITE_SOUL', cat: 'memory-poisoning', regex: new RegExp('(?:write' + 'FileSync|write' + 'File)\\s*\\([^)]*(?:SO' + 'UL\\.md|AGE' + 'NTS\\.md)', 'gi'), severity: 'CRITICAL', desc: 'Write to agent soul file', codeOnly: true, owasp: 'LLM04' },
|
|
62
|
-
{ id: 'MEM_WRITE_MEMORY', cat: 'memory-poisoning', regex: new RegExp('(?:write' + 'FileSync|write' + 'File)\\s*\\([^)]*ME' + 'MORY\\.md', 'gi'), severity: 'CRITICAL', desc: 'Write to agent memory file', codeOnly: true, owasp: 'LLM04' },
|
|
63
|
-
{ id: 'MEM_APPEND', cat: 'memory-poisoning', regex: new RegExp('(?:append' + 'FileSync|append' + 'File)\\s*\\([^)]*(?:SO' + 'UL|ME' + 'MORY|AGE' + 'NTS)\\.md', 'gi'), severity: 'CRITICAL', desc: 'Append to agent memory', codeOnly: true, owasp: 'LLM04' },
|
|
64
|
-
// ── Prompt Worm (OWASP LLM01) ────────────────────────────────────────
|
|
65
|
-
{ id: 'WORM_REPLICATE', cat: 'prompt-worm', regex: new RegExp('(?:co' + 'py|repl' + 'icate|spr' + 'ead|inf' + 'ect)\\s+(?:this|these)\\s+(?:inst' + 'ruction|pro' + 'mpt|mes' + 'sage)', 'gi'), severity: 'CRITICAL', desc: 'Self-replicating prompt pattern', all: true, owasp: 'LLM01' },
|
|
66
|
-
{ id: 'WORM_MULTI_AGENT', cat: 'prompt-worm', regex: new RegExp('(?:for' + 'ward|se' + 'nd|sh' + 'are)\\s+(?:to|with)\\s+(?:all|every|other)\\s+(?:ag' + 'ent|assi' + 'stant|mo' + 'del)', 'gi'), severity: 'CRITICAL', desc: 'Multi-agent worm propagation', all: true, owasp: 'LLM01' },
|
|
67
|
-
// ── Persistence (OWASP LLM06 — Excessive Agency) ─────────────────────
|
|
68
|
-
{ id: 'PERSIST_CRON', cat: 'persistence', regex: new RegExp('(?:cro' + 'ntab|cr' + 'on|at\\s+|sch' + 'tasks)', 'gi'), severity: 'HIGH', desc: 'Scheduled task creation', codeOnly: true, owasp: 'LLM06' },
|
|
69
|
-
{ id: 'PERSIST_STARTUP', cat: 'persistence', regex: new RegExp('(?:launch' + 'ctl|system' + 'ctl\\s+enable|rc\\.local|init\\.d|auto' + 'start)', 'gi'), severity: 'HIGH', desc: 'Startup persistence', codeOnly: true, owasp: 'LLM06' },
|
|
70
|
-
{ id: 'PERSIST_TIMER', cat: 'persistence', regex: new RegExp('set' + 'Interval\\s*\\([^)]*(?:86400|604800|2592000)', 'g'), severity: 'MEDIUM', desc: 'Long-running interval timer', codeOnly: true, owasp: 'LLM06' },
|
|
71
|
-
// ── CVE Patterns ─────────────────────────────────────────────────────
|
|
72
|
-
{ id: 'CVE_RCE_EXEC', cat: 'cve-patterns', regex: new RegExp('req' + 'uire\\s*\\(\\s*[\'"]child_' + 'process[\'"]\\s*\\).*(?:ex' + 'ec|sp' + 'awn)\\s*\\([^)]*(?:req\\.|params\\.|query\\.|body\\.)', 'gi'), severity: 'CRITICAL', desc: 'RCE via user-controlled input to exec', codeOnly: true, owasp: 'LLM05' },
|
|
73
|
-
// ── Identity Hijack (OWASP LLM04) ────────────────────────────────────
|
|
74
|
-
{ id: 'HIJACK_SOUL_WRITE', cat: 'identity-hijack', regex: new RegExp('(?:write' + 'FileSync|write' + 'File|fs\\.write)\\s*\\([^)]*SO' + 'UL\\.md', 'gi'), severity: 'CRITICAL', desc: 'SOUL.md write attempt (identity hijack)', codeOnly: true, owasp: 'LLM04' },
|
|
75
|
-
{ id: 'HIJACK_AGENT_WRITE', cat: 'identity-hijack', regex: new RegExp('(?:write' + 'FileSync|write' + 'File|fs\\.write)\\s*\\([^)]*AGE' + 'NTS\\.md', 'gi'), severity: 'CRITICAL', desc: 'AGENTS.md write attempt', codeOnly: true, owasp: 'LLM04' },
|
|
76
|
-
{ id: 'HIJACK_SOUL_DOC', cat: 'identity-hijack', regex: new RegExp('(?:over' + 'write|re' + 'place|up' + 'date|mo' + 'dify|ch' + 'ange)\\s+(?:the\\s+)?(?:SO' + 'UL|iden' + 'tity|per' + 'sona|person' + 'ality)', 'gi'), severity: 'HIGH', desc: 'Identity modification instruction', docOnly: true, owasp: 'LLM04' },
|
|
77
|
-
// ── PII Exposure (OWASP LLM02) ───────────────────────────────────────
|
|
78
|
-
{ id: 'PII_EMAIL', cat: 'pii-exposure', regex: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, severity: 'MEDIUM', desc: 'Email address detected', all: true, owasp: 'LLM02' },
|
|
79
|
-
{ id: 'PII_PHONE_JP', cat: 'pii-exposure', regex: /0[789]0-?\d{4}-?\d{4}/g, severity: 'HIGH', desc: 'Japanese phone number', all: true, owasp: 'LLM02' },
|
|
80
|
-
{ id: 'PII_MY_NUMBER', cat: 'pii-exposure', regex: /(?<!\d)(?:\d{4}\s?\d{4}\s?\d{4})(?!\d)/g, severity: 'CRITICAL', desc: 'Potential My Number (個人番号)', all: true, owasp: 'LLM02' },
|
|
81
|
-
// ── Shadow AI (OWASP LLM03 — Supply Chain) ───────────────────────────
|
|
82
|
-
{ id: 'SHADOW_AI_OPENAI', cat: 'shadow-ai', regex: new RegExp('api\\.open' + 'ai\\.com', 'gi'), severity: 'HIGH', desc: 'Direct OpenAI API call (Shadow AI)', codeOnly: true, owasp: 'LLM03' },
|
|
83
|
-
{ id: 'SHADOW_AI_ANTHROPIC', cat: 'shadow-ai', regex: new RegExp('api\\.anth' + 'ropic\\.com', 'gi'), severity: 'HIGH', desc: 'Direct Anthropic API call (Shadow AI)', codeOnly: true, owasp: 'LLM03' },
|
|
84
|
-
{ id: 'SHADOW_AI_GENERIC', cat: 'shadow-ai', regex: new RegExp('(?:g' + 'pt-4|g' + 'pt-3\\.5|cla' + 'ude-3|gem' + 'ini-pro)\\s*[\'"]', 'gi'), severity: 'MEDIUM', desc: 'AI model reference (possible Shadow AI)', codeOnly: true, owasp: 'LLM03' },
|
|
85
|
-
// ── System Prompt Leakage (OWASP LLM07) — NEW ────────────────────────
|
|
86
|
-
{ id: 'SPL_DUMP_SYSTEM', cat: 'system-prompt-leakage', regex: new RegExp('(?:pr' + 'int|out' + 'put|sh' + 'ow|disp' + 'lay|rev' + 'eal|du' + 'mp)\\s+(?:your\\s+)?(?:sys' + 'tem\\s+)?(?:pro' + 'mpt|inst' + 'ructions)', 'gi'), severity: 'HIGH', desc: 'System prompt dump request', all: true, owasp: 'LLM07' },
|
|
87
|
-
{ id: 'SPL_REPEAT_ABOVE', cat: 'system-prompt-leakage', regex: new RegExp('rep' + 'eat\\s+(?:every' + 'thing|all|the\\s+text)\\s+ab' + 'ove', 'gi'), severity: 'HIGH', desc: 'Repeat-above extraction', all: true, owasp: 'LLM07' },
|
|
88
|
-
{ id: 'SPL_TELL_RULES', cat: 'system-prompt-leakage', regex: new RegExp('(?:wh' + 'at\\s+are|te' + 'll\\s+me)\\s+your\\s+(?:ru' + 'les|constr' + 'aints|guide' + 'lines|sys' + 'tem\\s+mes' + 'sage)', 'gi'), severity: 'MEDIUM', desc: 'Rule extraction attempt', all: true, owasp: 'LLM07' },
|
|
89
|
-
{ id: 'SPL_MARKDOWN_LEAK', cat: 'system-prompt-leakage', regex: new RegExp('(?:out' + 'put|for' + 'mat)\\s+(?:your\\s+)?(?:sys' + 'tem|inter' + 'nal)\\s+(?:pro' + 'mpt|con' + 'fig)\\s+(?:as|in)\\s+(?:mark' + 'down|co' + 'de\\s+bl' + 'ock|js' + 'on)', 'gi'), severity: 'HIGH', desc: 'System prompt format extraction', all: true, owasp: 'LLM07' },
|
|
90
|
-
{ id: 'SPL_SOUL_EXFIL', cat: 'system-prompt-leakage', regex: new RegExp('(?:c' + 'at|re' + 'ad|ty' + 'pe|get-con' + 'tent)\\s+.*SO' + 'UL\\.md', 'gi'), severity: 'CRITICAL', desc: 'SOUL.md content extraction via shell', codeOnly: true, owasp: 'LLM07' },
|
|
91
|
-
];
|
|
92
|
-
//# sourceMappingURL=patterns.js.map
|
package/dist/patterns.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../ts-src/patterns.ts"],"names":[],"mappings":"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"}
|