@securecode-ai/mcp 0.3.9 → 0.4.1
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 +107 -13
- package/dist/api/client.d.ts +1 -1
- package/dist/api/client.js +2 -1
- package/dist/api/client.js.map +1 -1
- package/dist/api/types.d.ts +18 -0
- package/dist/attack/agentScanExecutor.js +159 -5
- package/dist/attack/agentScanExecutor.js.map +1 -1
- package/dist/attack/agentScanLoop.js +157 -3
- package/dist/attack/agentScanLoop.js.map +1 -1
- package/dist/attack/agentScanProtocol.d.ts +47 -5
- package/dist/attack/agentScanProtocol.js +3 -3
- package/dist/index.js +218 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.js +5 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.js +80 -3
- package/dist/mcp/tools.js.map +1 -1
- package/dist/project-map/agentMemory.d.ts +75 -0
- package/dist/project-map/agentMemory.js +230 -0
- package/dist/project-map/agentMemory.js.map +1 -0
- package/dist/project-map/crossFileTaintTracker.d.ts +51 -0
- package/dist/project-map/crossFileTaintTracker.js +429 -0
- package/dist/project-map/crossFileTaintTracker.js.map +1 -0
- package/dist/project-map/endpointDiscovery.d.ts +24 -0
- package/dist/project-map/endpointDiscovery.js +101 -0
- package/dist/project-map/endpointDiscovery.js.map +1 -0
- package/dist/project-map/guardEvaluator.js +37 -0
- package/dist/project-map/guardEvaluator.js.map +1 -1
- package/dist/project-map/guardPatterns.js +16 -5
- package/dist/project-map/guardPatterns.js.map +1 -1
- package/dist/project-map/sanitizers.js +10 -0
- package/dist/project-map/sanitizers.js.map +1 -1
- package/dist/project-map/scanCache.d.ts +67 -0
- package/dist/project-map/scanCache.js +169 -0
- package/dist/project-map/scanCache.js.map +1 -0
- package/dist/project-map/sinkRegistry.js +165 -0
- package/dist/project-map/sinkRegistry.js.map +1 -1
- package/dist/project-map/taintSources.d.ts +19 -1
- package/dist/project-map/taintSources.js +69 -2
- package/dist/project-map/taintSources.js.map +1 -1
- package/dist/project-map/taintTracker.d.ts +4 -1
- package/dist/project-map/taintTracker.js +188 -5
- package/dist/project-map/taintTracker.js.map +1 -1
- package/dist/tools/agentMemoryTools.d.ts +18 -0
- package/dist/tools/agentMemoryTools.js +107 -0
- package/dist/tools/agentMemoryTools.js.map +1 -0
- package/dist/tools/agentScan.d.ts +8 -7
- package/dist/tools/agentScan.js +245 -23
- package/dist/tools/agentScan.js.map +1 -1
- package/dist/utils/files.js +19 -2
- package/dist/utils/files.js.map +1 -1
- package/dist/utils/listFiles.d.ts +17 -0
- package/dist/utils/listFiles.js +126 -0
- package/dist/utils/listFiles.js.map +1 -0
- package/dist/utils/listImports.d.ts +15 -0
- package/dist/utils/listImports.js +164 -0
- package/dist/utils/listImports.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardEvaluator.js","sourceRoot":"","sources":["../../src/project-map/guardEvaluator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;
|
|
1
|
+
{"version":3,"file":"guardEvaluator.js","sourceRoot":"","sources":["../../src/project-map/guardEvaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,16 +76,16 @@ exports.GUARD_EFFECTIVENESS = {
|
|
|
76
76
|
ssrf: false,
|
|
77
77
|
},
|
|
78
78
|
'auth-jwt-verify': {
|
|
79
|
-
broken_access_control:
|
|
79
|
+
broken_access_control: false, // JWT verifies identity, NOT authorization to a specific resource
|
|
80
80
|
},
|
|
81
81
|
'auth-jwt-verify-noalg': {
|
|
82
82
|
broken_access_control: false, // algorithm confusion bypass
|
|
83
83
|
},
|
|
84
84
|
'auth-session': {
|
|
85
|
-
broken_access_control:
|
|
85
|
+
broken_access_control: false, // Session checks identity, NOT resource-level authorization
|
|
86
86
|
},
|
|
87
87
|
'auth-api-key': {
|
|
88
|
-
broken_access_control:
|
|
88
|
+
broken_access_control: false, // API key checks identity, NOT resource-level authorization
|
|
89
89
|
},
|
|
90
90
|
'auth-none': {
|
|
91
91
|
broken_access_control: false,
|
|
@@ -125,9 +125,18 @@ exports.GUARD_BYPASS_EXAMPLES = {
|
|
|
125
125
|
'sanitizer-numeric': {
|
|
126
126
|
insecure_deserialization: "parseInt doesn't validate serialized objects",
|
|
127
127
|
},
|
|
128
|
+
'auth-jwt-verify': {
|
|
129
|
+
broken_access_control: "JWT verifies identity (authentication) but does not check if the user is authorized to access or modify this specific resource. IDOR, privilege escalation, and missing ownership checks are not prevented.",
|
|
130
|
+
},
|
|
128
131
|
'auth-jwt-verify-noalg': {
|
|
129
132
|
broken_access_control: "Algorithm confusion: sign with HS256 using the public RSA key as the secret",
|
|
130
133
|
},
|
|
134
|
+
'auth-session': {
|
|
135
|
+
broken_access_control: "Session check verifies identity (authentication) but does not check if the user is authorized to access or modify this specific resource. Any authenticated user could access or modify other users' resources (IDOR).",
|
|
136
|
+
},
|
|
137
|
+
'auth-api-key': {
|
|
138
|
+
broken_access_control: "API key verifies identity but does not check resource-level authorization",
|
|
139
|
+
},
|
|
131
140
|
'allowlist-dynamic': {
|
|
132
141
|
sql_injection: "User-controlled allowlist key: attacker sets key to their payload",
|
|
133
142
|
xss: "User-controlled allowlist key: attacker sets key to <script>",
|
|
@@ -164,10 +173,12 @@ exports.GUARD_EFFECTIVE_REASONS = {
|
|
|
164
173
|
xss: 'Literal allowlist rejects any value not in the set',
|
|
165
174
|
},
|
|
166
175
|
'auth-jwt-verify': {
|
|
167
|
-
|
|
176
|
+
// JWT auth is no longer marked as effective for broken_access_control
|
|
177
|
+
// because it only proves identity, not resource authorization.
|
|
168
178
|
},
|
|
169
179
|
'auth-session': {
|
|
170
|
-
|
|
180
|
+
// Session auth is no longer marked as effective for broken_access_control
|
|
181
|
+
// because it only proves identity, not resource authorization.
|
|
171
182
|
},
|
|
172
183
|
};
|
|
173
184
|
//# sourceMappingURL=guardPatterns.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardPatterns.js","sourceRoot":"","sources":["../../src/project-map/guardPatterns.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAkDH;;;;;;;GAOG;AACU,QAAA,mBAAmB,GAA4D;IACxF,mBAAmB,EAAE;QACjB,aAAa,EAAE,IAAI,EAAQ,iCAAiC;QAC5D,eAAe,EAAE,IAAI,EAAM,sCAAsC;QACjE,iBAAiB,EAAE,IAAI,EAAI,sCAAsC;QACjE,GAAG,EAAE,IAAI,EAAkB,kCAAkC;QAC7D,aAAa,EAAE,IAAI,EAAQ,wBAAwB;QACnD,cAAc,EAAE,IAAI,EAAO,0BAA0B;QACrD,IAAI,EAAE,IAAI,EAAiB,wBAAwB;QACnD,mBAAmB,EAAE,IAAI,EAAE,gCAAgC;KAC9D;IACD,gBAAgB,EAAE;QACd,GAAG,EAAE,IAAI,EAAkB,0BAA0B;QACrD,aAAa,EAAE,KAAK,EAAO,mCAAmC;QAC9D,iBAAiB,EAAE,KAAK;QACxB,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,KAAK;QACrB,IAAI,EAAE,KAAK;QACX,mBAAmB,EAAE,KAAK;KAC7B;IACD,eAAe,EAAE;QACb,aAAa,EAAE,IAAI,EAAQ,wCAAwC;QACnE,GAAG,EAAE,KAAK,EAAkB,iCAAiC;QAC7D,aAAa,EAAE,KAAK;QACpB,iBAAiB,EAAE,KAAK;QACxB,IAAI,EAAE,IAAI,EAAkB,+CAA+C;QAC3E,cAAc,EAAE,KAAK;KACxB;IACD,qBAAqB,EAAE;QACnB,aAAa,EAAE,IAAI,EAAS,kCAAkC;QAC9D,eAAe,EAAE,KAAK;QACtB,iBAAiB,EAAE,KAAK;QACxB,GAAG,EAAE,KAAK;KACb;IACD,mBAAmB,EAAE;QACjB,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;QACrB,iBAAiB,EAAE,IAAI;QACvB,GAAG,EAAE,IAAI;QACT,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,IAAI,EAAE,IAAI;QACV,mBAAmB,EAAE,IAAI;KAC5B;IACD,mBAAmB,EAAE;QACjB,4EAA4E;QAC5E,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,KAAK;QACtB,iBAAiB,EAAE,KAAK;QACxB,GAAG,EAAE,KAAK;QACV,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,KAAK;QACrB,IAAI,EAAE,KAAK;KACd;IACD,iBAAiB,EAAE;QACf,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"guardPatterns.js","sourceRoot":"","sources":["../../src/project-map/guardPatterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,16 @@ exports.SANITIZERS = [
|
|
|
43
43
|
{ method: 'ltrim', receiver: 'validator', languages: ['javascript', 'typescript', 'tsx'] },
|
|
44
44
|
{ method: 'rtrim', receiver: 'validator', languages: ['javascript', 'typescript', 'tsx'] },
|
|
45
45
|
{ method: 'trim', receiver: 'validator', languages: ['javascript', 'typescript', 'tsx'] },
|
|
46
|
+
// ── JS/TS — Zod schema validation ─────────────────────────────────────
|
|
47
|
+
{ method: 'parse', languages: ['javascript', 'typescript', 'tsx'] },
|
|
48
|
+
{ method: 'safeParse', languages: ['javascript', 'typescript', 'tsx'] },
|
|
49
|
+
// ── JS/TS — Effect-TS Schema validation ──────────────────────────────
|
|
50
|
+
{ method: 'decodeSync', languages: ['javascript', 'typescript', 'tsx'] },
|
|
51
|
+
{ method: 'decode', languages: ['javascript', 'typescript', 'tsx'] },
|
|
52
|
+
{ method: 'encodeSync', languages: ['javascript', 'typescript', 'tsx'] },
|
|
53
|
+
// ── JS/TS — Joi/express-validator ────────────────────────────────────
|
|
54
|
+
{ method: 'validate', languages: ['javascript', 'typescript', 'tsx'] },
|
|
55
|
+
{ method: 'assert', languages: ['javascript', 'typescript', 'tsx'] },
|
|
46
56
|
// ── Python — type coercions ──────────────────────────────────────────
|
|
47
57
|
{ method: 'int', languages: ['python'] },
|
|
48
58
|
{ method: 'float', languages: ['python'] },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizers.js","sourceRoot":"","sources":["../../src/project-map/sanitizers.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;
|
|
1
|
+
{"version":3,"file":"sanitizers.js","sourceRoot":"","sources":["../../src/project-map/sanitizers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scan result cache — stores agent scan findings keyed by file content hash.
|
|
3
|
+
*
|
|
4
|
+
* Lives in `.securecode/scan-cache.json` alongside the project map cache.
|
|
5
|
+
* Invalidates when:
|
|
6
|
+
* - File content changes (hash mismatch)
|
|
7
|
+
* - Agent scan prompt version changes (AGENT_SCAN_CACHE_VERSION bump)
|
|
8
|
+
* - Cache entry expires (TTL)
|
|
9
|
+
*
|
|
10
|
+
* This makes scans deterministic: re-scanning an unchanged file returns the
|
|
11
|
+
* cached findings instantly without calling the LLM again.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Bump this when the agent scan prompt or logic changes in a way that
|
|
15
|
+
* would produce different findings for the same file. All cached entries
|
|
16
|
+
* with an older version are invalidated.
|
|
17
|
+
*/
|
|
18
|
+
export declare const AGENT_SCAN_CACHE_VERSION = 19;
|
|
19
|
+
export interface ScanCacheEntry {
|
|
20
|
+
/** SHA-256 of the file content at scan time. */
|
|
21
|
+
fileHash: string;
|
|
22
|
+
/** Agent scan cache version when this entry was created. */
|
|
23
|
+
version: number;
|
|
24
|
+
/** Unix timestamp (ms) when the entry was created. */
|
|
25
|
+
timestamp: number;
|
|
26
|
+
/** The findings from the scan. */
|
|
27
|
+
findings: any[];
|
|
28
|
+
/** Scan status (completed, capped, etc.). */
|
|
29
|
+
status: string;
|
|
30
|
+
/** Summary from the agent. */
|
|
31
|
+
summary?: string;
|
|
32
|
+
/** Steps used by the agent. */
|
|
33
|
+
stepsUsed: number;
|
|
34
|
+
/** Cost in USD. */
|
|
35
|
+
costSpentUsd: number;
|
|
36
|
+
/** File path (for debugging). */
|
|
37
|
+
filePath: string;
|
|
38
|
+
}
|
|
39
|
+
export interface ScanCacheData {
|
|
40
|
+
version: number;
|
|
41
|
+
entries: Record<string, ScanCacheEntry>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Read the scan cache. Returns null if the cache file doesn't exist
|
|
45
|
+
* or is corrupted.
|
|
46
|
+
*/
|
|
47
|
+
export declare function readScanCache(workspaceRoot: string): ScanCacheData | null;
|
|
48
|
+
/**
|
|
49
|
+
* Look up a cached scan result by file path + content hash.
|
|
50
|
+
* Returns null if not found, expired, or version mismatch.
|
|
51
|
+
*/
|
|
52
|
+
export declare function getCachedScan(workspaceRoot: string, filePath: string, content: string): ScanCacheEntry | null;
|
|
53
|
+
/**
|
|
54
|
+
* Write a scan result to the cache. Merges with existing entries.
|
|
55
|
+
*/
|
|
56
|
+
export declare function writeCachedScan(workspaceRoot: string, filePath: string, content: string, result: {
|
|
57
|
+
findings: any[];
|
|
58
|
+
status: string;
|
|
59
|
+
summary?: string;
|
|
60
|
+
stepsUsed: number;
|
|
61
|
+
costSpentUsd: number;
|
|
62
|
+
}): void;
|
|
63
|
+
/**
|
|
64
|
+
* Clear the scan cache for a workspace (e.g., when the user requests
|
|
65
|
+
* a fresh scan with --no-cache).
|
|
66
|
+
*/
|
|
67
|
+
export declare function clearScanCache(workspaceRoot: string): void;
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Scan result cache — stores agent scan findings keyed by file content hash.
|
|
4
|
+
*
|
|
5
|
+
* Lives in `.securecode/scan-cache.json` alongside the project map cache.
|
|
6
|
+
* Invalidates when:
|
|
7
|
+
* - File content changes (hash mismatch)
|
|
8
|
+
* - Agent scan prompt version changes (AGENT_SCAN_CACHE_VERSION bump)
|
|
9
|
+
* - Cache entry expires (TTL)
|
|
10
|
+
*
|
|
11
|
+
* This makes scans deterministic: re-scanning an unchanged file returns the
|
|
12
|
+
* cached findings instantly without calling the LLM again.
|
|
13
|
+
*/
|
|
14
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
+
var ownKeys = function(o) {
|
|
32
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
+
var ar = [];
|
|
34
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
+
return ar;
|
|
36
|
+
};
|
|
37
|
+
return ownKeys(o);
|
|
38
|
+
};
|
|
39
|
+
return function (mod) {
|
|
40
|
+
if (mod && mod.__esModule) return mod;
|
|
41
|
+
var result = {};
|
|
42
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
+
__setModuleDefault(result, mod);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.AGENT_SCAN_CACHE_VERSION = void 0;
|
|
49
|
+
exports.readScanCache = readScanCache;
|
|
50
|
+
exports.getCachedScan = getCachedScan;
|
|
51
|
+
exports.writeCachedScan = writeCachedScan;
|
|
52
|
+
exports.clearScanCache = clearScanCache;
|
|
53
|
+
const fs = __importStar(require("fs"));
|
|
54
|
+
const path = __importStar(require("path"));
|
|
55
|
+
const crypto = __importStar(require("crypto"));
|
|
56
|
+
const CACHE_DIR = '.securecode';
|
|
57
|
+
const CACHE_FILE = 'scan-cache.json';
|
|
58
|
+
/**
|
|
59
|
+
* Bump this when the agent scan prompt or logic changes in a way that
|
|
60
|
+
* would produce different findings for the same file. All cached entries
|
|
61
|
+
* with an older version are invalidated.
|
|
62
|
+
*/
|
|
63
|
+
exports.AGENT_SCAN_CACHE_VERSION = 19;
|
|
64
|
+
/** Cache TTL: 7 days. Findings older than this are re-scanned. */
|
|
65
|
+
const CACHE_TTL_MS = 7 * 24 * 60 * 60 * 1000;
|
|
66
|
+
function cachePath(workspaceRoot) {
|
|
67
|
+
return path.join(workspaceRoot, CACHE_DIR, CACHE_FILE);
|
|
68
|
+
}
|
|
69
|
+
function hashContent(content) {
|
|
70
|
+
return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Read the scan cache. Returns null if the cache file doesn't exist
|
|
74
|
+
* or is corrupted.
|
|
75
|
+
*/
|
|
76
|
+
function readScanCache(workspaceRoot) {
|
|
77
|
+
const p = cachePath(workspaceRoot);
|
|
78
|
+
try {
|
|
79
|
+
if (!fs.existsSync(p))
|
|
80
|
+
return null;
|
|
81
|
+
const raw = fs.readFileSync(p, 'utf8');
|
|
82
|
+
const data = JSON.parse(raw);
|
|
83
|
+
if (!data.version || data.version > exports.AGENT_SCAN_CACHE_VERSION) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
return data;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Look up a cached scan result by file path + content hash.
|
|
94
|
+
* Returns null if not found, expired, or version mismatch.
|
|
95
|
+
*/
|
|
96
|
+
function getCachedScan(workspaceRoot, filePath, content) {
|
|
97
|
+
const cache = readScanCache(workspaceRoot);
|
|
98
|
+
if (!cache)
|
|
99
|
+
return null;
|
|
100
|
+
const fileHash = hashContent(content);
|
|
101
|
+
const key = `${filePath}:${fileHash}`;
|
|
102
|
+
const entry = cache.entries[key];
|
|
103
|
+
if (!entry)
|
|
104
|
+
return null;
|
|
105
|
+
// Version check — invalidate on prompt/logic changes
|
|
106
|
+
if (entry.version !== exports.AGENT_SCAN_CACHE_VERSION)
|
|
107
|
+
return null;
|
|
108
|
+
// TTL check — re-scan after CACHE_TTL_MS
|
|
109
|
+
if (Date.now() - entry.timestamp > CACHE_TTL_MS)
|
|
110
|
+
return null;
|
|
111
|
+
return entry;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Write a scan result to the cache. Merges with existing entries.
|
|
115
|
+
*/
|
|
116
|
+
function writeCachedScan(workspaceRoot, filePath, content, result) {
|
|
117
|
+
const dir = path.join(workspaceRoot, CACHE_DIR);
|
|
118
|
+
if (!fs.existsSync(dir)) {
|
|
119
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
120
|
+
}
|
|
121
|
+
const fileHash = hashContent(content);
|
|
122
|
+
const key = `${filePath}:${fileHash}`;
|
|
123
|
+
// Read existing cache or create new
|
|
124
|
+
let cache;
|
|
125
|
+
const existing = readScanCache(workspaceRoot);
|
|
126
|
+
if (existing && existing.version === exports.AGENT_SCAN_CACHE_VERSION) {
|
|
127
|
+
cache = existing;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
cache = { version: exports.AGENT_SCAN_CACHE_VERSION, entries: {} };
|
|
131
|
+
}
|
|
132
|
+
// Prune expired entries (keep cache from growing unbounded)
|
|
133
|
+
const now = Date.now();
|
|
134
|
+
for (const [k, e] of Object.entries(cache.entries)) {
|
|
135
|
+
if (now - e.timestamp > CACHE_TTL_MS) {
|
|
136
|
+
delete cache.entries[k];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Add/update the entry
|
|
140
|
+
cache.entries[key] = {
|
|
141
|
+
fileHash,
|
|
142
|
+
version: exports.AGENT_SCAN_CACHE_VERSION,
|
|
143
|
+
timestamp: now,
|
|
144
|
+
findings: result.findings,
|
|
145
|
+
status: result.status,
|
|
146
|
+
summary: result.summary,
|
|
147
|
+
stepsUsed: result.stepsUsed,
|
|
148
|
+
costSpentUsd: result.costSpentUsd,
|
|
149
|
+
filePath,
|
|
150
|
+
};
|
|
151
|
+
// Atomic write
|
|
152
|
+
const p = cachePath(workspaceRoot);
|
|
153
|
+
const tmp = p + '.tmp';
|
|
154
|
+
fs.writeFileSync(tmp, JSON.stringify(cache, null, 2), 'utf8');
|
|
155
|
+
fs.renameSync(tmp, p);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Clear the scan cache for a workspace (e.g., when the user requests
|
|
159
|
+
* a fresh scan with --no-cache).
|
|
160
|
+
*/
|
|
161
|
+
function clearScanCache(workspaceRoot) {
|
|
162
|
+
const p = cachePath(workspaceRoot);
|
|
163
|
+
try {
|
|
164
|
+
if (fs.existsSync(p))
|
|
165
|
+
fs.unlinkSync(p);
|
|
166
|
+
}
|
|
167
|
+
catch { /* best effort */ }
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=scanCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanCache.js","sourceRoot":"","sources":["../../src/project-map/scanCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -121,6 +121,33 @@ exports.SINK_REGISTRY = [
|
|
|
121
121
|
requireNonLiteralArg: true,
|
|
122
122
|
description: 'Prisma $queryRaw with interpolation — SQL injection',
|
|
123
123
|
},
|
|
124
|
+
{
|
|
125
|
+
id: 'executeRaw',
|
|
126
|
+
canonicalType: 'sql_injection',
|
|
127
|
+
severity: 'Critical',
|
|
128
|
+
languages: ['javascript', 'typescript', 'tsx'],
|
|
129
|
+
matchers: [{ kind: 'call', method: '$executeRaw', receiver: '*' }],
|
|
130
|
+
requireNonLiteralArg: true,
|
|
131
|
+
description: 'Prisma $executeRaw with interpolation — SQL injection',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: 'queryRawUnsafe',
|
|
135
|
+
canonicalType: 'sql_injection',
|
|
136
|
+
severity: 'Critical',
|
|
137
|
+
languages: ['javascript', 'typescript', 'tsx'],
|
|
138
|
+
matchers: [{ kind: 'call', method: '$queryRawUnsafe', receiver: '*' }],
|
|
139
|
+
requireNonLiteralArg: true,
|
|
140
|
+
description: 'Prisma $queryRawUnsafe with interpolation — SQL injection',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
id: 'executeRawUnsafe',
|
|
144
|
+
canonicalType: 'sql_injection',
|
|
145
|
+
severity: 'Critical',
|
|
146
|
+
languages: ['javascript', 'typescript', 'tsx'],
|
|
147
|
+
matchers: [{ kind: 'call', method: '$executeRawUnsafe', receiver: '*' }],
|
|
148
|
+
requireNonLiteralArg: true,
|
|
149
|
+
description: 'Prisma $executeRawUnsafe with interpolation — SQL injection',
|
|
150
|
+
},
|
|
124
151
|
{
|
|
125
152
|
id: 'sql-concat',
|
|
126
153
|
canonicalType: 'sql_injection',
|
|
@@ -356,6 +383,144 @@ exports.SINK_REGISTRY = [
|
|
|
356
383
|
requireUserSource: true,
|
|
357
384
|
description: 'res.setHeader/append with user-controlled value — header injection',
|
|
358
385
|
},
|
|
386
|
+
// ── SSTI (Python) ────────────────────────────────────────────────────────
|
|
387
|
+
{
|
|
388
|
+
id: 'py-render-template-string',
|
|
389
|
+
canonicalType: 'ssti',
|
|
390
|
+
severity: 'High',
|
|
391
|
+
languages: ['python'],
|
|
392
|
+
matchers: [{ kind: 'call', method: 'render_template_string' }],
|
|
393
|
+
requireNonLiteralArg: true,
|
|
394
|
+
description: 'Flask render_template_string with user-controlled template — SSTI',
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
id: 'py-jinja2-template',
|
|
398
|
+
canonicalType: 'ssti',
|
|
399
|
+
severity: 'High',
|
|
400
|
+
languages: ['python'],
|
|
401
|
+
matchers: [{ kind: 'call', method: 'Template' }],
|
|
402
|
+
requireNonLiteralArg: true,
|
|
403
|
+
description: 'Jinja2 Template() with user-controlled string — SSTI',
|
|
404
|
+
},
|
|
405
|
+
// ── SSRF (Python) ───────────────────────────────────────────────────────
|
|
406
|
+
{
|
|
407
|
+
id: 'py-ssrf-requests',
|
|
408
|
+
canonicalType: 'ssrf',
|
|
409
|
+
severity: 'High',
|
|
410
|
+
languages: ['python'],
|
|
411
|
+
matchers: [
|
|
412
|
+
{ kind: 'call', method: 'get', receiver: 'requests' },
|
|
413
|
+
{ kind: 'call', method: 'post', receiver: 'requests' },
|
|
414
|
+
{ kind: 'call', method: 'put', receiver: 'requests' },
|
|
415
|
+
{ kind: 'call', method: 'head', receiver: 'requests' },
|
|
416
|
+
{ kind: 'call', method: 'delete', receiver: 'requests' },
|
|
417
|
+
{ kind: 'call', method: 'request', receiver: 'requests' },
|
|
418
|
+
],
|
|
419
|
+
requireUserSource: true,
|
|
420
|
+
description: 'requests.get/post with user-controlled URL — Server-Side Request Forgery',
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
id: 'py-ssrf-urllib',
|
|
424
|
+
canonicalType: 'ssrf',
|
|
425
|
+
severity: 'High',
|
|
426
|
+
languages: ['python'],
|
|
427
|
+
matchers: [
|
|
428
|
+
{ kind: 'call', method: 'urlopen', receiver: 'urllib.request' },
|
|
429
|
+
{ kind: 'call', method: 'urlopen', receiver: 'urllib' },
|
|
430
|
+
],
|
|
431
|
+
requireUserSource: true,
|
|
432
|
+
description: 'urllib.request.urlopen with user-controlled URL — SSRF',
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
id: 'py-ssrf-httpx',
|
|
436
|
+
canonicalType: 'ssrf',
|
|
437
|
+
severity: 'High',
|
|
438
|
+
languages: ['python'],
|
|
439
|
+
matchers: [
|
|
440
|
+
{ kind: 'call', method: 'get', receiver: 'httpx' },
|
|
441
|
+
{ kind: 'call', method: 'post', receiver: 'httpx' },
|
|
442
|
+
],
|
|
443
|
+
requireUserSource: true,
|
|
444
|
+
description: 'httpx.get/post with user-controlled URL — SSRF',
|
|
445
|
+
},
|
|
446
|
+
// ── Open redirect (Python) ──────────────────────────────────────────────
|
|
447
|
+
{
|
|
448
|
+
id: 'py-redirect-flask',
|
|
449
|
+
canonicalType: 'open_redirect',
|
|
450
|
+
severity: 'Medium',
|
|
451
|
+
languages: ['python'],
|
|
452
|
+
matchers: [{ kind: 'call', method: 'redirect' }],
|
|
453
|
+
requireUserSource: true,
|
|
454
|
+
description: 'flask.redirect with user-controlled URL — open redirect',
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
id: 'py-redirect-django',
|
|
458
|
+
canonicalType: 'open_redirect',
|
|
459
|
+
severity: 'Medium',
|
|
460
|
+
languages: ['python'],
|
|
461
|
+
matchers: [
|
|
462
|
+
{ kind: 'call', method: 'HttpResponseRedirect' },
|
|
463
|
+
{ kind: 'call', method: 'RedirectResponse' },
|
|
464
|
+
],
|
|
465
|
+
requireUserSource: true,
|
|
466
|
+
description: 'Django/FastAPI redirect with user-controlled URL — open redirect',
|
|
467
|
+
},
|
|
468
|
+
// ── Weak crypto (Python) ────────────────────────────────────────────────
|
|
469
|
+
{
|
|
470
|
+
id: 'py-md5',
|
|
471
|
+
canonicalType: 'weak_crypto',
|
|
472
|
+
severity: 'Medium',
|
|
473
|
+
languages: ['python'],
|
|
474
|
+
matchers: [{ kind: 'call', method: 'md5', receiver: 'hashlib' }],
|
|
475
|
+
description: 'hashlib.md5 — weak hashing algorithm, use SHA-256+',
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
id: 'py-sha1',
|
|
479
|
+
canonicalType: 'weak_crypto',
|
|
480
|
+
severity: 'Medium',
|
|
481
|
+
languages: ['python'],
|
|
482
|
+
matchers: [{ kind: 'call', method: 'sha1', receiver: 'hashlib' }],
|
|
483
|
+
description: 'hashlib.sha1 — weak hashing algorithm, use SHA-256+',
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
id: 'py-random-token',
|
|
487
|
+
canonicalType: 'weak_crypto',
|
|
488
|
+
severity: 'High',
|
|
489
|
+
languages: ['python'],
|
|
490
|
+
matchers: [
|
|
491
|
+
{ kind: 'call', method: 'random', receiver: 'random' },
|
|
492
|
+
{ kind: 'call', method: 'randint', receiver: 'random' },
|
|
493
|
+
{ kind: 'call', method: 'choice', receiver: 'random' },
|
|
494
|
+
],
|
|
495
|
+
requireNonLiteralArg: true,
|
|
496
|
+
description: 'random module for security-sensitive token generation — use secrets module',
|
|
497
|
+
},
|
|
498
|
+
// ── Header injection (Python) ────────────────────────────────────────────
|
|
499
|
+
{
|
|
500
|
+
id: 'py-header-set',
|
|
501
|
+
canonicalType: 'header_injection',
|
|
502
|
+
severity: 'Medium',
|
|
503
|
+
languages: ['python'],
|
|
504
|
+
matchers: [
|
|
505
|
+
{ kind: 'call', method: '__setitem__', receiver: 'response' },
|
|
506
|
+
{ kind: 'call', method: '__setitem__', receiver: 'self' },
|
|
507
|
+
],
|
|
508
|
+
requireUserSource: true,
|
|
509
|
+
description: 'Response header set with user-controlled value — header injection',
|
|
510
|
+
},
|
|
511
|
+
// ── LDAP injection (Python) ─────────────────────────────────────────────
|
|
512
|
+
{
|
|
513
|
+
id: 'py-ldap-search',
|
|
514
|
+
canonicalType: 'ldap_injection',
|
|
515
|
+
severity: 'High',
|
|
516
|
+
languages: ['python'],
|
|
517
|
+
matchers: [
|
|
518
|
+
{ kind: 'call', method: 'search_s', receiver: '*' },
|
|
519
|
+
{ kind: 'call', method: 'search', receiver: '*' },
|
|
520
|
+
],
|
|
521
|
+
requireNonLiteralArg: true,
|
|
522
|
+
description: 'LDAP search with non-literal filter — LDAP injection',
|
|
523
|
+
},
|
|
359
524
|
// ── SSTI (JS/TS/TSX) ────────────────────────────────────────────────────
|
|
360
525
|
{
|
|
361
526
|
id: 'ssti-ejs',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sinkRegistry.js","sourceRoot":"","sources":["../../src/project-map/sinkRegistry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sinkRegistry.js","sourceRoot":"","sources":["../../src/project-map/sinkRegistry.ts"],"names":[],"mappings":"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"}
|