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.
@@ -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.189.0",
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",