circle-ir 3.188.0 → 3.190.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.
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/analysis/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAEjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAiB1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;IACtD,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAcA;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,mBAAmB,EAAE,GAC7B,kBAAkB,EAAE,CAQtB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EAAE,EACxB,YAAY,EAAE,MAAM,EAAE,EACtB,qBAAqB,GAAE,MAAM,EAAO,GACnC,WAAW,CAYb;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EAgoB1C,CAAC;AA+KF,eAAO,MAAM,aAAa,EAAE,WAAW,EA2wDtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EA+hBhD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,EAiDtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAO9C;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAAU,EA8F5C,CAAC"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/analysis/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAEjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAiB1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;IACtD,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAcA;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,mBAAmB,EAAE,GAC7B,kBAAkB,EAAE,CAQtB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EAAE,EACxB,YAAY,EAAE,MAAM,EAAE,EACtB,qBAAqB,GAAE,MAAM,EAAO,GACnC,WAAW,CAYb;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EA0tB1C,CAAC;AA+KF,eAAO,MAAM,aAAa,EAAE,WAAW,EA2wDtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EA+hBhD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,EAiDtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAO9C;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAAU,EA8F5C,CAAC"}
@@ -530,6 +530,71 @@ export const DEFAULT_SOURCES = [
530
530
  { method_annotation: 'GraphQLMutation', type: 'http_body', severity: 'high', languages: ['java'] },
531
531
  { annotation: 'InputArgument', type: 'http_param', severity: 'high', param_tainted: true, languages: ['java'] },
532
532
  { annotation: 'GraphQLArgument', type: 'http_param', severity: 'high', param_tainted: true, languages: ['java'] },
533
+ // --- Go web framework sources (cognium-dev #213 ninth slice) ---
534
+ //
535
+ // Gin `c.Query("id")` / `c.Param("id")` / `c.PostForm("k")` /
536
+ // `c.GetHeader("H")` / `c.Cookie("c")` / `c.FormFile("f")`.
537
+ // Also body binders: `c.BindJSON(&d)` / `c.ShouldBindJSON(&d)` /
538
+ // `c.Bind(&d)`. Class-scoped to `Context` — the Go local-receiver
539
+ // resolver from #240 3.177.0 puts the resolved type into the
540
+ // `receiver` field so class-matching works for `func h(c *gin.Context)`.
541
+ //
542
+ // Echo `c.QueryParam("id")` / `c.QueryParams()` / `c.Param("id")` /
543
+ // `c.FormValue("k")` / `c.FormParams()` / `c.Request().Header` /
544
+ // `c.Cookie("c")` / `c.Bind(&d)`.
545
+ //
546
+ // Fiber `c.Query("id")` / `c.Params("id")` / `c.FormValue("k")` /
547
+ // `c.Cookies("c")` / `c.Get("H")` / `c.Body()` / `c.BodyParser(&d)`.
548
+ // Distinct receiver type `*fiber.Ctx` — separate class entries.
549
+ //
550
+ // Chi `chi.URLParam(r, "id")` — package-level call, matched via
551
+ // bare-import resolution in matchesSourcePattern.
552
+ //
553
+ // Beego `ctx.Input.Query(...)` — `Input` is a struct, so `.Query`
554
+ // matches on `Input` class.
555
+ //
556
+ // Gorilla mux `mux.Vars(r)` — returns map of path vars.
557
+ { method: 'Query', class: 'Context', type: 'http_param', severity: 'high', return_tainted: true, languages: ['go'] },
558
+ { method: 'Param', class: 'Context', type: 'http_path', severity: 'high', return_tainted: true, languages: ['go'] },
559
+ { method: 'PostForm', class: 'Context', type: 'http_body', severity: 'high', return_tainted: true, languages: ['go'] },
560
+ { method: 'GetHeader', class: 'Context', type: 'http_header', severity: 'high', return_tainted: true, languages: ['go'] },
561
+ { method: 'Cookie', class: 'Context', type: 'http_cookie', severity: 'high', return_tainted: true, languages: ['go'] },
562
+ { method: 'FormFile', class: 'Context', type: 'file_input', severity: 'high', return_tainted: true, languages: ['go'] },
563
+ { method: 'BindJSON', class: 'Context', type: 'http_body', severity: 'high', return_tainted: true, languages: ['go'] },
564
+ { method: 'ShouldBindJSON', class: 'Context', type: 'http_body', severity: 'high', return_tainted: true, languages: ['go'] },
565
+ { method: 'Bind', class: 'Context', type: 'http_body', severity: 'high', return_tainted: true, languages: ['go'] },
566
+ { method: 'BindQuery', class: 'Context', type: 'http_param', severity: 'high', return_tainted: true, languages: ['go'] },
567
+ { method: 'ShouldBindQuery', class: 'Context', type: 'http_param', severity: 'high', return_tainted: true, languages: ['go'] },
568
+ { method: 'BindUri', class: 'Context', type: 'http_path', severity: 'high', return_tainted: true, languages: ['go'] },
569
+ { method: 'ShouldBindUri', class: 'Context', type: 'http_path', severity: 'high', return_tainted: true, languages: ['go'] },
570
+ { method: 'MultipartForm', class: 'Context', type: 'http_body', severity: 'high', return_tainted: true, languages: ['go'] },
571
+ // Echo — QueryParam/QueryParams are Echo-distinctive.
572
+ { method: 'QueryParam', class: 'Context', type: 'http_param', severity: 'high', return_tainted: true, languages: ['go'] },
573
+ { method: 'QueryParams', class: 'Context', type: 'http_param', severity: 'high', return_tainted: true, languages: ['go'] },
574
+ { method: 'FormValue', class: 'Context', type: 'http_body', severity: 'high', return_tainted: true, languages: ['go'] },
575
+ { method: 'FormParams', class: 'Context', type: 'http_body', severity: 'high', return_tainted: true, languages: ['go'] },
576
+ { method: 'FormFile', class: 'Context', type: 'file_input', severity: 'high', return_tainted: true, languages: ['go'] },
577
+ // Fiber — receiver type is `*fiber.Ctx`, distinct class name.
578
+ { method: 'Query', class: 'Ctx', type: 'http_param', severity: 'high', return_tainted: true, languages: ['go'] },
579
+ { method: 'Params', class: 'Ctx', type: 'http_path', severity: 'high', return_tainted: true, languages: ['go'] },
580
+ { method: 'FormValue', class: 'Ctx', type: 'http_body', severity: 'high', return_tainted: true, languages: ['go'] },
581
+ { method: 'FormFile', class: 'Ctx', type: 'file_input', severity: 'high', return_tainted: true, languages: ['go'] },
582
+ { method: 'Cookies', class: 'Ctx', type: 'http_cookie', severity: 'high', return_tainted: true, languages: ['go'] },
583
+ { method: 'Get', class: 'Ctx', type: 'http_header', severity: 'high', return_tainted: true, languages: ['go'] },
584
+ { method: 'Body', class: 'Ctx', type: 'http_body', severity: 'high', return_tainted: true, languages: ['go'] },
585
+ { method: 'BodyParser', class: 'Ctx', type: 'http_body', severity: 'high', return_tainted: true, languages: ['go'] },
586
+ { method: 'QueryParser', class: 'Ctx', type: 'http_param', severity: 'high', return_tainted: true, languages: ['go'] },
587
+ { method: 'ParamsParser', class: 'Ctx', type: 'http_path', severity: 'high', return_tainted: true, languages: ['go'] },
588
+ // Chi package-level path param.
589
+ { method: 'URLParam', class: 'chi', type: 'http_path', severity: 'high', return_tainted: true, languages: ['go'] },
590
+ { method: 'URLParamFromCtx', class: 'chi', type: 'http_path', severity: 'high', return_tainted: true, languages: ['go'] },
591
+ // Gorilla mux path vars.
592
+ { method: 'Vars', class: 'mux', type: 'http_path', severity: 'high', return_tainted: true, languages: ['go'] },
593
+ // Beego — `ctx.Input.Query(...)` etc. `Input` is a struct field on Context.
594
+ { method: 'Query', class: 'Input', type: 'http_param', severity: 'high', return_tainted: true, languages: ['go'] },
595
+ { method: 'Param', class: 'Input', type: 'http_path', severity: 'high', return_tainted: true, languages: ['go'] },
596
+ { method: 'Header', class: 'Input', type: 'http_header', severity: 'high', return_tainted: true, languages: ['go'] },
597
+ { method: 'Cookie', class: 'Input', type: 'http_cookie', severity: 'high', return_tainted: true, languages: ['go'] },
533
598
  // --- gRPC request metadata (Python — grpcio) ---
534
599
  // `context.invocation_metadata()` returns the caller-supplied metadata tuple.
535
600
  // No `class` filter — receiver names vary (`context`, `ctx`, `servicer_context`).
@@ -606,6 +671,27 @@ export const DEFAULT_SOURCES = [
606
671
  { method: 'get', class: 'Jedis', type: 'db_input', severity: 'medium', return_tainted: true, languages: ['java'] },
607
672
  { method: 'hget', class: 'Jedis', type: 'db_input', severity: 'medium', return_tainted: true, languages: ['java'] },
608
673
  { method: 'mget', class: 'Jedis', type: 'db_input', severity: 'medium', return_tainted: true, languages: ['java'] },
674
+ // --- Modern JS/TS framework sources (cognium-dev #213 tenth slice) ---
675
+ //
676
+ // NextJS App Router: `req.nextUrl` is a NextURL instance whose
677
+ // `.searchParams`, `.pathname`, `.hash` carry attacker-controlled
678
+ // request state.
679
+ // req.nextUrl.searchParams.get('id')
680
+ // req.nextUrl.pathname
681
+ { property: 'nextUrl', object: 'req', type: 'http_body', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
682
+ { property: 'nextUrl', object: 'request', type: 'http_body', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
683
+ // Angular ActivatedRoute: `route.snapshot.params` / `queryParams` /
684
+ // `data`, and `route.paramMap` (Observable-based) are the two
685
+ // idioms for reading URL params.
686
+ { property: 'snapshot', object: 'route', type: 'http_path', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
687
+ { property: 'paramMap', object: 'route', type: 'http_path', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
688
+ { property: 'queryParamMap', object: 'route', type: 'http_param', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
689
+ // Remix / SvelteKit / Astro / Bun / Deno all destructure `{ params, request, url }`
690
+ // from a handler-args object. Registering `params` / `url` /
691
+ // `searchParams` as unqualified properties would over-fire; instead
692
+ // add regex-based coverage in language-sources-pass.ts so the
693
+ // taint enters only through the specific request-URL chain
694
+ // (`url.searchParams.get(...)`, `event.url.pathname`).
609
695
  // --- Serverless transport channels (cognium-dev #213 first slice) ---
610
696
  //
611
697
  // AWS Lambda / API Gateway invocation-event properties. The Lambda