📦 deps(thirdparty): update snapshots
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
"use strict";
|
||||
|
||||
const fs = require("node:fs");
|
||||
const path = require("node:path");
|
||||
|
||||
async function main(input) {
|
||||
const core = require(path.join(input.packageRoot, "tools/lib/aas-v1"));
|
||||
const mcp = require(path.join(input.packageRoot, "tools/lib/aas-v1/mcp"));
|
||||
const manifest = input.manifest;
|
||||
const corpusRoot = input.corpusRoot;
|
||||
const catalog = core.loadBundledCatalog({ root: input.packageRoot });
|
||||
let archiveExploitRejected = 0;
|
||||
let archiveControlsAccepted = 0;
|
||||
let inputExploitRejected = 0;
|
||||
let inputControlsAccepted = 0;
|
||||
const parserBoundaryClasses = new Set(["malformed-mcp-framing", "malformed-json", "duplicate-json-key", "invalid-utf8", "request-byte-limit", "json-depth-limit"]);
|
||||
|
||||
for (const corpusCase of manifest.classes) {
|
||||
const pairs = [["exploit", corpusCase.exploit], ["boundaryControl", corpusCase.boundaryControl]];
|
||||
if (corpusCase.surface === "archive") {
|
||||
for (const [kind, fixture] of pairs) {
|
||||
const bytes = fs.readFileSync(path.resolve(corpusRoot, fixture.path));
|
||||
let accepted = false;
|
||||
try {
|
||||
core.cache.parsePackageArchive(bytes, { limits: manifest.fixtureContract.archive });
|
||||
accepted = true;
|
||||
} catch {}
|
||||
if (kind === "exploit" && accepted) throw new Error(`${corpusCase.classId}: archive exploit accepted`);
|
||||
if (kind === "boundaryControl" && !accepted) throw new Error(`${corpusCase.classId}: archive boundary control rejected`);
|
||||
if (kind === "exploit") archiveExploitRejected += 1;
|
||||
else archiveControlsAccepted += 1;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const [kind, fixture] of pairs) {
|
||||
const bytes = fs.readFileSync(path.resolve(corpusRoot, fixture.path));
|
||||
let parsed;
|
||||
let rejected = false;
|
||||
try { parsed = mcp.parseStrictJsonLine(bytes); } catch { rejected = true; }
|
||||
if (!rejected && !parserBoundaryClasses.has(corpusCase.classId)) {
|
||||
const server = new mcp.McpServer({ root: input.packageRoot, catalog });
|
||||
await server.handle({ jsonrpc: "2.0", id: -1, method: "initialize", params: { protocolVersion: "2025-06-18", capabilities: {}, clientInfo: { name: "hostile-driver", version: "1" } } });
|
||||
await server.handle({ jsonrpc: "2.0", method: "notifications/initialized", params: {} });
|
||||
const response = await server.handle(parsed);
|
||||
const payload = response?.result?.structuredContent;
|
||||
rejected = Boolean(response?.error || response?.result?.isError || payload?.ok === false);
|
||||
}
|
||||
if (kind === "exploit" && !rejected) throw new Error(`${corpusCase.classId}: input exploit accepted`);
|
||||
if (kind === "boundaryControl" && rejected) throw new Error(`${corpusCase.classId}: input boundary control rejected`);
|
||||
if (kind === "exploit") inputExploitRejected += 1;
|
||||
else inputControlsAccepted += 1;
|
||||
}
|
||||
}
|
||||
return {
|
||||
schemaVersion: 1,
|
||||
ok: true,
|
||||
executions: manifest.classes.length * 2,
|
||||
archiveExploitRejected,
|
||||
archiveControlsAccepted,
|
||||
inputExploitRejected,
|
||||
inputControlsAccepted,
|
||||
};
|
||||
}
|
||||
|
||||
const input = JSON.parse(fs.readFileSync(0, "utf8"));
|
||||
main(input).then((result) => process.stdout.write(`${JSON.stringify(result)}\n`)).catch((error) => {
|
||||
process.stderr.write(`${error.stack || error.message}\n`);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user