@securecode-ai/mcp 0.4.0 → 0.4.2

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.
Files changed (56) hide show
  1. package/README.md +107 -13
  2. package/dist/api/client.d.ts +1 -1
  3. package/dist/api/client.js +2 -1
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/attack/agentScanExecutor.js +159 -5
  6. package/dist/attack/agentScanExecutor.js.map +1 -1
  7. package/dist/attack/agentScanLoop.js +157 -3
  8. package/dist/attack/agentScanLoop.js.map +1 -1
  9. package/dist/attack/agentScanProtocol.d.ts +47 -5
  10. package/dist/attack/agentScanProtocol.js +3 -3
  11. package/dist/index.js +218 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcp/server.js +62 -0
  14. package/dist/mcp/server.js.map +1 -1
  15. package/dist/mcp/tools.js +80 -3
  16. package/dist/mcp/tools.js.map +1 -1
  17. package/dist/project-map/agentMemory.d.ts +75 -0
  18. package/dist/project-map/agentMemory.js +230 -0
  19. package/dist/project-map/agentMemory.js.map +1 -0
  20. package/dist/project-map/crossFileTaintTracker.d.ts +51 -0
  21. package/dist/project-map/crossFileTaintTracker.js +429 -0
  22. package/dist/project-map/crossFileTaintTracker.js.map +1 -0
  23. package/dist/project-map/endpointDiscovery.d.ts +24 -0
  24. package/dist/project-map/endpointDiscovery.js +101 -0
  25. package/dist/project-map/endpointDiscovery.js.map +1 -0
  26. package/dist/project-map/guardEvaluator.js +37 -0
  27. package/dist/project-map/guardEvaluator.js.map +1 -1
  28. package/dist/project-map/guardPatterns.js +16 -5
  29. package/dist/project-map/guardPatterns.js.map +1 -1
  30. package/dist/project-map/sanitizers.js +10 -0
  31. package/dist/project-map/sanitizers.js.map +1 -1
  32. package/dist/project-map/scanCache.d.ts +67 -0
  33. package/dist/project-map/scanCache.js +169 -0
  34. package/dist/project-map/scanCache.js.map +1 -0
  35. package/dist/project-map/sinkRegistry.js +165 -0
  36. package/dist/project-map/sinkRegistry.js.map +1 -1
  37. package/dist/project-map/taintSources.d.ts +19 -1
  38. package/dist/project-map/taintSources.js +69 -2
  39. package/dist/project-map/taintSources.js.map +1 -1
  40. package/dist/project-map/taintTracker.d.ts +4 -1
  41. package/dist/project-map/taintTracker.js +188 -5
  42. package/dist/project-map/taintTracker.js.map +1 -1
  43. package/dist/tools/agentMemoryTools.d.ts +18 -0
  44. package/dist/tools/agentMemoryTools.js +107 -0
  45. package/dist/tools/agentMemoryTools.js.map +1 -0
  46. package/dist/tools/agentScan.js +206 -33
  47. package/dist/tools/agentScan.js.map +1 -1
  48. package/dist/utils/files.js +19 -2
  49. package/dist/utils/files.js.map +1 -1
  50. package/dist/utils/listFiles.d.ts +17 -0
  51. package/dist/utils/listFiles.js +126 -0
  52. package/dist/utils/listFiles.js.map +1 -0
  53. package/dist/utils/listImports.d.ts +15 -0
  54. package/dist/utils/listImports.js +164 -0
  55. package/dist/utils/listImports.js.map +1 -0
  56. 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
- // Exact match or prefix match (req.body.q starts with req.body)
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":"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"}
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 === 'statement_block' || child.type === 'block'
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>;