circle-ir 3.189.0 → 3.191.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 +39 -0
- package/dist/analysis/config-loader.js.map +1 -1
- package/dist/analysis/passes/language-sources-pass.d.ts.map +1 -1
- package/dist/analysis/passes/language-sources-pass.js +30 -0
- package/dist/analysis/passes/language-sources-pass.js.map +1 -1
- package/dist/browser/circle-ir.js +71 -2
- package/dist/core/circle-ir-core.cjs +39 -0
- package/dist/core/circle-ir-core.js +39 -0
- package/package.json +1 -1
|
@@ -11291,6 +11291,24 @@ var DEFAULT_SOURCES = [
|
|
|
11291
11291
|
{ method: "text", class: "Request", type: "http_body", severity: "high", return_tainted: true },
|
|
11292
11292
|
{ property: "query", object: "request", type: "http_param", severity: "high", property_tainted: true },
|
|
11293
11293
|
{ property: "match_info", object: "request", type: "http_path", severity: "high", property_tainted: true },
|
|
11294
|
+
//
|
|
11295
|
+
// Extended aiohttp coverage (cognium-dev #213 eleventh slice):
|
|
11296
|
+
// request.rel_url — parsed URL; rel_url.query.get('q') is
|
|
11297
|
+
// the modern idiom for query params
|
|
11298
|
+
// request.remote — client IP (untrusted; can be spoofed
|
|
11299
|
+
// via X-Forwarded-For without proxy)
|
|
11300
|
+
// request.raw_headers — raw byte-tuple header pairs
|
|
11301
|
+
// request.transport — connection metadata (peer_name)
|
|
11302
|
+
{ property: "rel_url", object: "request", type: "http_body", severity: "high", property_tainted: true },
|
|
11303
|
+
{ property: "remote", object: "request", type: "network_input", severity: "high", property_tainted: true },
|
|
11304
|
+
{ property: "raw_headers", object: "request", type: "http_header", severity: "high", property_tainted: true },
|
|
11305
|
+
{ property: "transport", object: "request", type: "network_input", severity: "medium", property_tainted: true },
|
|
11306
|
+
// Quart (async Flask) — shares Flask idioms (request.args/form/json)
|
|
11307
|
+
// covered above, plus these method-based accessors:
|
|
11308
|
+
{ method: "get_json", class: "Request", type: "http_body", severity: "high", return_tainted: true },
|
|
11309
|
+
{ method: "get_data", class: "Request", type: "http_body", severity: "high", return_tainted: true },
|
|
11310
|
+
{ method: "form", class: "Request", type: "http_param", severity: "high", return_tainted: true },
|
|
11311
|
+
{ method: "files", class: "Request", type: "file_input", severity: "high", return_tainted: true },
|
|
11294
11312
|
// =========================================================================
|
|
11295
11313
|
// Rust Sources (Actix-web, Rocket, Axum)
|
|
11296
11314
|
// =========================================================================
|
|
@@ -11502,6 +11520,27 @@ var DEFAULT_SOURCES = [
|
|
|
11502
11520
|
{ method: "get", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
|
|
11503
11521
|
{ method: "hget", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
|
|
11504
11522
|
{ method: "mget", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
|
|
11523
|
+
// --- Modern JS/TS framework sources (cognium-dev #213 tenth slice) ---
|
|
11524
|
+
//
|
|
11525
|
+
// NextJS App Router: `req.nextUrl` is a NextURL instance whose
|
|
11526
|
+
// `.searchParams`, `.pathname`, `.hash` carry attacker-controlled
|
|
11527
|
+
// request state.
|
|
11528
|
+
// req.nextUrl.searchParams.get('id')
|
|
11529
|
+
// req.nextUrl.pathname
|
|
11530
|
+
{ property: "nextUrl", object: "req", type: "http_body", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
11531
|
+
{ property: "nextUrl", object: "request", type: "http_body", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
11532
|
+
// Angular ActivatedRoute: `route.snapshot.params` / `queryParams` /
|
|
11533
|
+
// `data`, and `route.paramMap` (Observable-based) are the two
|
|
11534
|
+
// idioms for reading URL params.
|
|
11535
|
+
{ property: "snapshot", object: "route", type: "http_path", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
11536
|
+
{ property: "paramMap", object: "route", type: "http_path", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
11537
|
+
{ property: "queryParamMap", object: "route", type: "http_param", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
11538
|
+
// Remix / SvelteKit / Astro / Bun / Deno all destructure `{ params, request, url }`
|
|
11539
|
+
// from a handler-args object. Registering `params` / `url` /
|
|
11540
|
+
// `searchParams` as unqualified properties would over-fire; instead
|
|
11541
|
+
// add regex-based coverage in language-sources-pass.ts so the
|
|
11542
|
+
// taint enters only through the specific request-URL chain
|
|
11543
|
+
// (`url.searchParams.get(...)`, `event.url.pathname`).
|
|
11505
11544
|
// --- Serverless transport channels (cognium-dev #213 first slice) ---
|
|
11506
11545
|
//
|
|
11507
11546
|
// AWS Lambda / API Gateway invocation-event properties. The Lambda
|
|
@@ -26006,7 +26045,29 @@ var JS_TAINTED_PATTERNS = [
|
|
|
26006
26045
|
{ pattern: /\bevent\.multiValueQueryStringParameters\b/, type: "http_param" },
|
|
26007
26046
|
{ pattern: /\bevent\.pathParameters\b/, type: "http_path" },
|
|
26008
26047
|
{ pattern: /\bevent\.headers\b/, type: "http_header" },
|
|
26009
|
-
{ pattern: /\bevent\.multiValueHeaders\b/, type: "http_header" }
|
|
26048
|
+
{ pattern: /\bevent\.multiValueHeaders\b/, type: "http_header" },
|
|
26049
|
+
// Modern JS/TS framework request-URL / route-args (cognium-dev #213
|
|
26050
|
+
// tenth slice). Scoped enough to avoid unrelated code:
|
|
26051
|
+
//
|
|
26052
|
+
// NextJS App Router: req.nextUrl.searchParams
|
|
26053
|
+
// req.nextUrl.pathname
|
|
26054
|
+
// Remix: params.<id> from ({ params, request })
|
|
26055
|
+
// new URL(request.url).searchParams
|
|
26056
|
+
// SvelteKit: event.params.<id>
|
|
26057
|
+
// event.url.searchParams
|
|
26058
|
+
// event.request.formData()
|
|
26059
|
+
// Angular: route.snapshot.params
|
|
26060
|
+
// route.snapshot.queryParams
|
|
26061
|
+
// route.paramMap.get(...)
|
|
26062
|
+
{ pattern: /\breq(?:uest)?\.nextUrl\b/, type: "http_body" },
|
|
26063
|
+
{ pattern: /\.searchParams\s*\.\s*get\b/, type: "http_param" },
|
|
26064
|
+
{ pattern: /\bevent\.params\b/, type: "http_path" },
|
|
26065
|
+
{ pattern: /\bevent\.url\b/, type: "http_body" },
|
|
26066
|
+
{ pattern: /\bevent\.request\b/, type: "http_body" },
|
|
26067
|
+
{ pattern: /\broute\.snapshot\.params\b/, type: "http_path" },
|
|
26068
|
+
{ pattern: /\broute\.snapshot\.queryParams\b/, type: "http_param" },
|
|
26069
|
+
{ pattern: /\broute\.paramMap\b/, type: "http_path" },
|
|
26070
|
+
{ pattern: /\broute\.queryParamMap\b/, type: "http_param" }
|
|
26010
26071
|
];
|
|
26011
26072
|
var PYTHON_TAINTED_PATTERNS2 = [
|
|
26012
26073
|
{ pattern: /\brequest\.args\b/, type: "http_param" },
|
|
@@ -26047,7 +26108,15 @@ var PYTHON_TAINTED_PATTERNS2 = [
|
|
|
26047
26108
|
// and produce spurious sources on every `x = q.receive()` in the wild.
|
|
26048
26109
|
{ pattern: /\.receive_text\s*\(/, type: "network_input" },
|
|
26049
26110
|
{ pattern: /\.receive_bytes\s*\(/, type: "network_input" },
|
|
26050
|
-
{ pattern: /\.receive_json\s*\(/, type: "http_body" }
|
|
26111
|
+
{ pattern: /\.receive_json\s*\(/, type: "http_body" },
|
|
26112
|
+
// Async Python framework request-URL / async body accessors
|
|
26113
|
+
// (cognium-dev #213 eleventh slice). Regex layer so
|
|
26114
|
+
// `data = await request.get_json()` adds `data` to pyTaintedVars.
|
|
26115
|
+
{ pattern: /\brequest\.rel_url\b/, type: "http_body" },
|
|
26116
|
+
{ pattern: /\brequest\.remote\b/, type: "network_input" },
|
|
26117
|
+
{ pattern: /\brequest\.match_info\b/, type: "http_path" },
|
|
26118
|
+
{ pattern: /\.get_json\s*\(/, type: "http_body" },
|
|
26119
|
+
{ pattern: /\.get_data\s*\(/, type: "http_body" }
|
|
26051
26120
|
];
|
|
26052
26121
|
var LanguageSourcesPass = class {
|
|
26053
26122
|
name = "language-sources";
|
|
@@ -10686,6 +10686,24 @@ var DEFAULT_SOURCES = [
|
|
|
10686
10686
|
{ method: "text", class: "Request", type: "http_body", severity: "high", return_tainted: true },
|
|
10687
10687
|
{ property: "query", object: "request", type: "http_param", severity: "high", property_tainted: true },
|
|
10688
10688
|
{ property: "match_info", object: "request", type: "http_path", severity: "high", property_tainted: true },
|
|
10689
|
+
//
|
|
10690
|
+
// Extended aiohttp coverage (cognium-dev #213 eleventh slice):
|
|
10691
|
+
// request.rel_url — parsed URL; rel_url.query.get('q') is
|
|
10692
|
+
// the modern idiom for query params
|
|
10693
|
+
// request.remote — client IP (untrusted; can be spoofed
|
|
10694
|
+
// via X-Forwarded-For without proxy)
|
|
10695
|
+
// request.raw_headers — raw byte-tuple header pairs
|
|
10696
|
+
// request.transport — connection metadata (peer_name)
|
|
10697
|
+
{ property: "rel_url", object: "request", type: "http_body", severity: "high", property_tainted: true },
|
|
10698
|
+
{ property: "remote", object: "request", type: "network_input", severity: "high", property_tainted: true },
|
|
10699
|
+
{ property: "raw_headers", object: "request", type: "http_header", severity: "high", property_tainted: true },
|
|
10700
|
+
{ property: "transport", object: "request", type: "network_input", severity: "medium", property_tainted: true },
|
|
10701
|
+
// Quart (async Flask) — shares Flask idioms (request.args/form/json)
|
|
10702
|
+
// covered above, plus these method-based accessors:
|
|
10703
|
+
{ method: "get_json", class: "Request", type: "http_body", severity: "high", return_tainted: true },
|
|
10704
|
+
{ method: "get_data", class: "Request", type: "http_body", severity: "high", return_tainted: true },
|
|
10705
|
+
{ method: "form", class: "Request", type: "http_param", severity: "high", return_tainted: true },
|
|
10706
|
+
{ method: "files", class: "Request", type: "file_input", severity: "high", return_tainted: true },
|
|
10689
10707
|
// =========================================================================
|
|
10690
10708
|
// Rust Sources (Actix-web, Rocket, Axum)
|
|
10691
10709
|
// =========================================================================
|
|
@@ -10897,6 +10915,27 @@ var DEFAULT_SOURCES = [
|
|
|
10897
10915
|
{ method: "get", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
|
|
10898
10916
|
{ method: "hget", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
|
|
10899
10917
|
{ method: "mget", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
|
|
10918
|
+
// --- Modern JS/TS framework sources (cognium-dev #213 tenth slice) ---
|
|
10919
|
+
//
|
|
10920
|
+
// NextJS App Router: `req.nextUrl` is a NextURL instance whose
|
|
10921
|
+
// `.searchParams`, `.pathname`, `.hash` carry attacker-controlled
|
|
10922
|
+
// request state.
|
|
10923
|
+
// req.nextUrl.searchParams.get('id')
|
|
10924
|
+
// req.nextUrl.pathname
|
|
10925
|
+
{ property: "nextUrl", object: "req", type: "http_body", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
10926
|
+
{ property: "nextUrl", object: "request", type: "http_body", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
10927
|
+
// Angular ActivatedRoute: `route.snapshot.params` / `queryParams` /
|
|
10928
|
+
// `data`, and `route.paramMap` (Observable-based) are the two
|
|
10929
|
+
// idioms for reading URL params.
|
|
10930
|
+
{ property: "snapshot", object: "route", type: "http_path", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
10931
|
+
{ property: "paramMap", object: "route", type: "http_path", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
10932
|
+
{ property: "queryParamMap", object: "route", type: "http_param", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
10933
|
+
// Remix / SvelteKit / Astro / Bun / Deno all destructure `{ params, request, url }`
|
|
10934
|
+
// from a handler-args object. Registering `params` / `url` /
|
|
10935
|
+
// `searchParams` as unqualified properties would over-fire; instead
|
|
10936
|
+
// add regex-based coverage in language-sources-pass.ts so the
|
|
10937
|
+
// taint enters only through the specific request-URL chain
|
|
10938
|
+
// (`url.searchParams.get(...)`, `event.url.pathname`).
|
|
10900
10939
|
// --- Serverless transport channels (cognium-dev #213 first slice) ---
|
|
10901
10940
|
//
|
|
10902
10941
|
// AWS Lambda / API Gateway invocation-event properties. The Lambda
|
|
@@ -10620,6 +10620,24 @@ var DEFAULT_SOURCES = [
|
|
|
10620
10620
|
{ method: "text", class: "Request", type: "http_body", severity: "high", return_tainted: true },
|
|
10621
10621
|
{ property: "query", object: "request", type: "http_param", severity: "high", property_tainted: true },
|
|
10622
10622
|
{ property: "match_info", object: "request", type: "http_path", severity: "high", property_tainted: true },
|
|
10623
|
+
//
|
|
10624
|
+
// Extended aiohttp coverage (cognium-dev #213 eleventh slice):
|
|
10625
|
+
// request.rel_url — parsed URL; rel_url.query.get('q') is
|
|
10626
|
+
// the modern idiom for query params
|
|
10627
|
+
// request.remote — client IP (untrusted; can be spoofed
|
|
10628
|
+
// via X-Forwarded-For without proxy)
|
|
10629
|
+
// request.raw_headers — raw byte-tuple header pairs
|
|
10630
|
+
// request.transport — connection metadata (peer_name)
|
|
10631
|
+
{ property: "rel_url", object: "request", type: "http_body", severity: "high", property_tainted: true },
|
|
10632
|
+
{ property: "remote", object: "request", type: "network_input", severity: "high", property_tainted: true },
|
|
10633
|
+
{ property: "raw_headers", object: "request", type: "http_header", severity: "high", property_tainted: true },
|
|
10634
|
+
{ property: "transport", object: "request", type: "network_input", severity: "medium", property_tainted: true },
|
|
10635
|
+
// Quart (async Flask) — shares Flask idioms (request.args/form/json)
|
|
10636
|
+
// covered above, plus these method-based accessors:
|
|
10637
|
+
{ method: "get_json", class: "Request", type: "http_body", severity: "high", return_tainted: true },
|
|
10638
|
+
{ method: "get_data", class: "Request", type: "http_body", severity: "high", return_tainted: true },
|
|
10639
|
+
{ method: "form", class: "Request", type: "http_param", severity: "high", return_tainted: true },
|
|
10640
|
+
{ method: "files", class: "Request", type: "file_input", severity: "high", return_tainted: true },
|
|
10623
10641
|
// =========================================================================
|
|
10624
10642
|
// Rust Sources (Actix-web, Rocket, Axum)
|
|
10625
10643
|
// =========================================================================
|
|
@@ -10831,6 +10849,27 @@ var DEFAULT_SOURCES = [
|
|
|
10831
10849
|
{ method: "get", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
|
|
10832
10850
|
{ method: "hget", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
|
|
10833
10851
|
{ method: "mget", class: "Jedis", type: "db_input", severity: "medium", return_tainted: true, languages: ["java"] },
|
|
10852
|
+
// --- Modern JS/TS framework sources (cognium-dev #213 tenth slice) ---
|
|
10853
|
+
//
|
|
10854
|
+
// NextJS App Router: `req.nextUrl` is a NextURL instance whose
|
|
10855
|
+
// `.searchParams`, `.pathname`, `.hash` carry attacker-controlled
|
|
10856
|
+
// request state.
|
|
10857
|
+
// req.nextUrl.searchParams.get('id')
|
|
10858
|
+
// req.nextUrl.pathname
|
|
10859
|
+
{ property: "nextUrl", object: "req", type: "http_body", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
10860
|
+
{ property: "nextUrl", object: "request", type: "http_body", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
10861
|
+
// Angular ActivatedRoute: `route.snapshot.params` / `queryParams` /
|
|
10862
|
+
// `data`, and `route.paramMap` (Observable-based) are the two
|
|
10863
|
+
// idioms for reading URL params.
|
|
10864
|
+
{ property: "snapshot", object: "route", type: "http_path", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
10865
|
+
{ property: "paramMap", object: "route", type: "http_path", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
10866
|
+
{ property: "queryParamMap", object: "route", type: "http_param", severity: "high", property_tainted: true, languages: ["javascript", "typescript"] },
|
|
10867
|
+
// Remix / SvelteKit / Astro / Bun / Deno all destructure `{ params, request, url }`
|
|
10868
|
+
// from a handler-args object. Registering `params` / `url` /
|
|
10869
|
+
// `searchParams` as unqualified properties would over-fire; instead
|
|
10870
|
+
// add regex-based coverage in language-sources-pass.ts so the
|
|
10871
|
+
// taint enters only through the specific request-URL chain
|
|
10872
|
+
// (`url.searchParams.get(...)`, `event.url.pathname`).
|
|
10834
10873
|
// --- Serverless transport channels (cognium-dev #213 first slice) ---
|
|
10835
10874
|
//
|
|
10836
10875
|
// AWS Lambda / API Gateway invocation-event properties. The Lambda
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "circle-ir",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.191.0",
|
|
4
4
|
"description": "High-performance Static Application Security Testing (SAST) library for detecting security vulnerabilities through taint analysis",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|