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.
- package/dist/analysis/config-loader.d.ts.map +1 -1
- package/dist/analysis/config-loader.js +79 -0
- package/dist/analysis/config-loader.js.map +1 -1
- package/dist/analysis/passes/cross-file-pass.d.ts.map +1 -1
- package/dist/analysis/passes/cross-file-pass.js +3 -2
- package/dist/analysis/passes/cross-file-pass.js.map +1 -1
- package/dist/analysis/passes/interprocedural-pass.d.ts.map +1 -1
- package/dist/analysis/passes/interprocedural-pass.js +3 -2
- package/dist/analysis/passes/interprocedural-pass.js.map +1 -1
- package/dist/analysis/passes/sink-filter-pass.d.ts.map +1 -1
- package/dist/analysis/passes/sink-filter-pass.js +23 -2
- package/dist/analysis/passes/sink-filter-pass.js.map +1 -1
- package/dist/analysis/passes/taint-propagation-pass.d.ts.map +1 -1
- package/dist/analysis/passes/taint-propagation-pass.js +29 -15
- package/dist/analysis/passes/taint-propagation-pass.js.map +1 -1
- package/dist/analysis/sanitizer-index.d.ts +34 -0
- package/dist/analysis/sanitizer-index.d.ts.map +1 -0
- package/dist/analysis/sanitizer-index.js +48 -0
- package/dist/analysis/sanitizer-index.js.map +1 -0
- package/dist/analysis/taint-matcher.d.ts.map +1 -1
- package/dist/analysis/taint-matcher.js +93 -45
- package/dist/analysis/taint-matcher.js.map +1 -1
- package/dist/analysis/taint-propagation.d.ts.map +1 -1
- package/dist/analysis/taint-propagation.js +5 -2
- package/dist/analysis/taint-propagation.js.map +1 -1
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +51 -2
- package/dist/analyzer.js.map +1 -1
- package/dist/browser/circle-ir.js +319 -95
- package/dist/core/circle-ir-core.cjs +193 -72
- package/dist/core/circle-ir-core.js +193 -72
- package/dist/core/extractors/cfg.d.ts +11 -1
- package/dist/core/extractors/cfg.d.ts.map +1 -1
- package/dist/core/extractors/cfg.js +18 -9
- package/dist/core/extractors/cfg.js.map +1 -1
- package/dist/core/extractors/imports.d.ts +9 -1
- package/dist/core/extractors/imports.d.ts.map +1 -1
- package/dist/core/extractors/imports.js +29 -22
- package/dist/core/extractors/imports.js.map +1 -1
- 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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
-
...
|
|
8187
|
-
...
|
|
8188
|
-
...
|
|
8189
|
-
...
|
|
8190
|
-
...
|
|
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
|
-
...
|
|
8213
|
-
...
|
|
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
|
-
|
|
13246
|
-
|
|
13247
|
-
|
|
13248
|
-
|
|
13249
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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;
|
|
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
|
-
...
|
|
52
|
-
...
|
|
53
|
-
...
|
|
54
|
-
...
|
|
55
|
-
...
|
|
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
|
-
...
|
|
84
|
-
...
|
|
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;
|
|
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"}
|