@securecode-ai/mcp 0.4.0 → 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/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.js +206 -33
- 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
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
* (or call on a member expression) is a source if its text starts with one
|
|
6
6
|
* of the patterns below. The taint tracker uses this to seed the tainted
|
|
7
7
|
* variable set during its forward walk.
|
|
8
|
+
*
|
|
9
|
+
* Two kinds of sources:
|
|
10
|
+
* 1. Property access: `req.body`, `request.GET`, `ctx.query` — matched
|
|
11
|
+
* by prefix on the member expression text.
|
|
12
|
+
* 2. Call expression: `req.json()`, `req.formData()`, `c.req.json()` —
|
|
13
|
+
* matched by prefix on the callee text (the part before `()`).
|
|
8
14
|
*/
|
|
9
15
|
import type { SinkLanguage } from './sinkRegistry';
|
|
10
16
|
export type TaintSourceType = 'body' | 'query' | 'path' | 'header' | 'cookie' | 'stdin' | 'argv' | 'env';
|
|
@@ -15,16 +21,28 @@ export interface TaintSourcePattern {
|
|
|
15
21
|
sourceType: TaintSourceType;
|
|
16
22
|
/** How likely this is attacker-controlled (0-1). Body/query/path = 1.0, env = 0.5. */
|
|
17
23
|
confidence: number;
|
|
24
|
+
/**
|
|
25
|
+
* True if this source is a method call (e.g. `req.json()`), not a property
|
|
26
|
+
* access (e.g. `req.body`). When true, `matchTaintSource` also matches the
|
|
27
|
+
* callee text of a call expression — `req.json` matches `req.json()`.
|
|
28
|
+
*/
|
|
29
|
+
isCall?: boolean;
|
|
18
30
|
}
|
|
19
31
|
/**
|
|
20
32
|
* Source patterns for JS/TS/TSX and Python.
|
|
21
33
|
*
|
|
22
|
-
* JS/TS: Express, Fastify, Koa, Next.js, Lambda event.
|
|
34
|
+
* JS/TS: Express, Fastify, Koa, Next.js App Router, Hono, Lambda event, Effect-TS.
|
|
23
35
|
* Python: Flask, Django, FastAPI, sys.argv, os.environ.
|
|
24
36
|
*/
|
|
25
37
|
export declare const TAINT_SOURCES: TaintSourcePattern[];
|
|
26
38
|
/**
|
|
27
39
|
* Check if an expression's text matches a taint source pattern.
|
|
28
40
|
* Returns the matching pattern, or null if not a source.
|
|
41
|
+
*
|
|
42
|
+
* Matching logic:
|
|
43
|
+
* - Property sources (req.body): exact match, or prefix followed by `.` or `[`
|
|
44
|
+
* - Call sources (req.json): exact match (the callee text is `req.json`)
|
|
45
|
+
* or prefix followed by `.` (e.g. `req.json` matches, `req.json()` does not
|
|
46
|
+
* because the caller strips the `()` before passing the callee text).
|
|
29
47
|
*/
|
|
30
48
|
export declare function matchTaintSource(text: string, language: SinkLanguage): TaintSourcePattern | null;
|
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
* (or call on a member expression) is a source if its text starts with one
|
|
7
7
|
* of the patterns below. The taint tracker uses this to seed the tainted
|
|
8
8
|
* variable set during its forward walk.
|
|
9
|
+
*
|
|
10
|
+
* Two kinds of sources:
|
|
11
|
+
* 1. Property access: `req.body`, `request.GET`, `ctx.query` — matched
|
|
12
|
+
* by prefix on the member expression text.
|
|
13
|
+
* 2. Call expression: `req.json()`, `req.formData()`, `c.req.json()` —
|
|
14
|
+
* matched by prefix on the callee text (the part before `()`).
|
|
9
15
|
*/
|
|
10
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
17
|
exports.TAINT_SOURCES = void 0;
|
|
@@ -13,7 +19,7 @@ exports.matchTaintSource = matchTaintSource;
|
|
|
13
19
|
/**
|
|
14
20
|
* Source patterns for JS/TS/TSX and Python.
|
|
15
21
|
*
|
|
16
|
-
* JS/TS: Express, Fastify, Koa, Next.js, Lambda event.
|
|
22
|
+
* JS/TS: Express, Fastify, Koa, Next.js App Router, Hono, Lambda event, Effect-TS.
|
|
17
23
|
* Python: Flask, Django, FastAPI, sys.argv, os.environ.
|
|
18
24
|
*/
|
|
19
25
|
exports.TAINT_SOURCES = [
|
|
@@ -43,6 +49,38 @@ exports.TAINT_SOURCES = [
|
|
|
43
49
|
{ prefix: 'event.queryStringParameters', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'query', confidence: 1.0 },
|
|
44
50
|
{ prefix: 'event.pathParameters', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'path', confidence: 1.0 },
|
|
45
51
|
{ prefix: 'event.headers', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'header', confidence: 0.9 },
|
|
52
|
+
// ── JS/TS — Next.js App Router (call-based sources) ──────────────────
|
|
53
|
+
// Next.js App Router uses `await req.json()` / `await req.formData()`
|
|
54
|
+
// instead of `req.body` (property access). These are call expressions.
|
|
55
|
+
{ prefix: 'req.json', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
56
|
+
{ prefix: 'req.formData', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
57
|
+
{ prefix: 'req.text', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
58
|
+
{ prefix: 'req.blob', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 0.8, isCall: true },
|
|
59
|
+
{ prefix: 'req.arrayBuffer', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 0.8, isCall: true },
|
|
60
|
+
{ prefix: 'request.json', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
61
|
+
{ prefix: 'request.formData', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
62
|
+
{ prefix: 'request.text', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
63
|
+
// Next.js searchParams (route handler params destructure: { searchParams })
|
|
64
|
+
// is a bare identifier — too noisy to match generically. The agent
|
|
65
|
+
// prompt handles this case via reasoning.
|
|
66
|
+
// ── JS/TS — Hono (call-based sources) ────────────────────────────────
|
|
67
|
+
{ prefix: 'c.req.json', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
68
|
+
{ prefix: 'c.req.text', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
69
|
+
{ prefix: 'c.req.formData', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
70
|
+
{ prefix: 'c.req.query', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'query', confidence: 1.0 },
|
|
71
|
+
{ prefix: 'c.req.param', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'path', confidence: 1.0, isCall: true },
|
|
72
|
+
{ prefix: 'c.req.header', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'header', confidence: 0.9, isCall: true },
|
|
73
|
+
{ prefix: 'c.req.cookie', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'cookie', confidence: 0.9, isCall: true },
|
|
74
|
+
// ── JS/TS — Effect-TS (HttpServerRequest) ────────────────────────────
|
|
75
|
+
// Effect-TS uses HttpServerRequest.readBody / readUrl / headers.
|
|
76
|
+
// These are method calls on the request object.
|
|
77
|
+
{ prefix: 'HttpServerRequest.readBody', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
78
|
+
{ prefix: 'HttpServerRequest.readUrl', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'query', confidence: 1.0, isCall: true },
|
|
79
|
+
{ prefix: 'HttpServerRequest.readHeaders', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'header', confidence: 0.9, isCall: true },
|
|
80
|
+
{ prefix: 'HttpServerRequest.headers', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'header', confidence: 0.9 },
|
|
81
|
+
{ prefix: 'HttpServerRequest.url', languages: ['javascript', 'typescript', 'tsx'], sourceType: 'query', confidence: 1.0 },
|
|
82
|
+
// Generic `request.json()` (covers Fastify, Remix, Astro, etc.)
|
|
83
|
+
// already covered by the `request.json` call-source above.
|
|
46
84
|
// ── Python — Flask / Django / FastAPI ────────────────────────────────
|
|
47
85
|
{ prefix: 'request.GET', languages: ['python'], sourceType: 'query', confidence: 1.0 },
|
|
48
86
|
{ prefix: 'request.POST', languages: ['python'], sourceType: 'body', confidence: 1.0 },
|
|
@@ -58,16 +96,45 @@ exports.TAINT_SOURCES = [
|
|
|
58
96
|
{ prefix: 'sys.argv', languages: ['python'], sourceType: 'argv', confidence: 0.7 },
|
|
59
97
|
{ prefix: 'os.environ', languages: ['python'], sourceType: 'env', confidence: 0.5 },
|
|
60
98
|
{ prefix: 'os.getenv', languages: ['python'], sourceType: 'env', confidence: 0.5 },
|
|
99
|
+
// ── Python — FastAPI (call-based sources) ───────────────────────────
|
|
100
|
+
// FastAPI uses Depends(), Query(), Path(), Body(), Header() as function
|
|
101
|
+
// parameters. These are call expressions in the function signature.
|
|
102
|
+
{ prefix: 'Query', languages: ['python'], sourceType: 'query', confidence: 1.0, isCall: true },
|
|
103
|
+
{ prefix: 'Path', languages: ['python'], sourceType: 'path', confidence: 1.0, isCall: true },
|
|
104
|
+
{ prefix: 'Body', languages: ['python'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
105
|
+
{ prefix: 'Header', languages: ['python'], sourceType: 'header', confidence: 0.9, isCall: true },
|
|
106
|
+
{ prefix: 'Cookie', languages: ['python'], sourceType: 'cookie', confidence: 0.9, isCall: true },
|
|
107
|
+
{ prefix: 'Form', languages: ['python'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
108
|
+
{ prefix: 'File', languages: ['python'], sourceType: 'body', confidence: 1.0, isCall: true },
|
|
109
|
+
// ── Python — Django (additional patterns) ───────────────────────────
|
|
110
|
+
{ prefix: 'request.path_info', languages: ['python'], sourceType: 'path', confidence: 1.0 },
|
|
111
|
+
{ prefix: 'request.META', languages: ['python'], sourceType: 'header', confidence: 0.9 },
|
|
112
|
+
{ prefix: 'request.FILES', languages: ['python'], sourceType: 'body', confidence: 0.9 },
|
|
61
113
|
];
|
|
62
114
|
/**
|
|
63
115
|
* Check if an expression's text matches a taint source pattern.
|
|
64
116
|
* Returns the matching pattern, or null if not a source.
|
|
117
|
+
*
|
|
118
|
+
* Matching logic:
|
|
119
|
+
* - Property sources (req.body): exact match, or prefix followed by `.` or `[`
|
|
120
|
+
* - Call sources (req.json): exact match (the callee text is `req.json`)
|
|
121
|
+
* or prefix followed by `.` (e.g. `req.json` matches, `req.json()` does not
|
|
122
|
+
* because the caller strips the `()` before passing the callee text).
|
|
65
123
|
*/
|
|
66
124
|
function matchTaintSource(text, language) {
|
|
67
125
|
for (const src of exports.TAINT_SOURCES) {
|
|
68
126
|
if (!src.languages.includes(language))
|
|
69
127
|
continue;
|
|
70
|
-
|
|
128
|
+
if (src.isCall) {
|
|
129
|
+
// Call source: match exact callee text or prefix (e.g. `req.json`
|
|
130
|
+
// matches `req.json` exactly, and `req.json` matches `req.json.foo`
|
|
131
|
+
// which shouldn't happen, but be safe).
|
|
132
|
+
if (text === src.prefix || text.startsWith(src.prefix + '.')) {
|
|
133
|
+
return src;
|
|
134
|
+
}
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
// Property source: exact match or prefix match (req.body.q starts with req.body)
|
|
71
138
|
if (text === src.prefix || text.startsWith(src.prefix + '.') || text.startsWith(src.prefix + '[')) {
|
|
72
139
|
return src;
|
|
73
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taintSources.js","sourceRoot":"","sources":["../../src/project-map/taintSources.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"taintSources.js","sourceRoot":"","sources":["../../src/project-map/taintSources.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,8 +35,11 @@ export interface TaintResult {
|
|
|
35
35
|
*
|
|
36
36
|
* @param source the file's source text
|
|
37
37
|
* @param language the grammar to parse with
|
|
38
|
+
* @param seedParams optional: parameter names to pre-taint as sources
|
|
39
|
+
* (used by cross-file taint tracking to analyze
|
|
40
|
+
* imported functions)
|
|
38
41
|
* @returns taint results, one per tainted sink argument. Empty when the
|
|
39
42
|
* grammar is missing, the file fails to parse, or no tainted data
|
|
40
43
|
* reaches any sink (best-effort: never throws).
|
|
41
44
|
*/
|
|
42
|
-
export declare function trackTaint(source: string, language: SinkLanguage): Promise<TaintResult[]>;
|
|
45
|
+
export declare function trackTaint(source: string, language: SinkLanguage, seedParams?: string[]): Promise<TaintResult[]>;
|
|
@@ -143,6 +143,24 @@ function checkExpressionTaint(node, scope, sourceText, language, taintReturningF
|
|
|
143
143
|
sanitizersApplied: [],
|
|
144
144
|
};
|
|
145
145
|
}
|
|
146
|
+
// General argument propagation — for non-sanitizer, non-source,
|
|
147
|
+
// non-taint-returning calls, check if any argument is tainted.
|
|
148
|
+
// Catches passthrough wrappers like SQLAlchemy text(),
|
|
149
|
+
// base64.b64decode(), str(), etc.
|
|
150
|
+
for (const arg of p.args) {
|
|
151
|
+
const argTaint = checkExpressionTaint(arg, scope, sourceText, language, taintReturningFns);
|
|
152
|
+
if (argTaint) {
|
|
153
|
+
return {
|
|
154
|
+
...argTaint,
|
|
155
|
+
path: [...argTaint.path, {
|
|
156
|
+
line: node.startPosition.row + 1,
|
|
157
|
+
variable: sourceText.slice(node.startIndex, node.endIndex),
|
|
158
|
+
operation: 'call-pass',
|
|
159
|
+
description: `Tainted data passed through ${p.method}()`,
|
|
160
|
+
}],
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
146
164
|
}
|
|
147
165
|
// Also check if the receiver of a method call is tainted
|
|
148
166
|
// e.g. const x = req.body; x.toString() — x is tainted, so x.toString() is tainted
|
|
@@ -169,7 +187,8 @@ function checkExpressionTaint(node, scope, sourceText, language, taintReturningF
|
|
|
169
187
|
return null;
|
|
170
188
|
}
|
|
171
189
|
// 4. Binary expression (concatenation) — check both operands
|
|
172
|
-
if (node.type === 'binary_expression' || node.type === 'binary_operator_expression'
|
|
190
|
+
if (node.type === 'binary_expression' || node.type === 'binary_operator_expression'
|
|
191
|
+
|| node.type === 'binary_operator') {
|
|
173
192
|
const left = node.child(0);
|
|
174
193
|
const right = node.child(node.childCount - 1);
|
|
175
194
|
const leftTaint = left ? checkExpressionTaint(left, scope, sourceText, language, taintReturningFns) : null;
|
|
@@ -313,11 +332,48 @@ function patternNames(pattern, sourceText) {
|
|
|
313
332
|
* Process a single variable declarator: `const x = expr` or `const { a, b } = expr`.
|
|
314
333
|
* If the RHS is tainted, the LHS variable(s) are marked tainted in the scope.
|
|
315
334
|
*/
|
|
316
|
-
function processDeclarator(decl, scope, sourceText, language, taintReturningFns) {
|
|
335
|
+
function processDeclarator(decl, scope, sourceText, language, taintReturningFns, onSink) {
|
|
317
336
|
const lhs = decl.child(0);
|
|
318
337
|
const rhs = decl.child(decl.childCount - 1);
|
|
319
338
|
if (!lhs || !rhs || lhs === rhs)
|
|
320
339
|
return;
|
|
340
|
+
// Check if the RHS is a sink call with tainted arguments BEFORE
|
|
341
|
+
// propagating taint. This catches `const x = db.query(tainted)` and
|
|
342
|
+
// `const x = await db.query(tainted)`.
|
|
343
|
+
if (onSink) {
|
|
344
|
+
// Unwrap await/parenthesized expressions to find the inner call
|
|
345
|
+
let sinkCheckNode = rhs;
|
|
346
|
+
while (sinkCheckNode.type === 'await_expression' || sinkCheckNode.type === 'await'
|
|
347
|
+
|| sinkCheckNode.type === 'parenthesized_expression') {
|
|
348
|
+
sinkCheckNode = sinkCheckNode.namedChildren[0];
|
|
349
|
+
if (!sinkCheckNode)
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
if (sinkCheckNode && CALL_NODE_TYPES.has(sinkCheckNode.type)) {
|
|
353
|
+
const sinkMatch = matchSink(sinkCheckNode, sourceText, language);
|
|
354
|
+
if (sinkMatch) {
|
|
355
|
+
for (const arg of sinkMatch.args) {
|
|
356
|
+
const taint = checkExpressionTaint(arg, scope, sourceText, language, taintReturningFns);
|
|
357
|
+
if (taint) {
|
|
358
|
+
onSink({
|
|
359
|
+
source: taint.source,
|
|
360
|
+
sourceLine: taint.sourceLine,
|
|
361
|
+
sink: sinkMatch.def.id,
|
|
362
|
+
sinkLine: sinkMatch.line + 1,
|
|
363
|
+
canonicalType: sinkMatch.def.canonicalType,
|
|
364
|
+
propagationPath: [...taint.path, {
|
|
365
|
+
line: sinkMatch.line + 1,
|
|
366
|
+
variable: sourceText.slice(arg.startIndex, arg.endIndex),
|
|
367
|
+
operation: 'sink-arg',
|
|
368
|
+
description: `${sinkMatch.def.id}(${sourceText.slice(arg.startIndex, arg.endIndex)})`,
|
|
369
|
+
}],
|
|
370
|
+
isTainted: true,
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
321
377
|
const taint = checkExpressionTaint(rhs, scope, sourceText, language, taintReturningFns);
|
|
322
378
|
if (!taint)
|
|
323
379
|
return;
|
|
@@ -361,7 +417,63 @@ function processExpression(node, scope, sourceText, language, taintReturningFns,
|
|
|
361
417
|
const rhs = node.child(node.childCount - 1);
|
|
362
418
|
if (!lhs || !rhs || lhs === rhs)
|
|
363
419
|
return;
|
|
420
|
+
// Check if RHS is a sink call with tainted arguments
|
|
421
|
+
if (CALL_NODE_TYPES.has(rhs.type)) {
|
|
422
|
+
const sinkMatch = matchSink(rhs, sourceText, language);
|
|
423
|
+
if (sinkMatch) {
|
|
424
|
+
for (const arg of sinkMatch.args) {
|
|
425
|
+
const taint = checkExpressionTaint(arg, scope, sourceText, language, taintReturningFns);
|
|
426
|
+
if (taint) {
|
|
427
|
+
onSink({
|
|
428
|
+
source: taint.source,
|
|
429
|
+
sourceLine: taint.sourceLine,
|
|
430
|
+
sink: sinkMatch.def.id,
|
|
431
|
+
sinkLine: sinkMatch.line + 1,
|
|
432
|
+
canonicalType: sinkMatch.def.canonicalType,
|
|
433
|
+
propagationPath: [...taint.path, {
|
|
434
|
+
line: sinkMatch.line + 1,
|
|
435
|
+
variable: sourceText.slice(arg.startIndex, arg.endIndex),
|
|
436
|
+
operation: 'sink-arg',
|
|
437
|
+
description: `${sinkMatch.def.id}(${sourceText.slice(arg.startIndex, arg.endIndex)})`,
|
|
438
|
+
}],
|
|
439
|
+
isTainted: true,
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
364
445
|
const taint = checkExpressionTaint(rhs, scope, sourceText, language, taintReturningFns);
|
|
446
|
+
// Check for member-assignment sinks (el.innerHTML = tainted)
|
|
447
|
+
if (taint && lhs.type === 'member_expression') {
|
|
448
|
+
const propNode = lhs.child(lhs.childCount - 1);
|
|
449
|
+
if (propNode) {
|
|
450
|
+
const propText = sourceText.slice(propNode.startIndex, propNode.endIndex);
|
|
451
|
+
for (const def of sinkRegistry_1.SINK_REGISTRY) {
|
|
452
|
+
if (!def.languages.includes(language))
|
|
453
|
+
continue;
|
|
454
|
+
for (const matcher of def.matchers) {
|
|
455
|
+
if (matcher.kind !== 'member-assignment')
|
|
456
|
+
continue;
|
|
457
|
+
if (matcher.property === propText) {
|
|
458
|
+
onSink({
|
|
459
|
+
source: taint.source,
|
|
460
|
+
sourceLine: taint.sourceLine,
|
|
461
|
+
sink: def.id,
|
|
462
|
+
sinkLine: node.startPosition.row + 1,
|
|
463
|
+
canonicalType: def.canonicalType,
|
|
464
|
+
propagationPath: [...taint.path, {
|
|
465
|
+
line: node.startPosition.row + 1,
|
|
466
|
+
variable: `${propText} = ${sourceText.slice(rhs.startIndex, rhs.endIndex)}`,
|
|
467
|
+
operation: 'sink-arg',
|
|
468
|
+
description: `${def.id} = ${sourceText.slice(rhs.startIndex, rhs.endIndex)}`,
|
|
469
|
+
}],
|
|
470
|
+
isTainted: true,
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
365
477
|
if (taint && (0, astHelpers_1.isIdentifier)(lhs)) {
|
|
366
478
|
const name = sourceText.slice(lhs.startIndex, lhs.endIndex);
|
|
367
479
|
scope.tainted.set(name, {
|
|
@@ -399,6 +511,24 @@ function processExpression(node, scope, sourceText, language, taintReturningFns,
|
|
|
399
511
|
}
|
|
400
512
|
}
|
|
401
513
|
}
|
|
514
|
+
// Recurse into arrow/function callbacks passed as call arguments.
|
|
515
|
+
// This catches app.post('/path', (req, res) => { ... }) where the
|
|
516
|
+
// handler body contains sources and sinks. Walk the entire call
|
|
517
|
+
// subtree to find function nodes (they may be nested inside arguments).
|
|
518
|
+
if (CALL_NODE_TYPES.has(node.type)) {
|
|
519
|
+
for (const child of (0, astHelpers_1.walk)(node)) {
|
|
520
|
+
// Skip the outer call node itself — only look at children
|
|
521
|
+
if (child === node)
|
|
522
|
+
continue;
|
|
523
|
+
if (FUNCTION_NODE_TYPES.has(child.type)) {
|
|
524
|
+
const body = functionBody(child);
|
|
525
|
+
if (body) {
|
|
526
|
+
const childScope = { tainted: new Map(), parent: scope };
|
|
527
|
+
processScope(body, childScope, sourceText, language, taintReturningFns, onSink, () => { });
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
402
532
|
}
|
|
403
533
|
/** Find the body node of a function. Returns null for expression-body arrows. */
|
|
404
534
|
function functionBody(fn) {
|
|
@@ -442,7 +572,7 @@ function processScope(bodyNode, scope, sourceText, language, taintReturningFns,
|
|
|
442
572
|
}
|
|
443
573
|
continue;
|
|
444
574
|
}
|
|
445
|
-
processDeclarator(decl, scope, sourceText, language, taintReturningFns);
|
|
575
|
+
processDeclarator(decl, scope, sourceText, language, taintReturningFns, onSink);
|
|
446
576
|
}
|
|
447
577
|
}
|
|
448
578
|
continue;
|
|
@@ -463,6 +593,33 @@ function processScope(bodyNode, scope, sourceText, language, taintReturningFns,
|
|
|
463
593
|
if (stmt.type === 'return_statement' || stmt.type === 'return') {
|
|
464
594
|
const expr = stmt.namedChildren[0];
|
|
465
595
|
if (expr) {
|
|
596
|
+
// Check for sinks within the return expression
|
|
597
|
+
for (const node of (0, astHelpers_1.walk)(expr)) {
|
|
598
|
+
if (CALL_NODE_TYPES.has(node.type)) {
|
|
599
|
+
const sinkMatch = matchSink(node, sourceText, language);
|
|
600
|
+
if (sinkMatch) {
|
|
601
|
+
for (const arg of sinkMatch.args) {
|
|
602
|
+
const taint = checkExpressionTaint(arg, scope, sourceText, language, taintReturningFns);
|
|
603
|
+
if (taint) {
|
|
604
|
+
onSink({
|
|
605
|
+
source: taint.source,
|
|
606
|
+
sourceLine: taint.sourceLine,
|
|
607
|
+
sink: sinkMatch.def.id,
|
|
608
|
+
sinkLine: sinkMatch.line + 1,
|
|
609
|
+
canonicalType: sinkMatch.def.canonicalType,
|
|
610
|
+
propagationPath: [...taint.path, {
|
|
611
|
+
line: sinkMatch.line + 1,
|
|
612
|
+
variable: sourceText.slice(arg.startIndex, arg.endIndex),
|
|
613
|
+
operation: 'sink-arg',
|
|
614
|
+
description: `${sinkMatch.def.id}(${sourceText.slice(arg.startIndex, arg.endIndex)})`,
|
|
615
|
+
}],
|
|
616
|
+
isTainted: true,
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
466
623
|
const taint = checkExpressionTaint(expr, scope, sourceText, language, taintReturningFns);
|
|
467
624
|
onReturn(taint);
|
|
468
625
|
}
|
|
@@ -499,7 +656,14 @@ function processScope(bodyNode, scope, sourceText, language, taintReturningFns,
|
|
|
499
656
|
|| stmt.type === 'statement_block'
|
|
500
657
|
|| stmt.type === 'decorated_definition') {
|
|
501
658
|
for (const child of stmt.namedChildren) {
|
|
502
|
-
if (child.type === '
|
|
659
|
+
if (child.type === 'with_item' || child.type === 'with_clause') {
|
|
660
|
+
for (const item of (0, astHelpers_1.walk)(child)) {
|
|
661
|
+
if (item !== child && CALL_NODE_TYPES.has(item.type)) {
|
|
662
|
+
processExpression(item, scope, sourceText, language, taintReturningFns, onSink);
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
else if (child.type === 'statement_block' || child.type === 'block'
|
|
503
667
|
|| STATEMENT_TYPES.has(child.type)) {
|
|
504
668
|
processScope(child.type === 'statement_block' || child.type === 'block' ? child : { namedChildren: [child] }, scope, sourceText, language, taintReturningFns, onSink, onReturn);
|
|
505
669
|
}
|
|
@@ -543,11 +707,14 @@ function findTaintReturningFunctions(root, sourceText, language) {
|
|
|
543
707
|
*
|
|
544
708
|
* @param source the file's source text
|
|
545
709
|
* @param language the grammar to parse with
|
|
710
|
+
* @param seedParams optional: parameter names to pre-taint as sources
|
|
711
|
+
* (used by cross-file taint tracking to analyze
|
|
712
|
+
* imported functions)
|
|
546
713
|
* @returns taint results, one per tainted sink argument. Empty when the
|
|
547
714
|
* grammar is missing, the file fails to parse, or no tainted data
|
|
548
715
|
* reaches any sink (best-effort: never throws).
|
|
549
716
|
*/
|
|
550
|
-
async function trackTaint(source, language) {
|
|
717
|
+
async function trackTaint(source, language, seedParams) {
|
|
551
718
|
const parsed = await (0, parserLoader_1.parseSource)(source, language);
|
|
552
719
|
if (!parsed)
|
|
553
720
|
return [];
|
|
@@ -565,6 +732,22 @@ async function trackTaint(source, language) {
|
|
|
565
732
|
};
|
|
566
733
|
// Process module level
|
|
567
734
|
const moduleScope = { tainted: new Map(), parent: null };
|
|
735
|
+
// Pre-seed parameters as taint sources (for cross-file analysis)
|
|
736
|
+
if (seedParams) {
|
|
737
|
+
for (const param of seedParams) {
|
|
738
|
+
moduleScope.tainted.set(param, {
|
|
739
|
+
source: `<param:${param}>`,
|
|
740
|
+
sourceLine: 1,
|
|
741
|
+
path: [{
|
|
742
|
+
line: 1,
|
|
743
|
+
variable: param,
|
|
744
|
+
operation: 'source',
|
|
745
|
+
description: `Parameter ${param} (tainted by caller)`,
|
|
746
|
+
}],
|
|
747
|
+
sanitizersApplied: [],
|
|
748
|
+
});
|
|
749
|
+
}
|
|
750
|
+
}
|
|
568
751
|
processScope(root, moduleScope, source, language, taintReturningFns, onSink, () => { });
|
|
569
752
|
return results;
|
|
570
753
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taintTracker.js","sourceRoot":"","sources":["../../src/project-map/taintTracker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taintTracker.js","sourceRoot":"","sources":["../../src/project-map/taintTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for agent memory management — record false positives,
|
|
3
|
+
* view memory, and clear memory.
|
|
4
|
+
*
|
|
5
|
+
* These let the user (or the VS Code extension) dismiss findings as false
|
|
6
|
+
* positives so the agent learns not to repeat them in future scans.
|
|
7
|
+
*
|
|
8
|
+
* Storage: <workspaceRoot>/.securecode/agent-memory.json (per-workspace)
|
|
9
|
+
*/
|
|
10
|
+
import type { ServerContext } from '../mcp/types';
|
|
11
|
+
/** record_false_positive — dismiss a finding so the agent won't report it again. */
|
|
12
|
+
export declare function toolRecordFalsePositive(ctx: ServerContext, args: any): Promise<unknown>;
|
|
13
|
+
/** get_agent_memory — view all false positives and known facts. */
|
|
14
|
+
export declare function toolGetAgentMemory(ctx: ServerContext, _args: any): Promise<unknown>;
|
|
15
|
+
/** clear_agent_memory — remove all false positives and known facts. */
|
|
16
|
+
export declare function toolClearAgentMemory(ctx: ServerContext, args: any): Promise<unknown>;
|
|
17
|
+
/** add_known_fact — add a fact about the project the agent should know. */
|
|
18
|
+
export declare function toolAddKnownFact(ctx: ServerContext, args: any): Promise<unknown>;
|