circle-ir 3.167.0 → 3.173.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.
Files changed (40) hide show
  1. package/dist/analysis/config-loader.d.ts.map +1 -1
  2. package/dist/analysis/config-loader.js +79 -0
  3. package/dist/analysis/config-loader.js.map +1 -1
  4. package/dist/analysis/passes/cross-file-pass.d.ts.map +1 -1
  5. package/dist/analysis/passes/cross-file-pass.js +3 -2
  6. package/dist/analysis/passes/cross-file-pass.js.map +1 -1
  7. package/dist/analysis/passes/interprocedural-pass.d.ts.map +1 -1
  8. package/dist/analysis/passes/interprocedural-pass.js +3 -2
  9. package/dist/analysis/passes/interprocedural-pass.js.map +1 -1
  10. package/dist/analysis/passes/sink-filter-pass.d.ts.map +1 -1
  11. package/dist/analysis/passes/sink-filter-pass.js +23 -2
  12. package/dist/analysis/passes/sink-filter-pass.js.map +1 -1
  13. package/dist/analysis/passes/taint-propagation-pass.d.ts.map +1 -1
  14. package/dist/analysis/passes/taint-propagation-pass.js +29 -15
  15. package/dist/analysis/passes/taint-propagation-pass.js.map +1 -1
  16. package/dist/analysis/sanitizer-index.d.ts +34 -0
  17. package/dist/analysis/sanitizer-index.d.ts.map +1 -0
  18. package/dist/analysis/sanitizer-index.js +48 -0
  19. package/dist/analysis/sanitizer-index.js.map +1 -0
  20. package/dist/analysis/taint-matcher.d.ts.map +1 -1
  21. package/dist/analysis/taint-matcher.js +93 -45
  22. package/dist/analysis/taint-matcher.js.map +1 -1
  23. package/dist/analysis/taint-propagation.d.ts.map +1 -1
  24. package/dist/analysis/taint-propagation.js +5 -2
  25. package/dist/analysis/taint-propagation.js.map +1 -1
  26. package/dist/analyzer.d.ts.map +1 -1
  27. package/dist/analyzer.js +51 -2
  28. package/dist/analyzer.js.map +1 -1
  29. package/dist/browser/circle-ir.js +319 -95
  30. package/dist/core/circle-ir-core.cjs +193 -72
  31. package/dist/core/circle-ir-core.js +193 -72
  32. package/dist/core/extractors/cfg.d.ts +11 -1
  33. package/dist/core/extractors/cfg.d.ts.map +1 -1
  34. package/dist/core/extractors/cfg.js +18 -9
  35. package/dist/core/extractors/cfg.js.map +1 -1
  36. package/dist/core/extractors/imports.d.ts +9 -1
  37. package/dist/core/extractors/imports.d.ts.map +1 -1
  38. package/dist/core/extractors/imports.js +29 -22
  39. package/dist/core/extractors/imports.js.map +1 -1
  40. package/package.json +1 -1
@@ -7477,33 +7477,33 @@ function detectLanguage2(tree) {
7477
7477
  if (pythonScore > jsScore && pythonScore > javaScore) return "python";
7478
7478
  return jsScore > javaScore ? "javascript" : "java";
7479
7479
  }
