@aimarket/warden 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -5
- package/README-es.md +27 -9
- package/README-fr.md +28 -9
- package/README-ru.md +28 -9
- package/README-zh.md +23 -9
- package/README.md +27 -9
- package/dist/classifier.d.ts +50 -0
- package/dist/classifier.d.ts.map +1 -0
- package/dist/classifier.js +164 -0
- package/dist/classifier.js.map +1 -0
- package/dist/claude-hook.d.ts +53 -0
- package/dist/claude-hook.d.ts.map +1 -0
- package/dist/claude-hook.js +192 -0
- package/dist/claude-hook.js.map +1 -0
- package/dist/histor.d.ts +69 -0
- package/dist/histor.d.ts.map +1 -0
- package/dist/histor.js +82 -0
- package/dist/histor.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/jcs.d.ts +8 -0
- package/dist/jcs.d.ts.map +1 -1
- package/dist/jcs.js +25 -5
- package/dist/jcs.js.map +1 -1
- package/dist/mcp-client.d.ts +58 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +451 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/mcp-rpc.js +1 -1
- package/dist/mcp-server.js +8 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tools.d.ts.map +1 -1
- package/dist/mcp-tools.js +7 -6
- package/dist/mcp-tools.js.map +1 -1
- package/dist/mtl.d.ts +28 -0
- package/dist/mtl.d.ts.map +1 -0
- package/dist/mtl.js +77 -0
- package/dist/mtl.js.map +1 -0
- package/dist/pin-store.js +3 -3
- package/dist/pin-store.js.map +1 -1
- package/dist/pinning.d.ts +18 -2
- package/dist/pinning.d.ts.map +1 -1
- package/dist/pinning.js +34 -7
- package/dist/pinning.js.map +1 -1
- package/dist/scan-cli.d.ts +3 -0
- package/dist/scan-cli.d.ts.map +1 -0
- package/dist/scan-cli.js +36 -0
- package/dist/scan-cli.js.map +1 -0
- package/dist/scan-config.d.ts +72 -0
- package/dist/scan-config.d.ts.map +1 -0
- package/dist/scan-config.js +239 -0
- package/dist/scan-config.js.map +1 -0
- package/dist/scan-lock.d.ts +46 -0
- package/dist/scan-lock.d.ts.map +1 -0
- package/dist/scan-lock.js +112 -0
- package/dist/scan-lock.js.map +1 -0
- package/dist/scan-report.d.ts +21 -0
- package/dist/scan-report.d.ts.map +1 -0
- package/dist/scan-report.js +273 -0
- package/dist/scan-report.js.map +1 -0
- package/dist/scan.d.ts +137 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +534 -0
- package/dist/scan.js.map +1 -0
- package/dist/static-scan.d.ts +1 -1
- package/dist/static-scan.d.ts.map +1 -1
- package/dist/static-scan.js +262 -12
- package/dist/static-scan.js.map +1 -1
- package/dist/tool-list.d.ts +34 -0
- package/dist/tool-list.d.ts.map +1 -0
- package/dist/tool-list.js +57 -0
- package/dist/tool-list.js.map +1 -0
- package/dist/wrap-cli.d.ts.map +1 -1
- package/dist/wrap-cli.js +6 -4
- package/dist/wrap-cli.js.map +1 -1
- package/dist/wrap-state.d.ts +3 -0
- package/dist/wrap-state.d.ts.map +1 -1
- package/dist/wrap-state.js +7 -4
- package/dist/wrap-state.js.map +1 -1
- package/dist/wrap.js +50 -42
- package/dist/wrap.js.map +1 -1
- package/docs/gates.es.md +59 -10
- package/docs/gates.fr.md +59 -10
- package/docs/gates.md +55 -10
- package/docs/gates.ru.md +59 -11
- package/docs/gates.zh.md +13 -7
- package/docs/scan.es.md +184 -0
- package/docs/scan.fr.md +184 -0
- package/docs/scan.md +184 -0
- package/docs/scan.ru.md +184 -0
- package/docs/scan.zh.md +184 -0
- package/docs/scanner-comparison.es.md +218 -0
- package/docs/scanner-comparison.fr.md +223 -0
- package/docs/scanner-comparison.md +209 -0
- package/docs/scanner-comparison.ru.md +214 -0
- package/docs/scanner-comparison.zh.md +135 -0
- package/package.json +5 -3
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { relative, isAbsolute, sep } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { readFileSync } from 'node:fs';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
import { displaySafe } from './sanitize.js';
|
|
7
|
+
const SEVERITY_ORDER = ['info', 'low', 'medium', 'high', 'critical'];
|
|
8
|
+
/** Short, fixed descriptions; the finding message carries the specifics. */
|
|
9
|
+
export const CODE_TEXT = {
|
|
10
|
+
TOOL_DEF_INJECTION: 'Tool definition carries prompt-injection phrasing',
|
|
11
|
+
TOOL_DEF_SECRET_REQUEST: 'Tool definition asks for a private key, seed phrase or SSH key',
|
|
12
|
+
TOOL_DEF_SECRET_HARVEST: 'Tool whose stated job is to read or reveal secrets',
|
|
13
|
+
TOOL_DEF_EXFIL: 'Tool definition instructs sending data to an outside destination',
|
|
14
|
+
TOOL_DEF_HIDDEN_UNICODE: 'Invisible or bidirectional characters in a tool definition',
|
|
15
|
+
TOOL_DEF_BASE64_BLOB: 'Long base64 run in a tool definition',
|
|
16
|
+
TOOL_DEF_DATA_URL: 'data: or javascript: URL in a tool definition',
|
|
17
|
+
TOOL_DEF_CREDENTIAL_PARAM: 'Tool asks for a credential as a parameter',
|
|
18
|
+
TOOL_DEF_ENV_REFERENCE: 'Tool definition refers to environment files or variables',
|
|
19
|
+
TOOL_DEF_SECRET_EXFIL: 'A secret store and a destination named close together',
|
|
20
|
+
TOOL_DEF_IMPERATIVE: 'Prompt-shaped imperative phrasing',
|
|
21
|
+
TOOL_DEF_DRIFT: 'Tool definitions changed since they were approved',
|
|
22
|
+
TOOL_DEF_UNPINNED: 'No approved snapshot of the tool definitions yet',
|
|
23
|
+
TOOL_DEF_UNCANONICAL: 'Tool definitions have no canonical form to pin',
|
|
24
|
+
SERVER_IDENTITY_DRIFT: 'The command or URL behind an approved server changed',
|
|
25
|
+
PIN_FORMAT_UPGRADE_REQUIRED: 'Approval predates extended tool fields; re-approve',
|
|
26
|
+
SERVER_UNDECLARED: 'Server came from a catalog, not from the operator',
|
|
27
|
+
LOCK_MISSING: 'Server is not in the reviewed lock file',
|
|
28
|
+
HISTOR_UNSEEN_TOOLSET: 'HISTOR never observed the tool set this server served',
|
|
29
|
+
HISTOR_CLASSIFIER: "HISTOR's classifier reads a tool as directing the model",
|
|
30
|
+
TOOL_DEF_CLASSIFIER: 'A model reads the tool as directing the model (opt-in classifier)',
|
|
31
|
+
TOOL_DEF_CROSS_TOOL: "A tool's description directs how another tool is called",
|
|
32
|
+
HISTOR_OLDER_TOOLSET: 'This server served a tool set HISTOR saw earlier, not the current one',
|
|
33
|
+
GATE_ERROR: 'A WARDEN gate failed to complete',
|
|
34
|
+
};
|
|
35
|
+
function codeText(code) {
|
|
36
|
+
return CODE_TEXT[code] ?? (code.startsWith('THREAT_') ? 'Matches a known-bad record in the threat feed' : code);
|
|
37
|
+
}
|
|
38
|
+
/** JSON report without the raw tool definitions (they are in the lock when they matter). */
|
|
39
|
+
export function toJson(report) {
|
|
40
|
+
return JSON.stringify({ ...report, servers: report.servers.map(({ tools: _tools, ...rest }) => rest) }, null, 2);
|
|
41
|
+
}
|
|
42
|
+
function displayPath(path, cwd) {
|
|
43
|
+
const rel = relative(cwd, path);
|
|
44
|
+
if (rel && !rel.startsWith('..') && !isAbsolute(rel))
|
|
45
|
+
return rel;
|
|
46
|
+
const home = homedir();
|
|
47
|
+
return path.startsWith(home + sep) ? '~' + path.slice(home.length) : path;
|
|
48
|
+
}
|
|
49
|
+
function findingLabel(f) {
|
|
50
|
+
return `${displaySafe(f.code, 60)}${f.tool ? `(${displaySafe(f.tool, 60)})` : ''}`;
|
|
51
|
+
}
|
|
52
|
+
/** The terminal table. Every untrusted string goes through displaySafe. */
|
|
53
|
+
export function toTable(report, cwd, color) {
|
|
54
|
+
const c = (code, text) => color ? `\x1b[${code}m${text}\x1b[0m` : text;
|
|
55
|
+
const lines = [];
|
|
56
|
+
const r = report.ruleset;
|
|
57
|
+
lines.push(`WARDEN scan ${report.version} · ruleset ${r.version} ${r.digest.slice(0, 19)}… · block at ${report.policy.blockAtSeverity}`);
|
|
58
|
+
if (!report.sources.length)
|
|
59
|
+
lines.push('No MCP client config found. Pass a file, or run where .mcp.json lives.');
|
|
60
|
+
for (const s of report.sources)
|
|
61
|
+
lines.push(` ${s.error ? c('31', 'unreadable') : 'read'} ${displayPath(s.path, cwd)} (${s.client}, ${s.servers} server${s.servers === 1 ? '' : 's'})${s.error ? ': ' + displaySafe(s.error, 200) : ''}`);
|
|
62
|
+
lines.push('');
|
|
63
|
+
const width = Math.min(28, Math.max(6, ...report.servers.map(s => displaySafe(s.key, 28).length)));
|
|
64
|
+
for (const s of report.servers) {
|
|
65
|
+
const mark = s.allow === false ? c('31;1', '✗ BLOCK ') : s.status === 'error' ? c('33', '! error ') : s.status === 'skipped' ? c('2', '- skip ')
|
|
66
|
+
: s.status === 'launch-only' ? c('36', '~ launch') : c('32', '✓ allow ');
|
|
67
|
+
const name = displaySafe(s.key, 28).padEnd(width);
|
|
68
|
+
let detail;
|
|
69
|
+
if (s.status === 'skipped')
|
|
70
|
+
detail = displaySafe(s.skipped ?? '', 120);
|
|
71
|
+
else if (s.status === 'error')
|
|
72
|
+
detail = displaySafe(s.error ?? '', 200);
|
|
73
|
+
else {
|
|
74
|
+
const blockingFindings = s.findings.filter(f => !f.advisory && SEVERITY_ORDER.indexOf(f.severity) >= SEVERITY_ORDER.indexOf(report.policy.blockAtSeverity));
|
|
75
|
+
const labels = [...new Set((s.allow === false ? blockingFindings : s.findings.filter(f => !f.advisory)).map(findingLabel))];
|
|
76
|
+
const shown = labels.slice(0, 4);
|
|
77
|
+
const parts = [];
|
|
78
|
+
if (s.status === 'launch-only')
|
|
79
|
+
parts.push('not started (--no-launch): launch line vetted only');
|
|
80
|
+
if (s.toolCount !== undefined)
|
|
81
|
+
parts.push(`${s.toolCount} tool${s.toolCount === 1 ? '' : 's'}`);
|
|
82
|
+
if (s.score !== undefined && s.status === 'scanned')
|
|
83
|
+
parts.push(`score ${s.score.toFixed(2)}`);
|
|
84
|
+
if (shown.length)
|
|
85
|
+
parts.push(shown.join(' '));
|
|
86
|
+
const more = labels.length - shown.length;
|
|
87
|
+
if (more > 0)
|
|
88
|
+
parts.push(`+${more} more`);
|
|
89
|
+
if (s.lock)
|
|
90
|
+
parts.push(`lock: ${s.lock.state}`);
|
|
91
|
+
if (s.histor)
|
|
92
|
+
parts.push(`histor: ${displaySafe(s.histor.match ?? (s.histor.notSent ? 'not sent' : 'unavailable'), 40)}`);
|
|
93
|
+
if (s.classifier)
|
|
94
|
+
parts.push(s.classifier.error ? 'classifier: no answer' : `classifier: ${s.classifier.flagged} flagged`);
|
|
95
|
+
detail = parts.join(' · ');
|
|
96
|
+
}
|
|
97
|
+
lines.push(` ${mark} ${name} ${c('2', s.client.padEnd(14))} ${detail}`);
|
|
98
|
+
}
|
|
99
|
+
const m = report.summary;
|
|
100
|
+
lines.push('');
|
|
101
|
+
lines.push(`${m.servers} server${m.servers === 1 ? '' : 's'}: ${m.allowed} allowed, ${m.blocked} blocked, ${m.errors} not checked, ${m.skipped} skipped${m.launchOnly ? `, ${m.launchOnly} not started` : ''}.`);
|
|
102
|
+
if (report.lock) {
|
|
103
|
+
if (report.lock.written)
|
|
104
|
+
lines.push(`Lock written: ${displayPath(report.lock.path, cwd)}. Commit it; the diff is the review.`);
|
|
105
|
+
if (report.lock.stale.length)
|
|
106
|
+
lines.push(`In the lock but not in any config: ${report.lock.stale.map(id => displaySafe(id, 60)).join(', ')}`);
|
|
107
|
+
}
|
|
108
|
+
if (m.blocked)
|
|
109
|
+
lines.push(`Details: warden-mcp scan --json, or --markdown FILE. To review a changed server: warden-mcp scan --lock warden.lock.json --update-lock.`);
|
|
110
|
+
return lines.join('\n');
|
|
111
|
+
}
|
|
112
|
+
// ── SARIF 2.1.0 ──────────────────────────────────────────────────────────────
|
|
113
|
+
const SECURITY_SEVERITY = { critical: '9.5', high: '8.0', medium: '5.5', low: '3.0', info: '1.0' };
|
|
114
|
+
const LEVEL = { critical: 'error', high: 'error', medium: 'warning', low: 'note', info: 'note' };
|
|
115
|
+
function lineOf(path, key) {
|
|
116
|
+
try {
|
|
117
|
+
const text = readFileSync(path, 'utf8');
|
|
118
|
+
const needle = JSON.stringify(key);
|
|
119
|
+
const at = text.indexOf(needle + ':') >= 0 ? text.indexOf(needle + ':') : text.indexOf(needle);
|
|
120
|
+
return at < 0 ? 1 : text.slice(0, at).split('\n').length;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return 1;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function artifactUri(path, cwd) {
|
|
127
|
+
const rel = relative(cwd, path);
|
|
128
|
+
if (rel && !rel.startsWith('..') && !isAbsolute(rel))
|
|
129
|
+
return { uri: rel.split(sep).join('/'), uriBaseId: '%SRCROOT%' };
|
|
130
|
+
return { uri: pathToFileURL(path).href };
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* SARIF for GitHub code scanning. Advisory findings are left out on purpose: the
|
|
134
|
+
* Security tab is for things that block, and TOOL_DEF_UNPINNED alone would put a
|
|
135
|
+
* result on every server in every repository.
|
|
136
|
+
*/
|
|
137
|
+
export function toSarif(report, cwd) {
|
|
138
|
+
const rules = new Map();
|
|
139
|
+
const results = [];
|
|
140
|
+
for (const s of report.servers) {
|
|
141
|
+
for (const f of s.findings) {
|
|
142
|
+
if (f.advisory)
|
|
143
|
+
continue;
|
|
144
|
+
const known = rules.get(f.code);
|
|
145
|
+
if (!known || SEVERITY_ORDER.indexOf(f.severity) > SEVERITY_ORDER.indexOf(known.severity))
|
|
146
|
+
rules.set(f.code, { severity: f.severity });
|
|
147
|
+
const fingerprint = createHash('sha256').update([s.client, s.key, f.code, f.tool ?? '', f.message].join('\u0000')).digest('hex');
|
|
148
|
+
results.push({
|
|
149
|
+
ruleId: f.code,
|
|
150
|
+
level: LEVEL[f.severity],
|
|
151
|
+
message: { text: `${displaySafe(s.key, 120)}: ${displaySafe(f.message, 1500)}` },
|
|
152
|
+
locations: [{ physicalLocation: { artifactLocation: artifactUri(s.source, cwd), region: { startLine: lineOf(s.source, s.key) } } }],
|
|
153
|
+
partialFingerprints: { 'wardenFinding/v1': fingerprint },
|
|
154
|
+
properties: { server: displaySafe(s.key, 200), client: s.client, gate: f.gate, severity: f.severity, ...(f.tool ? { tool: displaySafe(f.tool, 200) } : {}) },
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
$schema: 'https://json.schemastore.org/sarif-2.1.0.json',
|
|
160
|
+
version: '2.1.0',
|
|
161
|
+
runs: [{
|
|
162
|
+
tool: { driver: {
|
|
163
|
+
name: 'WARDEN', semanticVersion: report.version, informationUri: 'https://warden.modelmarket.dev/',
|
|
164
|
+
rules: [...rules.entries()].sort(([a], [b]) => a < b ? -1 : 1).map(([id, r]) => ({
|
|
165
|
+
id, name: id, shortDescription: { text: codeText(id) },
|
|
166
|
+
helpUri: 'https://github.com/alexar76/warden/blob/main/docs/gates.md',
|
|
167
|
+
defaultConfiguration: { level: LEVEL[r.severity] },
|
|
168
|
+
properties: { tags: ['security', 'mcp', 'prompt-injection'], 'security-severity': SECURITY_SEVERITY[r.severity] },
|
|
169
|
+
})),
|
|
170
|
+
} },
|
|
171
|
+
results,
|
|
172
|
+
properties: { ruleset: report.ruleset, blockAtSeverity: report.policy.blockAtSeverity },
|
|
173
|
+
}],
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// ── Markdown (GitHub step summary, PR comment) ───────────────────────────────
|
|
177
|
+
/** Inline code that untrusted text cannot break out of. */
|
|
178
|
+
export function mdCode(text, max = 80) {
|
|
179
|
+
const t = displaySafe(text, max).replace(/[\r\n]+/g, ' ').replace(/\|/g, '¦');
|
|
180
|
+
const run = Math.max(0, ...[...t.matchAll(/`+/g)].map(m => m[0].length));
|
|
181
|
+
const fence = '`'.repeat(run + 1);
|
|
182
|
+
return `${fence}${run ? ' ' : ''}${t}${run ? ' ' : ''}${fence}`;
|
|
183
|
+
}
|
|
184
|
+
/** A fenced block that untrusted text cannot close. */
|
|
185
|
+
export function mdBlock(text, lang = '') {
|
|
186
|
+
const run = Math.max(2, ...[...text.matchAll(/`+/g)].map(m => m[0].length));
|
|
187
|
+
const fence = '`'.repeat(run + 1);
|
|
188
|
+
return `${fence}${lang}\n${text}\n${fence}`;
|
|
189
|
+
}
|
|
190
|
+
function toolText(t) {
|
|
191
|
+
if (!t)
|
|
192
|
+
return [];
|
|
193
|
+
const lines = [`name: ${t.name}`];
|
|
194
|
+
if (t.title)
|
|
195
|
+
lines.push(`title: ${t.title}`);
|
|
196
|
+
for (const l of String(t.description ?? '').split(/\r?\n/))
|
|
197
|
+
lines.push(`description: ${l}`);
|
|
198
|
+
lines.push(`inputSchema: ${JSON.stringify(t.inputSchema ?? {})}`);
|
|
199
|
+
for (const k of Object.keys(t).filter(k => !['name', 'title', 'description', 'inputSchema'].includes(k)).sort())
|
|
200
|
+
lines.push(`${k}: ${JSON.stringify(t[k])}`);
|
|
201
|
+
return lines.map(l => displaySafe(l, 4000));
|
|
202
|
+
}
|
|
203
|
+
/** Line diff, small and dependency-free: common prefix/suffix, then the middle as -/+. */
|
|
204
|
+
export function lineDiff(before, after) {
|
|
205
|
+
let start = 0;
|
|
206
|
+
while (start < before.length && start < after.length && before[start] === after[start])
|
|
207
|
+
start++;
|
|
208
|
+
let endA = before.length, endB = after.length;
|
|
209
|
+
while (endA > start && endB > start && before[endA - 1] === after[endB - 1]) {
|
|
210
|
+
endA--;
|
|
211
|
+
endB--;
|
|
212
|
+
}
|
|
213
|
+
return [
|
|
214
|
+
...before.slice(Math.max(0, start - 1), start).map(l => ' ' + l),
|
|
215
|
+
...before.slice(start, endA).map(l => '- ' + l),
|
|
216
|
+
...after.slice(start, endB).map(l => '+ ' + l),
|
|
217
|
+
...after.slice(endB, endB + 1).map(l => ' ' + l),
|
|
218
|
+
];
|
|
219
|
+
}
|
|
220
|
+
export function toMarkdown(report, cwd) {
|
|
221
|
+
const m = report.summary;
|
|
222
|
+
const out = [];
|
|
223
|
+
out.push(`## WARDEN · MCP server scan`);
|
|
224
|
+
out.push('');
|
|
225
|
+
out.push(`${m.blocked ? '❌' : '✅'} **${m.blocked} blocked**, ${m.allowed} allowed, ${m.errors} not checked, ${m.skipped} skipped${m.launchOnly ? `, ${m.launchOnly} not started` : ''} · ruleset ${mdCode(report.ruleset.version)} · block at ${mdCode(report.policy.blockAtSeverity)}`);
|
|
226
|
+
out.push('');
|
|
227
|
+
if (!report.servers.length) {
|
|
228
|
+
out.push('No MCP servers found in the scanned config files.');
|
|
229
|
+
return out.join('\n') + '\n';
|
|
230
|
+
}
|
|
231
|
+
out.push('| | Server | Config | Tools | Findings | Lock |');
|
|
232
|
+
out.push('|---|---|---|---|---|---|');
|
|
233
|
+
for (const s of report.servers) {
|
|
234
|
+
const mark = s.allow === false ? '❌' : s.status === 'error' ? '⚠️' : s.status === 'skipped' ? '➖' : s.status === 'launch-only' ? '🔸' : '✅';
|
|
235
|
+
const findings = s.status === 'error' ? `not checked: ${mdCode(s.error ?? '', 100)}`
|
|
236
|
+
: s.status === 'skipped' ? mdCode(s.skipped ?? '', 80)
|
|
237
|
+
: [...new Set(s.findings.filter(f => !f.advisory).map(f => f.code + (f.tool ? `(${f.tool})` : '')))].slice(0, 5).map(l => mdCode(l, 70)).join(' ') || (s.status === 'launch-only' ? 'launch line only (not started)' : '—');
|
|
238
|
+
out.push(`| ${mark} | ${mdCode(s.key, 50)} | ${mdCode(displayPath(s.source, cwd), 60)} | ${s.toolCount ?? '—'} | ${findings} | ${s.lock ? mdCode(s.lock.state) : '—'} |`);
|
|
239
|
+
}
|
|
240
|
+
const blocked = report.servers.filter(s => s.allow === false);
|
|
241
|
+
for (const s of blocked) {
|
|
242
|
+
out.push('');
|
|
243
|
+
out.push(`<details><summary>❌ ${mdCode(s.key, 60)} — why it was blocked</summary>`);
|
|
244
|
+
out.push('');
|
|
245
|
+
out.push(mdBlock(s.findings.filter(f => !f.advisory).map(f => `[${f.severity}] ${f.code}${f.tool ? ` (${f.tool})` : ''}: ${f.message}`).map(l => displaySafe(l, 1500)).join('\n')));
|
|
246
|
+
out.push('');
|
|
247
|
+
out.push('</details>');
|
|
248
|
+
}
|
|
249
|
+
const changed = report.servers.filter(s => s.lock?.changes?.length);
|
|
250
|
+
for (const s of changed) {
|
|
251
|
+
out.push('');
|
|
252
|
+
out.push(`<details${s.lock.state === 'drift' || s.lock.state === 'missing' ? ' open' : ''}><summary>${s.lock.state === 'missing' ? 'New server' : 'Changed tool definitions'}: ${mdCode(s.key, 60)} (${s.lock.changes.length} tool${s.lock.changes.length === 1 ? '' : 's'})</summary>`);
|
|
253
|
+
out.push('');
|
|
254
|
+
const diff = [];
|
|
255
|
+
for (const ch of s.lock.changes.slice(0, 40)) {
|
|
256
|
+
diff.push(`@@ ${ch.kind} ${displaySafe(ch.tool, 120)} @@`);
|
|
257
|
+
diff.push(...lineDiff(toolText(ch.before), toolText(ch.after)));
|
|
258
|
+
}
|
|
259
|
+
if (s.lock.changes.length > 40)
|
|
260
|
+
diff.push(`… ${s.lock.changes.length - 40} more tools`);
|
|
261
|
+
out.push(mdBlock(diff.join('\n').slice(0, 60_000), 'diff'));
|
|
262
|
+
out.push('');
|
|
263
|
+
out.push('</details>');
|
|
264
|
+
}
|
|
265
|
+
if (report.lock?.stale.length) {
|
|
266
|
+
out.push('');
|
|
267
|
+
out.push(`In the lock but no longer in any config: ${report.lock.stale.map(id => mdCode(id, 60)).join(', ')}`);
|
|
268
|
+
}
|
|
269
|
+
out.push('');
|
|
270
|
+
out.push(`<sub>@aimarket/warden ${displaySafe(report.version, 20)} · ${mdCode(report.ruleset.digest, 60)} · tool descriptions are shown as code; they are untrusted text from the servers.</sub>`);
|
|
271
|
+
return out.join('\n') + '\n';
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=scan-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-report.js","sourceRoot":"","sources":["../src/scan-report.ts"],"names":[],"mappings":"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"}
|
package/dist/scan.d.ts
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { type ClientKind, type ConfiguredServer, type DiscoveryEnv } from './scan-config.js';
|
|
2
|
+
import { type FetchedServer } from './mcp-client.js';
|
|
3
|
+
import { type ClassifierOptions } from './classifier.js';
|
|
4
|
+
import { type ToolChange } from './scan-lock.js';
|
|
5
|
+
import type { Severity, ToolDef, WardenFinding, WardenPolicy, RulesetRef } from './types.js';
|
|
6
|
+
export declare const SEVERITIES: Severity[];
|
|
7
|
+
export interface ScanOptions {
|
|
8
|
+
configs: string[];
|
|
9
|
+
project: boolean;
|
|
10
|
+
clients?: ClientKind[];
|
|
11
|
+
cwd: string;
|
|
12
|
+
launch: boolean;
|
|
13
|
+
publicOnly: boolean;
|
|
14
|
+
timeoutMs: number;
|
|
15
|
+
concurrency: number;
|
|
16
|
+
policy: WardenPolicy;
|
|
17
|
+
lock?: string;
|
|
18
|
+
updateLock: boolean;
|
|
19
|
+
stateDir: string;
|
|
20
|
+
feed?: string;
|
|
21
|
+
feedKey?: string;
|
|
22
|
+
histor: boolean;
|
|
23
|
+
historUrl: string;
|
|
24
|
+
/** Opt-in meaning-based check; absent unless both --classifier-url and --classifier-model are given. */
|
|
25
|
+
classifier?: ClassifierOptions & {
|
|
26
|
+
blocks: boolean;
|
|
27
|
+
};
|
|
28
|
+
format: 'table' | 'json';
|
|
29
|
+
sarif?: string;
|
|
30
|
+
markdown?: string;
|
|
31
|
+
jsonFile?: string;
|
|
32
|
+
failOnError: boolean;
|
|
33
|
+
color: boolean;
|
|
34
|
+
}
|
|
35
|
+
export type ServerStatus = 'scanned' | 'launch-only' | 'blocked-at-launch' | 'error' | 'skipped';
|
|
36
|
+
export interface HistorSummary {
|
|
37
|
+
match?: string;
|
|
38
|
+
note?: string;
|
|
39
|
+
page?: string;
|
|
40
|
+
unchangedSince?: string;
|
|
41
|
+
changes?: number;
|
|
42
|
+
error?: string;
|
|
43
|
+
notSent?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ScanServerResult {
|
|
46
|
+
id: string;
|
|
47
|
+
key: string;
|
|
48
|
+
client: ClientKind;
|
|
49
|
+
source: string;
|
|
50
|
+
scope: 'user' | 'project';
|
|
51
|
+
transport: 'stdio' | 'sse' | 'http';
|
|
52
|
+
wrapped: boolean;
|
|
53
|
+
/** Display form of the launch: secrets in args and URLs are redacted. */
|
|
54
|
+
launch: string;
|
|
55
|
+
status: ServerStatus;
|
|
56
|
+
allow: boolean | null;
|
|
57
|
+
score?: number;
|
|
58
|
+
decidedBy?: string;
|
|
59
|
+
findings: WardenFinding[];
|
|
60
|
+
allowedTools: string[];
|
|
61
|
+
blockedTools: string[];
|
|
62
|
+
toolCount?: number;
|
|
63
|
+
serverInfo?: {
|
|
64
|
+
name?: string;
|
|
65
|
+
version?: string;
|
|
66
|
+
};
|
|
67
|
+
error?: string;
|
|
68
|
+
skipped?: string;
|
|
69
|
+
mtlDigest?: string;
|
|
70
|
+
mtlError?: string;
|
|
71
|
+
histor?: HistorSummary;
|
|
72
|
+
classifier?: {
|
|
73
|
+
model: string;
|
|
74
|
+
flagged: number;
|
|
75
|
+
error?: string;
|
|
76
|
+
};
|
|
77
|
+
lock?: {
|
|
78
|
+
state: 'match' | 'drift' | 'missing' | 'updated' | 'unchanged' | 'refused';
|
|
79
|
+
changes?: ToolChange[];
|
|
80
|
+
};
|
|
81
|
+
/** The fetched definitions; kept for the Markdown diff and --update-lock, not printed in JSON. */
|
|
82
|
+
tools?: ToolDef[];
|
|
83
|
+
}
|
|
84
|
+
export interface ScanReport {
|
|
85
|
+
tool: 'warden-scan';
|
|
86
|
+
version: string;
|
|
87
|
+
scannedAt: string;
|
|
88
|
+
ruleset: RulesetRef;
|
|
89
|
+
policy: WardenPolicy;
|
|
90
|
+
launch: boolean;
|
|
91
|
+
sources: Array<{
|
|
92
|
+
path: string;
|
|
93
|
+
client: ClientKind;
|
|
94
|
+
scope: 'user' | 'project';
|
|
95
|
+
servers: number;
|
|
96
|
+
error?: string;
|
|
97
|
+
}>;
|
|
98
|
+
servers: ScanServerResult[];
|
|
99
|
+
lock?: {
|
|
100
|
+
path: string;
|
|
101
|
+
stale: string[];
|
|
102
|
+
written: boolean;
|
|
103
|
+
};
|
|
104
|
+
summary: {
|
|
105
|
+
servers: number;
|
|
106
|
+
scanned: number;
|
|
107
|
+
allowed: number;
|
|
108
|
+
blocked: number;
|
|
109
|
+
errors: number;
|
|
110
|
+
skipped: number;
|
|
111
|
+
launchOnly: number;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
export declare const SCAN_USAGE: string;
|
|
115
|
+
export declare function parseScanArgs(argv: string[], env?: NodeJS.ProcessEnv): Promise<ScanOptions>;
|
|
116
|
+
export declare class UsageRequested extends Error {
|
|
117
|
+
constructor();
|
|
118
|
+
}
|
|
119
|
+
/** A path segment or argument that looks like it carries a credential. */
|
|
120
|
+
export declare function looksSecret(text: string): boolean;
|
|
121
|
+
/** The launch line with credentials replaced, for terminals, reports and SARIF. */
|
|
122
|
+
export declare function redactLaunch(server: ConfiguredServer): string;
|
|
123
|
+
export declare function redactUrl(raw: string): string;
|
|
124
|
+
/** The endpoint HISTOR may be asked about, or why it is not sent. */
|
|
125
|
+
export declare function historEndpoint(raw: string): {
|
|
126
|
+
endpoint?: string;
|
|
127
|
+
reason?: string;
|
|
128
|
+
};
|
|
129
|
+
export interface ScanDeps {
|
|
130
|
+
fetch?: (server: ConfiguredServer, opts: ScanOptions) => Promise<FetchedServer>;
|
|
131
|
+
historFetch?: typeof fetch;
|
|
132
|
+
now?: () => Date;
|
|
133
|
+
discovery?: Partial<DiscoveryEnv>;
|
|
134
|
+
}
|
|
135
|
+
export declare function runScan(opts: ScanOptions, deps?: ScanDeps): Promise<ScanReport>;
|
|
136
|
+
export declare function exitCode(report: ScanReport, opts: Pick<ScanOptions, 'failOnError'>): number;
|
|
137
|
+
//# sourceMappingURL=scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiC,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAqB,MAAM,kBAAkB,CAAC;AAC/I,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGlF,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAwG,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACvJ,OAAO,KAAK,EAAY,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtH,eAAO,MAAM,UAAU,EAAE,QAAQ,EAAkD,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,UAAU,CAAC,EAAE,iBAAiB,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IACrD,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,aAAa,GAAG,mBAAmB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAC9G,kGAAkG;IAClG,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjH,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3D,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACtI;AAID,eAAO,MAAM,UAAU,QAyCV,CAAC;AAEd,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,WAAW,CAAC,CAsF9G;AAED,qBAAa,cAAe,SAAQ,KAAK;;CAAyC;AAOlF,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGjD;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAa7D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU7C;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAelF;AAoBD,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAChF,WAAW,CAAC,EAAE,OAAO,KAAK,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACnC;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAE,QAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAoLzF;AAOD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,MAAM,CAI3F"}
|