circle-ir 3.164.0 → 3.166.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/entry-point-detection.d.ts +28 -1
- package/dist/analysis/entry-point-detection.d.ts.map +1 -1
- package/dist/analysis/entry-point-detection.js +619 -13
- package/dist/analysis/entry-point-detection.js.map +1 -1
- package/dist/analysis/findings.d.ts +9 -1
- package/dist/analysis/findings.d.ts.map +1 -1
- package/dist/analysis/findings.js +17 -2
- package/dist/analysis/findings.js.map +1 -1
- package/dist/analysis/index.d.ts +1 -0
- package/dist/analysis/index.d.ts.map +1 -1
- package/dist/analysis/index.js +1 -0
- package/dist/analysis/index.js.map +1 -1
- package/dist/analysis/non-executable-lines.d.ts +37 -0
- package/dist/analysis/non-executable-lines.d.ts.map +1 -0
- package/dist/analysis/non-executable-lines.js +135 -0
- package/dist/analysis/non-executable-lines.js.map +1 -0
- package/dist/analysis/passes/interprocedural-pass.d.ts.map +1 -1
- package/dist/analysis/passes/interprocedural-pass.js +7 -1
- package/dist/analysis/passes/interprocedural-pass.js.map +1 -1
- package/dist/analysis/require-entry-path.d.ts +6 -2
- package/dist/analysis/require-entry-path.d.ts.map +1 -1
- package/dist/analysis/require-entry-path.js +86 -11
- package/dist/analysis/require-entry-path.js.map +1 -1
- package/dist/browser/circle-ir.js +435 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -33,8 +33,12 @@
|
|
|
33
33
|
*
|
|
34
34
|
* # Scope
|
|
35
35
|
*
|
|
36
|
-
* - Java
|
|
37
|
-
*
|
|
36
|
+
* - Java + Python + JS/TS + Go + Bash (as of 3.166.0, #237). Rust /
|
|
37
|
+
* HTML / Vue / unknown languages pass through unchanged. The
|
|
38
|
+
* `SUPPORTED_LANGUAGES` set below controls language admission; the
|
|
39
|
+
* per-language safety guard (`entryPointKeysByLanguage.get(lang) === 0
|
|
40
|
+
* → keep`) preserves recall on library-only bundles where the
|
|
41
|
+
* classifier truly has no signal.
|
|
38
42
|
* - Project-level only. Per-file `analyze()` never runs this helper —
|
|
39
43
|
* the reachability question is meaningful only across a full scan.
|
|
40
44
|
* - Only H+C findings from taint passes are candidates for drop. Metric
|
|
@@ -158,8 +162,18 @@ export function applyRequireEntryPath(fileAnalyses, options = {}) {
|
|
|
158
162
|
const graph = buildProjectMethodGraph(fileAnalyses);
|
|
159
163
|
if (graph.methodsByKey.size === 0)
|
|
160
164
|
return;
|
|
165
|
+
// Per-file classifier context (calls, runtime_registrations) — used
|
|
166
|
+
// by the polyglot classifier for Go inline call walks and JS/TS +
|
|
167
|
+
// Python handler resolution. Added 3.166.0 (#237).
|
|
168
|
+
const fileContext = buildFileContext(fileAnalyses);
|
|
161
169
|
// Classify entry points once — reused for every finding.
|
|
162
|
-
const entryPointKeys = collectEntryPointKeys(graph);
|
|
170
|
+
const entryPointKeys = collectEntryPointKeys(graph, fileContext);
|
|
171
|
+
// Per-language entry-point-key count — used by the safety guard
|
|
172
|
+
// (#237): if a language has ZERO classified entry points across the
|
|
173
|
+
// whole scan, findings on that language MUST be preserved regardless
|
|
174
|
+
// of profile / BFS. Otherwise, the polyglot expansion could over-drop
|
|
175
|
+
// on languages where the classifier's positive signal is thin.
|
|
176
|
+
const entryPointKeysByLanguage = countEntryPointKeysByLanguage(graph, entryPointKeys);
|
|
163
177
|
const profileResolver = makeProfileResolver(options.projectProfile);
|
|
164
178
|
for (const fa of fileAnalyses) {
|
|
165
179
|
const findings = fa.analysis.findings;
|
|
@@ -167,7 +181,7 @@ export function applyRequireEntryPath(fileAnalyses, options = {}) {
|
|
|
167
181
|
continue;
|
|
168
182
|
const kept = [];
|
|
169
183
|
for (const finding of findings) {
|
|
170
|
-
const decision = classifyFinding(finding, fa.analysis, graph, entryPointKeys, profileResolver(fa.file));
|
|
184
|
+
const decision = classifyFinding(finding, fa.analysis, graph, entryPointKeys, entryPointKeysByLanguage, profileResolver(fa.file));
|
|
171
185
|
switch (decision.action) {
|
|
172
186
|
case 'keep':
|
|
173
187
|
kept.push(finding);
|
|
@@ -291,19 +305,72 @@ function resolveCalleeKeys(call, methodsByKey, methodsByName) {
|
|
|
291
305
|
// ---------------------------------------------------------------------------
|
|
292
306
|
// Entry-point classification
|
|
293
307
|
// ---------------------------------------------------------------------------
|
|
294
|
-
function collectEntryPointKeys(graph) {
|
|
308
|
+
function collectEntryPointKeys(graph, fileContext) {
|
|
295
309
|
const entryPoints = new Set();
|
|
296
310
|
for (const rec of graph.methodsByKey.values()) {
|
|
311
|
+
const fileCtx = fileContext.get(rec.file);
|
|
297
312
|
const tier = classifyEntryPointTier(rec.method, rec.enclosingType, {
|
|
298
313
|
types: [rec.enclosingType],
|
|
299
314
|
language: rec.language,
|
|
315
|
+
filePath: rec.file,
|
|
316
|
+
calls: fileCtx?.calls ?? null,
|
|
317
|
+
runtimeRegistrations: fileCtx?.runtimeRegistrations ?? null,
|
|
300
318
|
});
|
|
301
319
|
if (tier === 'TIER_1_ENTRY_POINT')
|
|
302
320
|
entryPoints.add(rec.key);
|
|
303
321
|
}
|
|
304
322
|
return entryPoints;
|
|
305
323
|
}
|
|
306
|
-
function
|
|
324
|
+
function buildFileContext(fileAnalyses) {
|
|
325
|
+
const out = new Map();
|
|
326
|
+
for (const fa of fileAnalyses) {
|
|
327
|
+
out.set(fa.file, {
|
|
328
|
+
language: (fa.analysis.meta.language ?? '').toLowerCase(),
|
|
329
|
+
calls: fa.analysis.calls ?? null,
|
|
330
|
+
runtimeRegistrations: fa.analysis.runtime_registrations ?? null,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
return out;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Bucket the entry-point-keys set by the language of each key's method
|
|
337
|
+
* record. Used by `classifyFinding` to enforce the per-language safety
|
|
338
|
+
* guard: if a language has zero Tier-1 entry points, keep every
|
|
339
|
+
* finding on that language (preserves recall — see #237 plan).
|
|
340
|
+
*/
|
|
341
|
+
function countEntryPointKeysByLanguage(graph, entryPointKeys) {
|
|
342
|
+
const out = new Map();
|
|
343
|
+
for (const key of entryPointKeys) {
|
|
344
|
+
const rec = graph.methodsByKey.get(key);
|
|
345
|
+
if (!rec)
|
|
346
|
+
continue;
|
|
347
|
+
out.set(rec.language, (out.get(rec.language) ?? 0) + 1);
|
|
348
|
+
}
|
|
349
|
+
return out;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Languages whose entry-point classifier is expected to emit at least
|
|
353
|
+
* some Tier-1 signal on a well-formed application. Files whose
|
|
354
|
+
* language is NOT in this set short-circuit to `keep` — the classifier
|
|
355
|
+
* would return `TIER_UNKNOWN` and dropping on the miss branch would
|
|
356
|
+
* strip legitimate signal on languages we haven't taught the
|
|
357
|
+
* classifier yet (Rust, HTML, Vue).
|
|
358
|
+
*
|
|
359
|
+
* Added 3.166.0 for cognium-dev #237 polyglot expansion — replaces the
|
|
360
|
+
* hardcoded `if (language !== 'java')` gate.
|
|
361
|
+
*/
|
|
362
|
+
const SUPPORTED_LANGUAGES = new Set([
|
|
363
|
+
'java',
|
|
364
|
+
'python',
|
|
365
|
+
'javascript',
|
|
366
|
+
'typescript',
|
|
367
|
+
'tsx',
|
|
368
|
+
'jsx',
|
|
369
|
+
'go',
|
|
370
|
+
'bash',
|
|
371
|
+
'shell',
|
|
372
|
+
]);
|
|
373
|
+
function classifyFinding(finding, ir, graph, entryPointKeys, entryPointKeysByLanguage, profile) {
|
|
307
374
|
// Only taint findings from the security category are in scope.
|
|
308
375
|
if (finding.category !== 'security')
|
|
309
376
|
return { action: 'keep' };
|
|
@@ -318,13 +385,21 @@ function classifyFinding(finding, ir, graph, entryPointKeys, profile) {
|
|
|
318
385
|
// are preserved regardless of reachability (may still be annotated
|
|
319
386
|
// when we can).
|
|
320
387
|
const isHighOrCritical = finding.severity === 'high' || finding.severity === 'critical';
|
|
321
|
-
//
|
|
322
|
-
//
|
|
323
|
-
//
|
|
324
|
-
// signal on Python / Node / Go / Rust — pass through unchanged.
|
|
388
|
+
// Polyglot-supported languages (#237). Rust / HTML / Vue / unknown
|
|
389
|
+
// route via `keep` — the classifier lacks the framework tables to
|
|
390
|
+
// decide, and misclassifying to TIER_UNKNOWN cannot support a drop.
|
|
325
391
|
const language = (ir.meta.language ?? '').toLowerCase();
|
|
326
|
-
if (language
|
|
392
|
+
if (!SUPPORTED_LANGUAGES.has(language))
|
|
393
|
+
return { action: 'keep' };
|
|
394
|
+
// Safety guard (#237). If the language's classifier found ZERO
|
|
395
|
+
// Tier-1 entry points across the whole scan, the reachability
|
|
396
|
+
// question has no answer we can trust — preserve the finding. This
|
|
397
|
+
// is what keeps recall on library / helper-only bundles where the
|
|
398
|
+
// classifier truly has no signal, and matches the plan's per-file-
|
|
399
|
+
// language guard specification.
|
|
400
|
+
if ((entryPointKeysByLanguage.get(language) ?? 0) === 0) {
|
|
327
401
|
return { action: 'keep' };
|
|
402
|
+
}
|
|
328
403
|
// Resolve containing method by (file, line-range) lookup.
|
|
329
404
|
const containing = findContainingMethod(finding, ir, graph);
|
|
330
405
|
if (!containing) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"require-entry-path.js","sourceRoot":"","sources":["../../src/analysis/require-entry-path.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"require-entry-path.js","sourceRoot":"","sources":["../../src/analysis/require-entry-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -20148,9 +20148,28 @@ function methodIsSupertypeLifecycleEntryPoint(method, enclosingType) {
|
|
|
20148
20148
|
return false;
|
|
20149
20149
|
}
|
|
20150
20150
|
function classifyEntryPointTier(method, enclosingType, ctx) {
|
|
20151
|
-
const language = (ctx.language ?? "").toLowerCase();
|
|
20152
|
-
if (language !== "java") return "TIER_UNKNOWN";
|
|
20153
20151
|
if (!method) return "TIER_UNKNOWN";
|
|
20152
|
+
const language = (ctx.language ?? "").toLowerCase();
|
|
20153
|
+
switch (language) {
|
|
20154
|
+
case "java":
|
|
20155
|
+
return classifyJavaEntryPoint(method, enclosingType);
|
|
20156
|
+
case "python":
|
|
20157
|
+
return classifyPythonEntryPoint(method, enclosingType, ctx);
|
|
20158
|
+
case "javascript":
|
|
20159
|
+
case "typescript":
|
|
20160
|
+
case "tsx":
|
|
20161
|
+
case "jsx":
|
|
20162
|
+
return classifyJsTsEntryPoint(method, enclosingType, ctx);
|
|
20163
|
+
case "go":
|
|
20164
|
+
return classifyGoEntryPoint(method, enclosingType, ctx);
|
|
20165
|
+
case "bash":
|
|
20166
|
+
case "shell":
|
|
20167
|
+
return classifyBashEntryPoint(method, enclosingType, ctx);
|
|
20168
|
+
default:
|
|
20169
|
+
return "TIER_UNKNOWN";
|
|
20170
|
+
}
|
|
20171
|
+
}
|
|
20172
|
+
function classifyJavaEntryPoint(method, enclosingType) {
|
|
20154
20173
|
if (classShapeIsLibraryFacade(enclosingType)) {
|
|
20155
20174
|
return "TIER_3_LIBRARY_API";
|
|
20156
20175
|
}
|
|
@@ -20174,6 +20193,413 @@ function shouldGateInterproceduralParam(sourceType, enclosingMethod, enclosingTy
|
|
|
20174
20193
|
const tier = classifyEntryPointTier(enclosingMethod, enclosingType, ctx);
|
|
20175
20194
|
return tier === "TIER_3_LIBRARY_API";
|
|
20176
20195
|
}
|
|
20196
|
+
var POLYGLOT_LIBRARY_PATH_FRAGMENTS = [
|
|
20197
|
+
"/lib/",
|
|
20198
|
+
"/libapi/",
|
|
20199
|
+
"/libs/",
|
|
20200
|
+
"/utils/",
|
|
20201
|
+
"/util/",
|
|
20202
|
+
"/helpers/",
|
|
20203
|
+
"/helper/",
|
|
20204
|
+
"/interop/",
|
|
20205
|
+
"/vendor/",
|
|
20206
|
+
"/vendored/",
|
|
20207
|
+
"/node_modules/",
|
|
20208
|
+
"/dist/",
|
|
20209
|
+
"/build/",
|
|
20210
|
+
"/_internal/",
|
|
20211
|
+
"/__tests__/",
|
|
20212
|
+
"/tests/",
|
|
20213
|
+
"/test/",
|
|
20214
|
+
"/testing/",
|
|
20215
|
+
"/spec/",
|
|
20216
|
+
"/specs/",
|
|
20217
|
+
"/fixtures/",
|
|
20218
|
+
"/mocks/",
|
|
20219
|
+
"/__mocks__/"
|
|
20220
|
+
];
|
|
20221
|
+
var POLYGLOT_TEST_FILE_MARKERS = [
|
|
20222
|
+
".test.",
|
|
20223
|
+
".spec.",
|
|
20224
|
+
"_test.",
|
|
20225
|
+
"_spec.",
|
|
20226
|
+
".tests."
|
|
20227
|
+
];
|
|
20228
|
+
function pathLooksLikeLibraryOrTest(filePath) {
|
|
20229
|
+
if (!filePath) return false;
|
|
20230
|
+
const normalized = filePath.replace(/\\/g, "/").toLowerCase();
|
|
20231
|
+
const padded = `/${normalized}/`;
|
|
20232
|
+
for (const frag of POLYGLOT_LIBRARY_PATH_FRAGMENTS) {
|
|
20233
|
+
if (padded.includes(frag)) return true;
|
|
20234
|
+
}
|
|
20235
|
+
const slash = normalized.lastIndexOf("/");
|
|
20236
|
+
const base = slash >= 0 ? normalized.slice(slash + 1) : normalized;
|
|
20237
|
+
for (const marker of POLYGLOT_TEST_FILE_MARKERS) {
|
|
20238
|
+
if (base.includes(marker)) return true;
|
|
20239
|
+
}
|
|
20240
|
+
return false;
|
|
20241
|
+
}
|
|
20242
|
+
var PYTHON_TIER_1_DECORATOR_NAMES = /* @__PURE__ */ new Set([
|
|
20243
|
+
// Flask
|
|
20244
|
+
"route",
|
|
20245
|
+
"get",
|
|
20246
|
+
"post",
|
|
20247
|
+
"put",
|
|
20248
|
+
"delete",
|
|
20249
|
+
"patch",
|
|
20250
|
+
"options",
|
|
20251
|
+
"head",
|
|
20252
|
+
"before_request",
|
|
20253
|
+
"after_request",
|
|
20254
|
+
"errorhandler",
|
|
20255
|
+
"teardown_request",
|
|
20256
|
+
// FastAPI
|
|
20257
|
+
"websocket",
|
|
20258
|
+
"websocket_route",
|
|
20259
|
+
"api_route",
|
|
20260
|
+
"middleware",
|
|
20261
|
+
// Django
|
|
20262
|
+
"login_required",
|
|
20263
|
+
"csrf_exempt",
|
|
20264
|
+
"csrf_protect",
|
|
20265
|
+
"require_http_methods",
|
|
20266
|
+
"require_GET",
|
|
20267
|
+
"require_POST",
|
|
20268
|
+
"require_safe",
|
|
20269
|
+
"permission_required",
|
|
20270
|
+
"user_passes_test",
|
|
20271
|
+
"staff_member_required",
|
|
20272
|
+
"api_view",
|
|
20273
|
+
"action",
|
|
20274
|
+
"detail_route",
|
|
20275
|
+
"list_route",
|
|
20276
|
+
"renderer_classes",
|
|
20277
|
+
"authentication_classes",
|
|
20278
|
+
"permission_classes",
|
|
20279
|
+
// Click / Typer
|
|
20280
|
+
"command",
|
|
20281
|
+
"group",
|
|
20282
|
+
// Celery / RQ / dramatiq
|
|
20283
|
+
"task",
|
|
20284
|
+
"shared_task",
|
|
20285
|
+
"periodic_task",
|
|
20286
|
+
"actor",
|
|
20287
|
+
// aiohttp
|
|
20288
|
+
"view",
|
|
20289
|
+
// pytest fixtures ARE library callback surfaces (test framework calls
|
|
20290
|
+
// them), so we mark them TIER_1 too — a taint sink inside a fixture
|
|
20291
|
+
// is genuinely reachable when the test runs.
|
|
20292
|
+
"fixture"
|
|
20293
|
+
]);
|
|
20294
|
+
function classifyPythonEntryPoint(method, enclosingType, ctx) {
|
|
20295
|
+
if (pathLooksLikeLibraryOrTest(ctx.filePath)) {
|
|
20296
|
+
return "TIER_3_LIBRARY_API";
|
|
20297
|
+
}
|
|
20298
|
+
if (pythonDecoratorLooksTier1(method.annotations)) {
|
|
20299
|
+
return "TIER_1_ENTRY_POINT";
|
|
20300
|
+
}
|
|
20301
|
+
if (methodIsRuntimeRegistrationHandler(method, ctx.runtimeRegistrations)) {
|
|
20302
|
+
return "TIER_1_ENTRY_POINT";
|
|
20303
|
+
}
|
|
20304
|
+
if (method.name === "main" && !enclosingType) {
|
|
20305
|
+
return "TIER_1_ENTRY_POINT";
|
|
20306
|
+
}
|
|
20307
|
+
if (method.name === "main" && enclosingType && looksLikeModuleType(enclosingType)) {
|
|
20308
|
+
return "TIER_1_ENTRY_POINT";
|
|
20309
|
+
}
|
|
20310
|
+
if (method.name.startsWith("_") && !method.name.startsWith("__")) {
|
|
20311
|
+
return "TIER_3_LIBRARY_API";
|
|
20312
|
+
}
|
|
20313
|
+
return "TIER_UNKNOWN";
|
|
20314
|
+
}
|
|
20315
|
+
function pythonDecoratorLooksTier1(annotations) {
|
|
20316
|
+
if (!annotations || annotations.length === 0) return false;
|
|
20317
|
+
for (const raw of annotations) {
|
|
20318
|
+
let name2 = raw.replace(/^@/, "").replace(/[<(].*$/, "").trim();
|
|
20319
|
+
if (!name2) continue;
|
|
20320
|
+
const dot = name2.lastIndexOf(".");
|
|
20321
|
+
if (dot >= 0) name2 = name2.slice(dot + 1);
|
|
20322
|
+
if (PYTHON_TIER_1_DECORATOR_NAMES.has(name2)) return true;
|
|
20323
|
+
}
|
|
20324
|
+
return false;
|
|
20325
|
+
}
|
|
20326
|
+
function looksLikeModuleType(t) {
|
|
20327
|
+
return !t.extends && (!t.implements || t.implements.length === 0) && (!t.annotations || t.annotations.length === 0);
|
|
20328
|
+
}
|
|
20329
|
+
var JSTS_TIER_1_METHOD_DECORATORS = /* @__PURE__ */ new Set([
|
|
20330
|
+
// NestJS HTTP method decorators
|
|
20331
|
+
"Get",
|
|
20332
|
+
"Post",
|
|
20333
|
+
"Put",
|
|
20334
|
+
"Delete",
|
|
20335
|
+
"Patch",
|
|
20336
|
+
"Head",
|
|
20337
|
+
"Options",
|
|
20338
|
+
"All",
|
|
20339
|
+
// NestJS WebSocket
|
|
20340
|
+
"SubscribeMessage",
|
|
20341
|
+
"MessageBody",
|
|
20342
|
+
"ConnectedSocket",
|
|
20343
|
+
// NestJS microservices / event
|
|
20344
|
+
"EventPattern",
|
|
20345
|
+
"MessagePattern",
|
|
20346
|
+
"GrpcMethod",
|
|
20347
|
+
"GrpcStreamMethod",
|
|
20348
|
+
// Angular / other DI-registered handler hooks
|
|
20349
|
+
"HostListener"
|
|
20350
|
+
]);
|
|
20351
|
+
var JSTS_TIER_1_CLASS_DECORATORS = /* @__PURE__ */ new Set([
|
|
20352
|
+
"Controller",
|
|
20353
|
+
"RestController",
|
|
20354
|
+
"Resolver",
|
|
20355
|
+
"WebSocketGateway",
|
|
20356
|
+
"Gateway"
|
|
20357
|
+
]);
|
|
20358
|
+
var JSTS_TIER_1_MODULE_EXPORTS = /* @__PURE__ */ new Set([
|
|
20359
|
+
// AWS Lambda / Google Cloud Functions / Netlify / Vercel
|
|
20360
|
+
"handler",
|
|
20361
|
+
// Next.js App Router — HTTP method exports
|
|
20362
|
+
"GET",
|
|
20363
|
+
"POST",
|
|
20364
|
+
"PUT",
|
|
20365
|
+
"DELETE",
|
|
20366
|
+
"PATCH",
|
|
20367
|
+
"HEAD",
|
|
20368
|
+
"OPTIONS",
|
|
20369
|
+
// SvelteKit / Remix
|
|
20370
|
+
"load",
|
|
20371
|
+
"action",
|
|
20372
|
+
// Next.js middleware
|
|
20373
|
+
"middleware"
|
|
20374
|
+
]);
|
|
20375
|
+
function classifyJsTsEntryPoint(method, enclosingType, ctx) {
|
|
20376
|
+
if (pathLooksLikeLibraryOrTest(ctx.filePath)) {
|
|
20377
|
+
return "TIER_3_LIBRARY_API";
|
|
20378
|
+
}
|
|
20379
|
+
if (annotationsInclude(method.annotations, JSTS_TIER_1_METHOD_DECORATORS)) {
|
|
20380
|
+
return "TIER_1_ENTRY_POINT";
|
|
20381
|
+
}
|
|
20382
|
+
if (enclosingType && annotationsInclude(enclosingType.annotations, JSTS_TIER_1_CLASS_DECORATORS)) {
|
|
20383
|
+
return "TIER_1_ENTRY_POINT";
|
|
20384
|
+
}
|
|
20385
|
+
if (methodIsRuntimeRegistrationHandler(method, ctx.runtimeRegistrations)) {
|
|
20386
|
+
return "TIER_1_ENTRY_POINT";
|
|
20387
|
+
}
|
|
20388
|
+
if (JSTS_TIER_1_MODULE_EXPORTS.has(method.name) && (!enclosingType || looksLikeModuleType(enclosingType))) {
|
|
20389
|
+
return "TIER_1_ENTRY_POINT";
|
|
20390
|
+
}
|
|
20391
|
+
if (method.name === "main" && (!enclosingType || looksLikeModuleType(enclosingType))) {
|
|
20392
|
+
return "TIER_1_ENTRY_POINT";
|
|
20393
|
+
}
|
|
20394
|
+
return "TIER_UNKNOWN";
|
|
20395
|
+
}
|
|
20396
|
+
var GO_HTTP_REGISTRAR_METHODS = /* @__PURE__ */ new Set([
|
|
20397
|
+
// net/http
|
|
20398
|
+
"HandleFunc",
|
|
20399
|
+
"Handle",
|
|
20400
|
+
// gorilla/mux, chi, echo, gin
|
|
20401
|
+
"GET",
|
|
20402
|
+
"POST",
|
|
20403
|
+
"PUT",
|
|
20404
|
+
"DELETE",
|
|
20405
|
+
"PATCH",
|
|
20406
|
+
"HEAD",
|
|
20407
|
+
"OPTIONS",
|
|
20408
|
+
"Any",
|
|
20409
|
+
"Get",
|
|
20410
|
+
"Post",
|
|
20411
|
+
"Put",
|
|
20412
|
+
"Delete",
|
|
20413
|
+
"Patch",
|
|
20414
|
+
"Head",
|
|
20415
|
+
"Options",
|
|
20416
|
+
// gorilla/chi/gin sub-routers
|
|
20417
|
+
"Route",
|
|
20418
|
+
"Mount",
|
|
20419
|
+
"Method"
|
|
20420
|
+
]);
|
|
20421
|
+
var GO_HTTP_REGISTRAR_RECEIVERS = [
|
|
20422
|
+
"http",
|
|
20423
|
+
// net/http.HandleFunc
|
|
20424
|
+
"mux",
|
|
20425
|
+
// gorilla/mux
|
|
20426
|
+
"router",
|
|
20427
|
+
// chi/gin/gorilla common
|
|
20428
|
+
"r",
|
|
20429
|
+
// gin/chi convention
|
|
20430
|
+
"e",
|
|
20431
|
+
// echo convention
|
|
20432
|
+
"g",
|
|
20433
|
+
// gin group convention
|
|
20434
|
+
"app",
|
|
20435
|
+
// fiber convention
|
|
20436
|
+
"engine",
|
|
20437
|
+
// gin engine convention
|
|
20438
|
+
"srv",
|
|
20439
|
+
"server"
|
|
20440
|
+
];
|
|
20441
|
+
function classifyGoEntryPoint(method, enclosingType, ctx) {
|
|
20442
|
+
if (pathLooksLikeLibraryOrTest(ctx.filePath)) {
|
|
20443
|
+
return "TIER_3_LIBRARY_API";
|
|
20444
|
+
}
|
|
20445
|
+
if (ctx.filePath && ctx.filePath.toLowerCase().endsWith("_test.go")) {
|
|
20446
|
+
return "TIER_3_LIBRARY_API";
|
|
20447
|
+
}
|
|
20448
|
+
if (method.name === "main" && enclosingType?.package === "main") {
|
|
20449
|
+
return "TIER_1_ENTRY_POINT";
|
|
20450
|
+
}
|
|
20451
|
+
if (methodHasNetHttpHandlerSignature(method)) {
|
|
20452
|
+
return "TIER_1_ENTRY_POINT";
|
|
20453
|
+
}
|
|
20454
|
+
if (methodLooksLikeGrpcHandler(method, enclosingType)) {
|
|
20455
|
+
return "TIER_1_ENTRY_POINT";
|
|
20456
|
+
}
|
|
20457
|
+
if (methodIsRegisteredByGoHttpFramework(method, ctx.calls)) {
|
|
20458
|
+
return "TIER_1_ENTRY_POINT";
|
|
20459
|
+
}
|
|
20460
|
+
return "TIER_UNKNOWN";
|
|
20461
|
+
}
|
|
20462
|
+
function methodHasNetHttpHandlerSignature(method) {
|
|
20463
|
+
const params = method.parameters ?? [];
|
|
20464
|
+
if (params.length !== 2) return false;
|
|
20465
|
+
const p0 = normalizeGoType(params[0]?.type ?? "");
|
|
20466
|
+
const p1 = normalizeGoType(params[1]?.type ?? "");
|
|
20467
|
+
const p0IsWriter = p0.includes("http.ResponseWriter") || p0.endsWith("ResponseWriter");
|
|
20468
|
+
const p1IsRequest = p1.includes("http.Request") || p1.endsWith("*Request") || p1.endsWith("Request");
|
|
20469
|
+
return p0IsWriter && p1IsRequest;
|
|
20470
|
+
}
|
|
20471
|
+
function methodLooksLikeGrpcHandler(method, enclosingType) {
|
|
20472
|
+
if (!enclosingType) return false;
|
|
20473
|
+
const params = method.parameters ?? [];
|
|
20474
|
+
if (params.length < 2) return false;
|
|
20475
|
+
const p0 = normalizeGoType(params[0]?.type ?? "");
|
|
20476
|
+
if (!p0.includes("context.Context") && !p0.endsWith("Context")) return false;
|
|
20477
|
+
const typeName = enclosingType.name ?? "";
|
|
20478
|
+
if (!/(Server|Service|Handler)$/.test(typeName)) return false;
|
|
20479
|
+
return true;
|
|
20480
|
+
}
|
|
20481
|
+
function normalizeGoType(t) {
|
|
20482
|
+
return t.replace(/\s+/g, "").replace(/^\*+/, "");
|
|
20483
|
+
}
|
|
20484
|
+
function methodIsRegisteredByGoHttpFramework(method, calls) {
|
|
20485
|
+
if (!calls || calls.length === 0) return false;
|
|
20486
|
+
for (const call of calls) {
|
|
20487
|
+
if (!GO_HTTP_REGISTRAR_METHODS.has(call.method_name)) continue;
|
|
20488
|
+
const receiver = call.receiver ?? "";
|
|
20489
|
+
if (!goRegistrarReceiverMatches(receiver)) continue;
|
|
20490
|
+
const args2 = call.arguments ?? [];
|
|
20491
|
+
for (const arg of args2) {
|
|
20492
|
+
const expr = (arg.expression ?? arg.variable ?? arg.value ?? "").trim();
|
|
20493
|
+
if (!expr) continue;
|
|
20494
|
+
const short = expr.slice(expr.lastIndexOf(".") + 1);
|
|
20495
|
+
if (short === method.name) return true;
|
|
20496
|
+
}
|
|
20497
|
+
}
|
|
20498
|
+
return false;
|
|
20499
|
+
}
|
|
20500
|
+
function goRegistrarReceiverMatches(receiver) {
|
|
20501
|
+
const trimmed = receiver.trim();
|
|
20502
|
+
if (!trimmed) return false;
|
|
20503
|
+
for (const target of GO_HTTP_REGISTRAR_RECEIVERS) {
|
|
20504
|
+
if (trimmed === target) return true;
|
|
20505
|
+
if (trimmed.endsWith(`.${target}`)) return true;
|
|
20506
|
+
}
|
|
20507
|
+
return false;
|
|
20508
|
+
}
|
|
20509
|
+
var BASH_POSITIONAL_TOKENS = [
|
|
20510
|
+
"$1",
|
|
20511
|
+
"$2",
|
|
20512
|
+
"$3",
|
|
20513
|
+
"$4",
|
|
20514
|
+
"$5",
|
|
20515
|
+
"$6",
|
|
20516
|
+
"$7",
|
|
20517
|
+
"$8",
|
|
20518
|
+
"$9",
|
|
20519
|
+
"$@",
|
|
20520
|
+
"$*",
|
|
20521
|
+
"$#",
|
|
20522
|
+
"${1",
|
|
20523
|
+
"${2",
|
|
20524
|
+
"${3",
|
|
20525
|
+
"${@",
|
|
20526
|
+
"getopts"
|
|
20527
|
+
];
|
|
20528
|
+
var BASH_LIBRARY_FILENAME_PREFIXES = [
|
|
20529
|
+
"benign_",
|
|
20530
|
+
"safe_",
|
|
20531
|
+
"lib_",
|
|
20532
|
+
"common_",
|
|
20533
|
+
"helpers_",
|
|
20534
|
+
"_"
|
|
20535
|
+
];
|
|
20536
|
+
function classifyBashEntryPoint(method, enclosingType, ctx) {
|
|
20537
|
+
if (pathLooksLikeLibraryOrTest(ctx.filePath)) {
|
|
20538
|
+
return "TIER_3_LIBRARY_API";
|
|
20539
|
+
}
|
|
20540
|
+
if (bashFilenameLooksLikeLibrary(ctx.filePath)) {
|
|
20541
|
+
return "TIER_3_LIBRARY_API";
|
|
20542
|
+
}
|
|
20543
|
+
if (method.name === "main") {
|
|
20544
|
+
return "TIER_1_ENTRY_POINT";
|
|
20545
|
+
}
|
|
20546
|
+
if (methodConsumesPositionalArgs(method, ctx.calls)) {
|
|
20547
|
+
return "TIER_1_ENTRY_POINT";
|
|
20548
|
+
}
|
|
20549
|
+
if (enclosingType && looksLikeModuleType(enclosingType) && fileHasPositionalArgUse(ctx.calls)) {
|
|
20550
|
+
return "TIER_1_ENTRY_POINT";
|
|
20551
|
+
}
|
|
20552
|
+
return "TIER_UNKNOWN";
|
|
20553
|
+
}
|
|
20554
|
+
function bashFilenameLooksLikeLibrary(filePath) {
|
|
20555
|
+
if (!filePath) return false;
|
|
20556
|
+
const normalized = filePath.replace(/\\/g, "/");
|
|
20557
|
+
const slash = normalized.lastIndexOf("/");
|
|
20558
|
+
const base = (slash >= 0 ? normalized.slice(slash + 1) : normalized).toLowerCase();
|
|
20559
|
+
for (const prefix of BASH_LIBRARY_FILENAME_PREFIXES) {
|
|
20560
|
+
if (base.startsWith(prefix)) return true;
|
|
20561
|
+
}
|
|
20562
|
+
if (base.includes(".test.") || base.includes("_test.")) return true;
|
|
20563
|
+
return false;
|
|
20564
|
+
}
|
|
20565
|
+
function methodConsumesPositionalArgs(method, calls) {
|
|
20566
|
+
if (!calls || calls.length === 0) return false;
|
|
20567
|
+
for (const call of calls) {
|
|
20568
|
+
if (call.location.line < method.start_line) continue;
|
|
20569
|
+
if (call.location.line > method.end_line) continue;
|
|
20570
|
+
if (callHasPositionalToken(call)) return true;
|
|
20571
|
+
}
|
|
20572
|
+
return false;
|
|
20573
|
+
}
|
|
20574
|
+
function fileHasPositionalArgUse(calls) {
|
|
20575
|
+
if (!calls || calls.length === 0) return false;
|
|
20576
|
+
for (const call of calls) {
|
|
20577
|
+
if (callHasPositionalToken(call)) return true;
|
|
20578
|
+
}
|
|
20579
|
+
return false;
|
|
20580
|
+
}
|
|
20581
|
+
function callHasPositionalToken(call) {
|
|
20582
|
+
for (const arg of call.arguments ?? []) {
|
|
20583
|
+
const expr = arg.expression ?? arg.variable ?? arg.value ?? "";
|
|
20584
|
+
for (const tok of BASH_POSITIONAL_TOKENS) {
|
|
20585
|
+
if (expr.includes(tok)) return true;
|
|
20586
|
+
}
|
|
20587
|
+
}
|
|
20588
|
+
if (call.method_name === "getopts") return true;
|
|
20589
|
+
return false;
|
|
20590
|
+
}
|
|
20591
|
+
function methodIsRuntimeRegistrationHandler(method, regs) {
|
|
20592
|
+
if (!regs || regs.length === 0) return false;
|
|
20593
|
+
for (const reg of regs) {
|
|
20594
|
+
if (reg.kind !== "http_route" && reg.kind !== "decorator" && reg.kind !== "event_listener" && reg.kind !== "middleware") {
|
|
20595
|
+
continue;
|
|
20596
|
+
}
|
|
20597
|
+
const handlerName = reg.handler?.name;
|
|
20598
|
+
if (!handlerName) continue;
|
|
20599
|
+
if (handlerName === method.name) return true;
|
|
20600
|
+
}
|
|
20601
|
+
return false;
|
|
20602
|
+
}
|
|
20177
20603
|
|
|
20178
20604
|
// src/analysis/project-profile-transform.ts
|
|
20179
20605
|
var DOWNGRADE_ELIGIBLE_RULE_IDS = /* @__PURE__ */ new Set([
|
|
@@ -33145,7 +33571,13 @@ var InterproceduralPass = class {
|
|
|
33145
33571
|
source.type,
|
|
33146
33572
|
enclosing?.method,
|
|
33147
33573
|
enclosing?.type,
|
|
33148
|
-
{
|
|
33574
|
+
{
|
|
33575
|
+
language,
|
|
33576
|
+
types: graph.ir.types,
|
|
33577
|
+
filePath: graph.ir.meta.file,
|
|
33578
|
+
calls: graph.ir.calls,
|
|
33579
|
+
runtimeRegistrations: graph.ir.runtime_registrations ?? null
|
|
33580
|
+
}
|
|
33149
33581
|
)) {
|
|
33150
33582
|
continue;
|
|
33151
33583
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export type { CircleIR, Meta, TypeInfo, MethodInfo, ParameterInfo, FieldInfo, Ca
|
|
|
12
12
|
export type { SourceConfig, SinkConfig, TaintConfig, SourcePattern, SinkPattern, SanitizerPattern, } from './types/config.js';
|
|
13
13
|
export { initParser, parse, walkTree, findNodes, findAncestor, getNodeText, collectAllNodes, type SupportedLanguage, type SyntaxNode, type Node, type NodeCache, type Tree, } from './core/index.js';
|
|
14
14
|
export { extractMeta, extractTypes, extractCalls, extractImports, extractExports, buildCFG, buildDFG, } from './core/index.js';
|
|
15
|
-
export { getDefaultConfig, createTaintConfig, analyzeTaint, attachSourceLineCode, detectUnresolved, propagateTaint, generateFindings, setFindingsInstrumentation, isFindingsInstrumentationEnabled, analyzeConstantPropagation, ConstantPropagator, isKnown, createUnknown, getNodeLine, DEFAULT_SOURCES, DEFAULT_SINKS, DEFAULT_SANITIZERS, type ConstantValue, type ConstantPropagatorResult, type TaintPropagationResult, type TaintedVariable, type TaintFlow, } from './analysis/index.js';
|
|
15
|
+
export { getDefaultConfig, createTaintConfig, analyzeTaint, attachSourceLineCode, detectUnresolved, propagateTaint, generateFindings, isNonExecutableSourceLine, setFindingsInstrumentation, isFindingsInstrumentationEnabled, analyzeConstantPropagation, ConstantPropagator, isKnown, createUnknown, getNodeLine, DEFAULT_SOURCES, DEFAULT_SINKS, DEFAULT_SANITIZERS, type ConstantValue, type ConstantPropagatorResult, type TaintPropagationResult, type TaintedVariable, type TaintFlow, } from './analysis/index.js';
|
|
16
16
|
export { getRuleInfo, RULE_DEFINITIONS, type RuleInfo, } from './analysis/rules.js';
|
|
17
17
|
export { DominatorGraph } from './graph/dominator-graph.js';
|
|
18
18
|
export { ExceptionFlowGraph, type TryCatchInfo } from './graph/exception-flow-graph.js';
|