7480
- function extractImports(tree, language) {
7480
+ function extractImports(tree, language, cache) {
7481
7481
  const effectiveLanguage = language ?? detectLanguage2(tree);
7482
7482
  const isJavaScript = effectiveLanguage === "javascript" || effectiveLanguage === "typescript" || effectiveLanguage === "tsx";
7483
7483
  const isPython = effectiveLanguage === "python";
7484
7484
  const isRust = effectiveLanguage === "rust";
7485
7485
  if (effectiveLanguage === "go") {
7486
- return extractGoImports(tree);
7486
+ return extractGoImports(tree, cache);
7487
7487
  }
7488
7488
  if (isRust) {
7489
- return extractRustImports(tree);
7489
+ return extractRustImports(tree, cache);
7490
7490
  }
7491
7491
  if (isPython) {
7492
- return extractPythonImports(tree);
7492
+ return extractPythonImports(tree, cache);
7493
7493
  }
7494
7494
  if (isJavaScript) {
7495
- return extractJavaScriptImports(tree);
7495
+ return extractJavaScriptImports(tree, cache);
7496
7496
  }
7497
- return extractJavaImports(tree);
7497
+ return extractJavaImports(tree, cache);
7498
7498
  }
7499
- function extractJavaScriptImports(tree) {
7499
+ function extractJavaScriptImports(tree, cache) {
7500
7500
  const imports = [];
7501
- const importStatements = findNodes(tree.rootNode, "import_statement");
7501
+ const importStatements = getNodesFromCache(tree.rootNode, "import_statement", cache);
7502
7502
  for (const importStmt of importStatements) {
7503
7503
  const importInfos = extractJSImportInfo(importStmt);
7504
7504
  imports.push(...importInfos);
7505
7505
  }
7506
- const exportStatements = findNodes(tree.rootNode, "export_statement");
7506
+ const exportStatements = getNodesFromCache(tree.rootNode, "export_statement", cache);
7507
7507
  for (const exportStmt of exportStatements) {
7508
7508
  const sourceNode = exportStmt.childForFieldName("source");
7509
7509
  if (!sourceNode) continue;
@@ -7517,13 +7517,13 @@ function extractJavaScriptImports(tree) {
7517
7517
  line_number: exportStmt.startPosition.row + 1
7518
7518
  });
7519
7519
  }
7520
- const requireCalls = findRequireCalls(tree);
7520
+ const requireCalls = findRequireCalls(tree, cache);
7521
7521
  imports.push(...requireCalls);
7522
7522
  return imports;
7523
7523
  }
7524
- function extractJavaImports(tree) {
7524
+ function extractJavaImports(tree, cache) {
7525
7525
  const imports = [];
7526
- const importDecls = findNodes(tree.rootNode, "import_declaration");
7526
+ const importDecls = getNodesFromCache(tree.rootNode, "import_declaration", cache);
7527
7527
  for (const importDecl of importDecls) {
7528
7528
  const importInfo = extractJavaImportInfo(importDecl);
7529
7529
  if (importInfo) {
@@ -7671,9 +7671,9 @@ function extractJSImportInfo(node) {
7671
7671
  }
7672
7672
  return imports;
7673
7673
  }
7674
- function findRequireCalls(tree) {
7674
+ function findRequireCalls(tree, cache) {
7675
7675
  const imports = [];
7676
- const callExpressions = findNodes(tree.rootNode, "call_expression");
7676
+ const callExpressions = getNodesFromCache(tree.rootNode, "call_expression", cache);
7677
7677
  for (const call of callExpressions) {
7678
7678
  const funcNode = call.childForFieldName("function");
7679
7679
  if (!funcNode || getNodeText(funcNode) !== "require") continue;
@@ -7787,14 +7787,14 @@ function parseImportPath(fullPath, isWildcard) {
7787
7787
  fromPackage: fullPath.substring(0, lastDot)
7788
7788
  };
7789
7789
  }
7790
- function extractPythonImports(tree) {
7790
+ function extractPythonImports(tree, cache) {
7791
7791
  const imports = [];
7792
- const importStatements = findNodes(tree.rootNode, "import_statement");
7792
+ const importStatements = getNodesFromCache(tree.rootNode, "import_statement", cache);
7793
7793
  for (const stmt of importStatements) {
7794
7794
  const importInfos = extractPythonImportStatement(stmt);
7795
7795
  imports.push(...importInfos);
7796
7796
  }
7797
- const importFromStatements = findNodes(tree.rootNode, "import_from_statement");
7797
+ const importFromStatements = getNodesFromCache(tree.rootNode, "import_from_statement", cache);
7798
7798
  for (const stmt of importFromStatements) {
7799
7799
  const importInfos = extractPythonFromImportStatement(stmt);
7800
7800
  imports.push(...importInfos);
@@ -7888,9 +7888,9 @@ function extractPythonFromImportStatement(node) {
7888
7888
  }
7889
7889
  return imports;
7890
7890
  }
7891
- function extractRustImports(tree) {
7891
+ function extractRustImports(tree, cache) {
7892
7892
  const imports = [];
7893
- const useDecls = findNodes(tree.rootNode, "use_declaration");
7893
+ const useDecls = getNodesFromCache(tree.rootNode, "use_declaration", cache);
7894
7894
  for (const useDecl of useDecls) {
7895
7895
  const useImports = extractRustUseDecl(useDecl);
7896
7896
  imports.push(...useImports);
@@ -8032,9 +8032,9 @@ function extractRustScopedUseList(node, lineNumber) {
8032
8032
  }
8033
8033
  return imports;
8034
8034
  }
8035
- function extractGoImports(tree) {
8035
+ function extractGoImports(tree, cache) {
8036
8036
  const imports = [];
8037
- const importDecls = findNodes(tree.rootNode, "import_declaration");
8037
+ const importDecls = getNodesFromCache(tree.rootNode, "import_declaration", cache);
8038
8038
  for (const decl of importDecls) {
8039
8039
  const singleSpec = findGoChildByType(decl, "import_spec");
8040
8040
  if (singleSpec) {
@@ -8169,7 +8169,7 @@ function detectLanguage3(tree) {
8169
8169
  }
8170
8170
  return jsScore > javaScore ? "javascript" : "java";
8171
8171
  }
8172
- function buildCFG(tree, language) {
8172
+ function buildCFG(tree, language, cache) {
8173
8173
  const effectiveLanguage = language ?? detectLanguage3(tree);
8174
8174
  const isJavaScript = effectiveLanguage === "javascript" || effectiveLanguage === "typescript" || effectiveLanguage === "tsx";
8175
8175
  const allBlocks = [];
@@ -8183,11 +8183,11 @@ function buildCFG(tree, language) {
8183
8183
  }
8184
8184
  if (isJavaScript) {
8185
8185
  const functions = [
8186
- ...findNodes(tree.rootNode, "function_declaration"),
8187
- ...findNodes(tree.rootNode, "arrow_function"),
8188
- ...findNodes(tree.rootNode, "method_definition"),
8189
- ...findNodes(tree.rootNode, "function"),
8190
- ...findNodes(tree.rootNode, "function_expression")
8186
+ ...getNodesFromCache(tree.rootNode, "function_declaration", cache),
8187
+ ...getNodesFromCache(tree.rootNode, "arrow_function", cache),
8188
+ ...getNodesFromCache(tree.rootNode, "method_definition", cache),
8189
+ ...getNodesFromCache(tree.rootNode, "function", cache),
8190
+ ...getNodesFromCache(tree.rootNode, "function_expression", cache)
8191
8191
  ];
8192
8192
  for (const func2 of functions) {
8193
8193
  const body2 = func2.childForFieldName("body");
@@ -8209,8 +8209,8 @@ function buildCFG(tree, language) {
8209
8209
  }
8210
8210
  } else {
8211
8211
  const methods = [
8212
- ...findNodes(tree.rootNode, "method_declaration"),
8213
- ...findNodes(tree.rootNode, "constructor_declaration")
8212
+ ...getNodesFromCache(tree.rootNode, "method_declaration", cache),
8213
+ ...getNodesFromCache(tree.rootNode, "constructor_declaration", cache)
8214
8214
  ];
8215
8215
  for (const method of methods) {
8216
8216
  const body2 = method.childForFieldName("body");
@@ -10463,7 +10463,86 @@ var DEFAULT_SOURCES = [
10463
10463
  { method: "recv", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
10464
10464
  { method: "read", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
10465
10465
  { method: "read_to_end", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
10466
- { method: "read_to_string", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true }
10466
+ { method: "read_to_string", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
10467
+ // =========================================================================
10468
+ // Modern taint sources (cognium-dev #242 — 3.170.0)
10469
+ // GraphQL resolver args, gRPC request metadata, cache reads (second-order
10470
+ // taint), and JWT claims (unverified decode). These attacker-influenced
10471
+ // surfaces were previously silent — a resolver that concatenated an
10472
+ // `Args`-annotated field into a SQL string produced zero flows.
10473
+ // =========================================================================
10474
+ // --- GraphQL resolver argument sources (JS / TS — Apollo, TypeGraphQL, NestJS) ---
10475
+ // TypeGraphQL / NestJS annotate query/mutation/subscription methods; every
10476
+ // parameter on the annotated method carries attacker input from the GraphQL
10477
+ // POST body's `variables` field.
10478
+ { method_annotation: "Query", type: "http_body", severity: "high", languages: ["javascript", "typescript"] },
10479
+ { method_annotation: "Mutation", type: "http_body", severity: "high", languages: ["javascript", "typescript"] },
10480
+ { method_annotation: "Subscription", type: "http_body", severity: "high", languages: ["javascript", "typescript"] },
10481
+ { method_annotation: "FieldResolver", type: "http_body", severity: "high", languages: ["javascript", "typescript"] },
10482
+ { method_annotation: "ResolveField", type: "http_body", severity: "high", languages: ["javascript", "typescript"] },
10483
+ // Parameter-level: `@Arg('id') id: string`, `@Args('input') input: FooDto`.
10484
+ { annotation: "Arg", type: "http_param", severity: "high", param_tainted: true, languages: ["javascript", "typescript"] },
10485
+ { annotation: "Args", type: "http_param", severity: "high", param_tainted: true, languages: ["javascript", "typescript"] },
10486
+ // --- GraphQL resolver argument sources (Python — Strawberry, Graphene, Ariadne) ---
10487
+ { method_annotation: "strawberry.field", type: "http_body", severity: "high", languages: ["python"] },
10488
+ { method_annotation: "strawberry.mutation", type: "http_body", severity: "high", languages: ["python"] },
10489
+ { method_annotation: "strawberry.subscription", type: "http_body", severity: "high", languages: ["python"] },
10490
+ // --- GraphQL resolver argument sources (Java — Netflix DGS, SPQR, graphql-java-annotations) ---
10491
+ { method_annotation: "DgsQuery", type: "http_body", severity: "high", languages: ["java"] },
10492
+ { method_annotation: "DgsMutation", type: "http_body", severity: "high", languages: ["java"] },
10493
+ { method_annotation: "DgsSubscription", type: "http_body", severity: "high", languages: ["java"] },
10494
+ { method_annotation: "DgsData", type: "http_body", severity: "high", languages: ["java"] },
10495
+ { method_annotation: "GraphQLQuery", type: "http_body", severity: "high", languages: ["java"] },
10496
+ { method_annotation: "GraphQLMutation", type: "http_body", severity: "high", languages: ["java"] },
10497
+ { annotation: "InputArgument", type: "http_param", severity: "high", param_tainted: true, languages: ["java"] },
10498
+ { annotation: "GraphQLArgument", type: "http_param", severity: "high", param_tainted: true, languages: ["java"] },
10499
+ // --- gRPC request metadata (Python — grpcio) ---
10500
+ // `context.invocation_metadata()` returns the caller-supplied metadata tuple.
10501
+ // No `class` filter — receiver names vary (`context`, `ctx`, `servicer_context`).
10502
+ { method: "invocation_metadata", type: "http_header", severity: "high", return_tainted: true, languages: ["python"] },
10503
+ // --- gRPC request metadata (JS / TS — @grpc/grpc-js) ---
10504
+ // `call.metadata.get(key)` / `call.metadata.getMap()` inside a service handler.
10505
+ { method: "get", class: "Metadata", type: "http_header", severity: "high", return_tainted: true, languages: ["javascript", "typescript"] },
10506
+ { method: "getMap", class: "Metadata", type: "http_header", severity: "high", return_tainted: true, languages: ["javascript", "typescript"] },
10507
+ // --- gRPC request metadata (Go — google.golang.org/grpc/metadata) ---
10508
+ // `md, _ := metadata.FromIncomingContext(ctx)` pulls the caller's headers.
10509
+ { method: "FromIncomingContext", class: "metadata", type: "http_header", severity: "high", return_tainted: true, languages: ["go"] },
10510
+ // --- gRPC request metadata (Java — io.grpc.Metadata) ---
10511
+ // Server-side interceptor receives `Metadata headers`; `headers.get(KEY)`
10512
+ // returns caller-supplied header values.
10513
+ { method: "get", class: "Metadata", type: "http_header", severity: "high", return_tainted: true, languages: ["java"] },
10514
+ // --- Cache reads (second-order taint — Redis / Memcached / Django cache) ---
10515
+ // The cache round-trip is a canonical second-order sink: whatever was
10516
+ // written previously (potentially attacker-controlled) resurfaces on read.
10517
+ // Severity 'medium' — cache contents are usually filtered by the writer but
10518
+ // the read side often forgets that guarantee. Class-scoped to `Redis`,
10519
+ // `Jedis`, `cache` to avoid colliding with generic `Map.get()`.
10520
+ { method: "get", class: "Redis", type: "db_input", severity: "medium", return_tainted: true, languages: ["python"] },
10521
+ { method: "hget", class: "Redis", type: "db_input", severity: "medium", return_tainted: true, languages: ["python"] },
10522
+ { method: "mget", class: "Redis", type: "db_input", severity: "medium", return_tainted: true, languages: ["python"] },
10523
+ { method: "lrange", class: "Redis", type: "db_input", severity: "medium", return_tainted: true, languages: ["python"] },
10524
+ { method: "get", class: "cache", type: "db_input", severity: "medium", return_tainted: true, languages: ["python"] },
10525
+ { method: "get_many", class: "cache", type: "db_input", severity: "medium", return_tainted: true, languages: ["python"] },
10526
+ { method: "get", class: "Redis", type: "db_input", severity: "medium", return_tainted: true, languages: ["javascript", "typescript"] },
10527
+ { method: "hget", class: "Redis", type: "db_input", severity: "medium", return_tainted: true, languages: ["javascript", "typescript"] },
10528
+ { method: "mget", class: "Redis", type: "db_input", severity: "medium", return_tainted: true, languages: ["javascript", "typescript"] },
10529
+ { method: "get", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
10530
+ { method: "hget", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
10531
+ { method: "mget", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
10532
+ // --- JWT claims (unverified decode — PyJWT / jose / jsonwebtoken / auth0 java-jwt / golang-jwt) ---
10533
+ // A JWT's payload is *always* attacker-authored. Even after verification
10534
+ // the *contents* of the claims (username, role, custom fields) are not
10535
+ // trusted for downstream flows into SQL, HTML, shell, etc. The `decode`
10536
+ // variants here return the parsed claims dictionary/object.
10537
+ { method: "decode", class: "jwt", type: "http_header", severity: "high", return_tainted: true, languages: ["python"] },
10538
+ { method: "get_unverified_claims", class: "jwt", type: "http_header", severity: "high", return_tainted: true, languages: ["python"] },
10539
+ { method: "get_unverified_header", class: "jwt", type: "http_header", severity: "high", return_tainted: true, languages: ["python"] },
10540
+ { method: "decode", class: "jwt", type: "http_header", severity: "high", return_tainted: true, languages: ["javascript", "typescript"] },
10541
+ { method: "decode", class: "jsonwebtoken", type: "http_header", severity: "high", return_tainted: true, languages: ["javascript", "typescript"] },
10542
+ { method: "decodeJwt", class: "jose", type: "http_header", severity: "high", return_tainted: true, languages: ["javascript", "typescript"] },
10543
+ { method: "decodeProtectedHeader", class: "jose", type: "http_header", severity: "high", return_tainted: true, languages: ["javascript", "typescript"] },
10544
+ { method: "decode", class: "JWT", type: "http_header", severity: "high", return_tainted: true, languages: ["java"] },
10545
+ { method: "ParseUnverified", class: "jwt", type: "http_header", severity: "high", return_tainted: true, languages: ["go"] }
10467
10546
  ];
10468
10547
  var DEFAULT_SINKS = [
10469
10548
  // SQL Injection (CWE-89)
@@ -12516,6 +12595,9 @@ function findSources(calls, types, patterns, sourceLines, language) {
12516
12595
  for (const param of method.parameters) {
12517
12596
  for (const pattern of patterns) {
12518
12597
  if (pattern.annotation && pattern.param_tainted) {
12598
+ if (pattern.languages && pattern.languages.length > 0 && language !== void 0 && !pattern.languages.includes(language)) {
12599
+ continue;
12600
+ }
12519
12601
  if (matchesAnnotation(param.annotations, pattern.annotation)) {
12520
12602
  const paramLine = param.line ?? method.start_line;
12521
12603
  sources.push({
@@ -12536,6 +12618,9 @@ function findSources(calls, types, patterns, sourceLines, language) {
12536
12618
  for (const method of type.methods) {
12537
12619
  for (const pattern of patterns) {
12538
12620
  if (!pattern.method_annotation) continue;
12621
+ if (pattern.languages && pattern.languages.length > 0 && language !== void 0 && !pattern.languages.includes(language)) {
12622
+ continue;
12623
+ }
12539
12624
  if (!matchesAnnotation(method.annotations, pattern.method_annotation)) continue;
12540
12625
  for (const param of method.parameters) {
12541
12626
  const paramLine = param.line ?? method.start_line;
@@ -12800,7 +12885,7 @@ function isParameterizedQueryCall(call, pattern) {
12800
12885
  const secondArg = call.arguments.find((a) => a.position === 1);
12801
12886
  if (secondArg?.expression) {
12802
12887
  const expr = secondArg.expression.trim();
12803
- if (expr.startsWith("[")) {
12888
+ if (expr.startsWith("[") && !/^\[\s*\]$/.test(expr)) {
12804
12889
  return true;
12805
12890
  }
12806
12891
  }
@@ -13241,52 +13326,74 @@ function matchesSourcePattern(call, pattern) {
13241
13326
  }
13242
13327
  return false;
13243
13328
  }
13329
+ var JS_SOURCE_PATTERN_CACHE = /* @__PURE__ */ new WeakMap();
13330
+ var JS_FALLBACK_COMPILED = (() => {
13331
+ const bases = [
13332
+ { base: "req\\.params", sourceType: "http_param" },
13333
+ { base: "req\\.query", sourceType: "http_param" },
13334
+ { base: "req\\.body", sourceType: "http_body" },
13335
+ { base: "req\\.headers", sourceType: "http_header" },
13336
+ { base: "req\\.cookies", sourceType: "http_cookie" },
13337
+ { base: "req\\.url", sourceType: "http_path" },
13338
+ { base: "req\\.path", sourceType: "http_path" },
13339
+ { base: "req\\.originalUrl", sourceType: "http_path" },
13340
+ { base: "req\\.file", sourceType: "file_input" },
13341
+ { base: "req\\.files", sourceType: "file_input" },
13342
+ { base: "request\\.params", sourceType: "http_param" },
13343
+ { base: "request\\.query", sourceType: "http_param" },
13344
+ { base: "request\\.body", sourceType: "http_body" },
13345
+ { base: "request\\.headers", sourceType: "http_header" },
13346
+ { base: "process\\.env", sourceType: "env_input" },
13347
+ { base: "process\\.argv", sourceType: "io_input" },
13348
+ { base: "ctx\\.query", sourceType: "http_param" },
13349
+ { base: "ctx\\.params", sourceType: "http_param" },
13350
+ { base: "ctx\\.request", sourceType: "http_body" }
13351
+ ];
13352
+ const exact = [];
13353
+ const contained = [];
13354
+ for (const { base, sourceType } of bases) {
13355
+ exact.push({ pattern: new RegExp(`^${base}\\b`), sourceType });
13356
+ contained.push({ pattern: new RegExp(`\\b${base}\\b`), sourceType });
13357
+ }
13358
+ return { exact, contained };
13359
+ })();
13360
+ function compileJsSourcePatterns(sourcePatterns) {
13361
+ const cached = JS_SOURCE_PATTERN_CACHE.get(sourcePatterns);
13362
+ if (cached) return cached;
13363
+ const exact = [];
13364
+ const contained = [];
13365
+ for (const sp of sourcePatterns) {
13366
+ if (sp.property && sp.object && sp.property_tainted) {
13367
+ exact.push({
13368
+ pattern: new RegExp(`^${sp.object}\\.${sp.property}\\b`),
13369
+ sourceType: sp.type
13370
+ });
13371
+ contained.push({
13372
+ pattern: new RegExp(`\\b${sp.object}\\.${sp.property}\\b`),
13373
+ sourceType: sp.type
13374
+ });
13375
+ }
13376
+ }
13377
+ const compiled = { exact, contained };
13378
+ JS_SOURCE_PATTERN_CACHE.set(sourcePatterns, compiled);
13379
+ return compiled;
13380
+ }
13244
13381
  function isJavaScriptTaintedArgument(argExpression, sourcePatterns) {
13245
- const exactPatterns = [];
13246
- const containedPatterns = [];
13247
- if (sourcePatterns) {
13248
- for (const sp of sourcePatterns) {
13249
- if (sp.property && sp.object && sp.property_tainted) {
13250
- const exactRegex = new RegExp(`^${sp.object}\\.${sp.property}\\b`);
13251
- exactPatterns.push({ pattern: exactRegex, sourceType: sp.type });
13252
- const containedRegex = new RegExp(`\\b${sp.object}\\.${sp.property}\\b`);
13253
- containedPatterns.push({ pattern: containedRegex, sourceType: sp.type });
13254
- }
13255
- }
13256
- }
13257
- if (exactPatterns.length === 0) {
13258
- const basePatterns = [
13259
- { base: "req\\.params", sourceType: "http_param" },
13260
- { base: "req\\.query", sourceType: "http_param" },
13261
- { base: "req\\.body", sourceType: "http_body" },
13262
- { base: "req\\.headers", sourceType: "http_header" },
13263
- { base: "req\\.cookies", sourceType: "http_cookie" },
13264
- { base: "req\\.url", sourceType: "http_path" },
13265
- { base: "req\\.path", sourceType: "http_path" },
13266
- { base: "req\\.originalUrl", sourceType: "http_path" },
13267
- { base: "req\\.file", sourceType: "file_input" },
13268
- { base: "req\\.files", sourceType: "file_input" },
13269
- { base: "request\\.params", sourceType: "http_param" },
13270
- { base: "request\\.query", sourceType: "http_param" },
13271
- { base: "request\\.body", sourceType: "http_body" },
13272
- { base: "request\\.headers", sourceType: "http_header" },
13273
- { base: "process\\.env", sourceType: "env_input" },
13274
- { base: "process\\.argv", sourceType: "io_input" },
13275
- { base: "ctx\\.query", sourceType: "http_param" },
13276
- { base: "ctx\\.params", sourceType: "http_param" },
13277
- { base: "ctx\\.request", sourceType: "http_body" }
13278
- ];
13279
- for (const { base, sourceType } of basePatterns) {
13280
- exactPatterns.push({ pattern: new RegExp(`^${base}\\b`), sourceType });
13281
- containedPatterns.push({ pattern: new RegExp(`\\b${base}\\b`), sourceType });
13382
+ let compiled;
13383
+ if (sourcePatterns && sourcePatterns.length > 0) {
13384
+ compiled = compileJsSourcePatterns(sourcePatterns);
13385
+ if (compiled.exact.length === 0) {
13386
+ compiled = JS_FALLBACK_COMPILED;
13282
13387
  }
13388
+ } else {
13389
+ compiled = JS_FALLBACK_COMPILED;
13283
13390
  }
13284
- for (const { pattern, sourceType } of exactPatterns) {
13391
+ for (const { pattern, sourceType } of compiled.exact) {
13285
13392
  if (pattern.test(argExpression)) {
13286
13393
  return { isTainted: true, sourceType };
13287
13394
  }
13288
13395
  }
13289
- for (const { pattern, sourceType } of containedPatterns) {
13396
+ for (const { pattern, sourceType } of compiled.contained) {
13290
13397
  if (pattern.test(argExpression)) {
13291
13398
  return { isTainted: true, sourceType };
13292
13399
  }
@@ -14278,6 +14385,20 @@ function walkBackwardDefs(startDefId, chainsByToDef, defById, options = {}) {
14278
14385
  return { visited, lines, hopCapReached };
14279
14386
  }
14280
14387
 
14388
+ // src/analysis/sanitizer-index.ts
14389
+ var SANITIZER_SET_CACHE = /* @__PURE__ */ new WeakMap();
14390
+ function getSanitizesSet(san) {
14391
+ let s = SANITIZER_SET_CACHE.get(san);
14392
+ if (!s) {
14393
+ s = new Set(san.sanitizes);
14394
+ SANITIZER_SET_CACHE.set(san, s);
14395
+ }
14396
+ return s;
14397
+ }
14398
+ function sanitizerCoversSink(san, sinkType) {
14399
+ return getSanitizesSet(san).has(sinkType);
14400
+ }
14401
+
14281
14402
  // src/analysis/taint-propagation.ts
14282
14403
  function buildSanitizersByLine(sanitizers) {
14283
14404
  const out2 = /* @__PURE__ */ new Map();
@@ -14514,7 +14635,7 @@ function checkSanitized(fromLine, toLine, sinkType, sanitizersByLine, ctx) {
14514
14635
  if (sanitizersAtTarget && sanitizersAtTarget.length > 0) {
14515
14636
  for (const san of sanitizersAtTarget) {
14516
14637
  if (isKnownSinkType) {
14517
- if (san.sanitizes.includes(sinkType)) {
14638
+ if (sanitizerCoversSink(san, sinkType)) {
14518
14639
  return { sanitized: true, sanitizer: san };
14519
14640
  }
14520
14641
  } else if (san.sanitizes.length > 0) {
@@ -14536,7 +14657,7 @@ function checkSanitized(fromLine, toLine, sinkType, sanitizersByLine, ctx) {
14536
14657
  if (!sansAtLine || sansAtLine.length === 0) continue;
14537
14658
  for (const san of sansAtLine) {
14538
14659
  if (isKnownSinkType) {
14539
- if (san.sanitizes.includes(sinkType)) {
14660
+ if (sanitizerCoversSink(san, sinkType)) {
14540
14661
  return { sanitized: true, sanitizer: san };
14541
14662
  }
14542
14663
  } else if (san.sanitizes.length > 0) {
@@ -3,8 +3,18 @@
3
3
  */
4
4
  import type { Tree } from 'web-tree-sitter';
5
5
  import type { CFG, SupportedLanguage } from '../../types/index.js';
6
+ import { type NodeCache } from '../parser.js';
6
7
  /**
7
8
  * Build CFG for all methods in the tree.
9
+ *
10
+ * `cache` (added in 3.172.0, cognium-dev#254 T2-A): when provided, top-level
11
+ * `findNodes` walks for function/method containers are replaced with O(1)
12
+ * cache lookups populated by `collectAllNodes` at analyzer entry. Java's
13
+ * `method_declaration`/`import_declaration` and JS's `function_declaration`/
14
+ * `arrow_function`/`method_definition` are already in the language-cache set;
15
+ * `constructor_declaration`, `function`, `function_expression` are added by
16
+ * this ship. Falls back to `findNodes` when cache is absent (test / library
17
+ * callers that build a Tree directly).
8
18
  */
9
- export declare function buildCFG(tree: Tree, language?: SupportedLanguage): CFG;
19
+ export declare function buildCFG(tree: Tree, language?: SupportedLanguage, cache?: NodeCache): CFG;
10
20
  //# sourceMappingURL=cfg.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cfg.d.ts","sourceRoot":"","sources":["../../../src/core/extractors/cfg.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAQ,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAqB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAmCtF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,GAAG,CAkEtE"}
1
+ {"version":3,"file":"cfg.d.ts","sourceRoot":"","sources":["../../../src/core/extractors/cfg.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAQ,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAqB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAkC5E;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,GAAG,CAkEzF"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * CFG (Control Flow Graph) builder
3
3
  */
4
- import { findNodes } from '../parser.js';
4
+ import { findNodes, getNodesFromCache } from '../parser.js';
5
5
  /**
6
6
  * Detect language from tree structure.
7
7
  */
@@ -32,8 +32,17 @@ function detectLanguage(tree) {
32
32
  }
33
33
  /**
34
34
  * Build CFG for all methods in the tree.
35
+ *
36
+ * `cache` (added in 3.172.0, cognium-dev#254 T2-A): when provided, top-level
37
+ * `findNodes` walks for function/method containers are replaced with O(1)
38
+ * cache lookups populated by `collectAllNodes` at analyzer entry. Java's
39
+ * `method_declaration`/`import_declaration` and JS's `function_declaration`/
40
+ * `arrow_function`/`method_definition` are already in the language-cache set;
41
+ * `constructor_declaration`, `function`, `function_expression` are added by
42
+ * this ship. Falls back to `findNodes` when cache is absent (test / library
43
+ * callers that build a Tree directly).
35
44
  */
36
- export function buildCFG(tree, language) {
45
+ export function buildCFG(tree, language, cache) {
37
46
  const effectiveLanguage = language ?? detectLanguage(tree);
38
47
  const isJavaScript = effectiveLanguage === 'javascript' || effectiveLanguage === 'typescript' || effectiveLanguage === 'tsx';
39
48
  const allBlocks = [];
@@ -48,11 +57,11 @@ export function buildCFG(tree, language) {
48
57
  if (isJavaScript) {
49
58
  // Find all JavaScript function bodies
50
59
  const functions = [
51
- ...findNodes(tree.rootNode, 'function_declaration'),
52
- ...findNodes(tree.rootNode, 'arrow_function'),
53
- ...findNodes(tree.rootNode, 'method_definition'),
54
- ...findNodes(tree.rootNode, 'function'),
55
- ...findNodes(tree.rootNode, 'function_expression'),
60
+ ...getNodesFromCache(tree.rootNode, 'function_declaration', cache),
61
+ ...getNodesFromCache(tree.rootNode, 'arrow_function', cache),
62
+ ...getNodesFromCache(tree.rootNode, 'method_definition', cache),
63
+ ...getNodesFromCache(tree.rootNode, 'function', cache),
64
+ ...getNodesFromCache(tree.rootNode, 'function_expression', cache),
56
65
  ];
57
66
  for (const func of functions) {
58
67
  const body = func.childForFieldName('body');
@@ -80,8 +89,8 @@ export function buildCFG(tree, language) {
80
89
  else {
81
90
  // Find all Java method bodies
82
91
  const methods = [
83
- ...findNodes(tree.rootNode, 'method_declaration'),
84
- ...findNodes(tree.rootNode, 'constructor_declaration'),
92
+ ...getNodesFromCache(tree.rootNode, 'method_declaration', cache),
93
+ ...getNodesFromCache(tree.rootNode, 'constructor_declaration', cache),
85
94
  ];
86
95
  for (const method of methods) {
87
96
  const body = method.childForFieldName('body');
@@ -1 +1 @@
1
- {"version":3,"file":"cfg.js","sourceRoot":"","sources":["../../../src/core/extractors/cfg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cfg.js","sourceRoot":"","sources":["../../../src/core/extractors/cfg.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,16 @@
3
3
  */
4
4
  import type { Tree } from 'web-tree-sitter';
5
5
  import type { ImportInfo, SupportedLanguage } from '../../types/index.js';
6
+ import { type NodeCache } from '../parser.js';
6
7
  /**
7
8
  * Extract all imports from the tree.
9
+ *
10
+ * `cache` (added in 3.172.0, cognium-dev#254 T2-C): when provided, per-
11
+ * language `findNodes` walks (import_statement / import_declaration /
12
+ * import_from_statement / use_declaration / call_expression for
13
+ * CommonJS `require`) are replaced with O(1) cache lookups populated by
14
+ * `collectAllNodes` at analyzer entry. Falls back to `findNodes` when
15
+ * cache is absent (test / library callers).
8
16
  */
9
- export declare function extractImports(tree: Tree, language?: SupportedLanguage): ImportInfo[];
17
+ export declare function extractImports(tree: Tree, language?: SupportedLanguage, cache?: NodeCache): ImportInfo[];
10
18
  //# sourceMappingURL=imports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/core/extractors/imports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAQ,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAqD1E;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAmBrF"}
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/core/extractors/imports.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAQ,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAoD9E;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,EAAE,CAmBxG"}