circle-ir 3.83.0 → 3.84.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.
@@ -578,6 +578,95 @@ function isSafeGoExecCommandCall(call, pattern, language) {
578
578
  // shell metacharacters. Sink is safe.
579
579
  return true;
580
580
  }
581
+ /**
582
+ * Check if a Rust `Command::new(...).arg(...).args(...).spawn().output()`
583
+ * chain is safe-by-shape: the program (bound at `Command::new("prog")`) is a
584
+ * string literal AND not a shell program. In that shape Rust invokes
585
+ * `execvp(program, argv)` directly without spawning a shell, so tainted argv
586
+ * elements passed via `.arg()` / `.args()` cannot escape into shell
587
+ * metacharacters.
588
+ *
589
+ * Cases:
590
+ * Command::new("ls") → safe (constructor, non-shell literal)
591
+ * Command::new("ls").args(&[user_input]) → safe (chained, literal program)
592
+ * Command::new("ls").arg(user_input).spawn() → safe (chained, literal program)
593
+ * Command::new("sh").arg("-c").arg(taintedCmd) → unsafe (shell program)
594
+ * Command::new(taintedProg) → unsafe (program itself tainted)
595
+ * let cmd = Command::new("ls"); cmd.args(&[x]); → unsafe-by-default
596
+ * (binding tracking out
597
+ * of scope; safe only
598
+ * via direct chain)
599
+ *
600
+ * Only suppresses when the program literal can be read DIRECTLY from the call
601
+ * or its receiver chain text — variable-bound receivers stay dangerous.
602
+ *
603
+ * cognium-dev #115 FP-21.
604
+ */
605
+ function isSafeRustCommandCall(call, pattern, language) {
606
+ if (language !== 'rust')
607
+ return false;
608
+ if (pattern.type !== 'command_injection')
609
+ return false;
610
+ // Two source rules emit Rust Command sinks (config-loader.ts):
611
+ // (a) `{ method: 'arg'|'args'|'new'|'spawn'|'output', class: 'Command', ... }`
612
+ // — the per-class rules (rust.json + L1798).
613
+ // (b) `{ method: 'spawn', languages: [...'rust'], ... }` (L662) — a
614
+ // class-less universal-spawn rule that fires for Rust too.
615
+ // Allow both shapes through to the per-method shape checks below.
616
+ if (pattern.class !== undefined && pattern.class !== 'Command')
617
+ return false;
618
+ const SHELL_PROGRAMS = new Set([
619
+ 'sh', 'bash', 'zsh', 'dash', 'ash', 'ksh',
620
+ 'cmd', 'cmd.exe', 'powershell', 'pwsh',
621
+ 'powershell.exe', 'pwsh.exe',
622
+ ]);
623
+ // Extract a program literal from text containing `Command::new("...")`
624
+ // or `Command::new('...')` (anywhere in the receiver chain — Rust builder
625
+ // patterns can put any number of `.arg()` calls between the constructor
626
+ // and the eventual sink method).
627
+ // Returns the basename, or null if no literal.
628
+ const PROGRAM_RE = /\bCommand\s*::\s*new\s*\(\s*(?:r?"([^"]*)"|'([^']*)')/;
629
+ const extractProgram = (text) => {
630
+ const m = PROGRAM_RE.exec(text);
631
+ if (!m)
632
+ return null;
633
+ const lit = m[1] ?? m[2] ?? '';
634
+ return lit.split('/').pop() ?? lit;
635
+ };
636
+ if (pattern.method === 'new') {
637
+ // Constructor: arg[0] is the program. Check the literal directly.
638
+ const programArg = call.arguments.find(a => a.position === 0);
639
+ if (!programArg)
640
+ return false;
641
+ let program;
642
+ if (programArg.literal !== null && programArg.literal !== undefined) {
643
+ program = String(programArg.literal).split('/').pop() ?? String(programArg.literal);
644
+ }
645
+ else {
646
+ const expr = (programArg.expression ?? '').trim();
647
+ if (!(expr.startsWith('"') || expr.startsWith("'"))) {
648
+ return false; // non-literal program — keep dangerous
649
+ }
650
+ const stripped = expr.slice(1, -1);
651
+ program = stripped.split('/').pop() ?? stripped;
652
+ }
653
+ return !SHELL_PROGRAMS.has(program);
654
+ }
655
+ if (pattern.method === 'arg' ||
656
+ pattern.method === 'args' ||
657
+ pattern.method === 'spawn' ||
658
+ pattern.method === 'output') {
659
+ // Chained call: receiver text should start with `Command::new("literal")`.
660
+ // If the receiver is a bare identifier (variable-bound), we cannot prove
661
+ // safety without binding tracking — keep dangerous.
662
+ const receiverText = call.receiver ?? '';
663
+ const program = extractProgram(receiverText);
664
+ if (program === null)
665
+ return false;
666
+ return !SHELL_PROGRAMS.has(program);
667
+ }
668
+ return false;
669
+ }
581
670
  /**
582
671
  * Match a Java class-literal expression: `Foo.class`, `com.example.Foo.class`,
583
672
  * `User<T>.class` (loose), `Foo[].class`. Does NOT match `Class.forName(...)`,
@@ -630,6 +719,13 @@ function findSinks(calls, patterns, typeHierarchy, language, sourceLines) {
630
719
  if (isSafeGoExecCommandCall(call, pattern, language)) {
631
720
  continue;
632
721
  }
722
+ // Skip Rust Command::new("prog").arg/args/spawn/output calls in
723
+ // safe shape: program literal is a non-shell binary. Rust invokes
724
+ // execvp() directly so subsequent argv elements cannot escape into
725
+ // shell metacharacters. cognium-dev #115 FP-21.
726
+ if (isSafeRustCommandCall(call, pattern, language)) {
727
+ continue;
728
+ }
633
729
  // Skip typed deserialization overloads where the target type is a
634
730
  // compile-time class literal (e.g. `ObjectMapper.readValue(json,
635
731
  // User.class)`). Jackson/Gson/FastJson cannot deserialize arbitrary
@@ -1 +1 @@
1
- {"version":3,"file":"taint-matcher.js","sourceRoot":"","sources":["../../src/analysis/taint-matcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taint-matcher.js","sourceRoot":"","sources":["../../src/analysis/taint-matcher.ts"],"names":[],"mappings":"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"}
@@ -13208,6 +13208,55 @@ function isSafeGoExecCommandCall(call, pattern, language) {
13208
13208
  if (SHELL_PROGRAMS.has(program)) return false;
13209
13209
  return true;
13210
13210
  }
13211
+ function isSafeRustCommandCall(call, pattern, language) {
13212
+ if (language !== "rust") return false;
13213
+ if (pattern.type !== "command_injection") return false;
13214
+ if (pattern.class !== void 0 && pattern.class !== "Command") return false;
13215
+ const SHELL_PROGRAMS = /* @__PURE__ */ new Set([
13216
+ "sh",
13217
+ "bash",
13218
+ "zsh",
13219
+ "dash",
13220
+ "ash",
13221
+ "ksh",
13222
+ "cmd",
13223
+ "cmd.exe",
13224
+ "powershell",
13225
+ "pwsh",
13226
+ "powershell.exe",
13227
+ "pwsh.exe"
13228
+ ]);
13229
+ const PROGRAM_RE = /\bCommand\s*::\s*new\s*\(\s*(?:r?"([^"]*)"|'([^']*)')/;
13230
+ const extractProgram = (text) => {
13231
+ const m = PROGRAM_RE.exec(text);
13232
+ if (!m) return null;
13233
+ const lit = m[1] ?? m[2] ?? "";
13234
+ return lit.split("/").pop() ?? lit;
13235
+ };
13236
+ if (pattern.method === "new") {
13237
+ const programArg = call.arguments.find((a) => a.position === 0);
13238
+ if (!programArg) return false;
13239
+ let program;
13240
+ if (programArg.literal !== null && programArg.literal !== void 0) {
13241
+ program = String(programArg.literal).split("/").pop() ?? String(programArg.literal);
13242
+ } else {
13243
+ const expr = (programArg.expression ?? "").trim();
13244
+ if (!(expr.startsWith('"') || expr.startsWith("'"))) {
13245
+ return false;
13246
+ }
13247
+ const stripped = expr.slice(1, -1);
13248
+ program = stripped.split("/").pop() ?? stripped;
13249
+ }
13250
+ return !SHELL_PROGRAMS.has(program);
13251
+ }
13252
+ if (pattern.method === "arg" || pattern.method === "args" || pattern.method === "spawn" || pattern.method === "output") {
13253
+ const receiverText = call.receiver ?? "";
13254
+ const program = extractProgram(receiverText);
13255
+ if (program === null) return false;
13256
+ return !SHELL_PROGRAMS.has(program);
13257
+ }
13258
+ return false;
13259
+ }
13211
13260
  var CLASS_LITERAL_RE = /^(?:[A-Za-z_][\w]*\.)*[A-Z][\w]*(?:\[\])*\.class$/;
13212
13261
  function argIsClassLiteral(call, position) {
13213
13262
  const arg = call.arguments.find((a) => a.position === position);
@@ -13230,6 +13279,9 @@ function findSinks(calls, patterns, typeHierarchy, language, sourceLines) {
13230
13279
  if (isSafeGoExecCommandCall(call, pattern, language)) {
13231
13280
  continue;
13232
13281
  }
13282
+ if (isSafeRustCommandCall(call, pattern, language)) {
13283
+ continue;
13284
+ }
13233
13285
  if (pattern.safe_if_class_literal_at !== void 0 && argIsClassLiteral(call, pattern.safe_if_class_literal_at)) {
13234
13286
  continue;
13235
13287
  }
@@ -22755,6 +22807,14 @@ var LanguageSourcesPass = class {
22755
22807
  additionalSanitizers.push(...findGoMapAllowlistGuardSanitizers(code));
22756
22808
  additionalSanitizers.push(...findGoHtmlTemplateImportSanitizers(code));
22757
22809
  }
22810
+ if (language === "python") {
22811
+ additionalSanitizers.push(...findPythonNetlocAllowlistGuardSanitizers(code));
22812
+ additionalSanitizers.push(...findPythonRangeCheckGuardSanitizers(code));
22813
+ }
22814
+ if (language === "rust") {
22815
+ additionalSanitizers.push(...findRustSetAllowlistGuardSanitizers(code));
22816
+ additionalSanitizers.push(...findRustCanonicalizeGuardSanitizers(code));
22817
+ }
22758
22818
  attachSourceLineCode(additionalSources, additionalSinks, code);
22759
22819
  return { additionalSources, additionalSinks, additionalSanitizers, pyTaintedVars, pySanitizedVars, jsTaintedVars };
22760
22820
  }
@@ -23751,6 +23811,178 @@ function findGoHtmlTemplateImportSanitizers(code) {
23751
23811
  }
23752
23812
  return sanitizers;
23753
23813
  }
23814
+ function findPythonNetlocAllowlistGuardSanitizers(code) {
23815
+ const sanitizers = [];
23816
+ const lines = code.split("\n");
23817
+ const guardOpen = /^(\s*)if\s+.+?\s+not\s+in\s+([A-Za-z_][A-Za-z0-9_]*)\s*:\s*$/;
23818
+ const allowlistName = /^(?:[A-Z][A-Z0-9_]+|.*?(allowed|accepted|whitelist|permitted|valid|approved).*)$/i;
23819
+ const terminator = /\b(return|raise|abort\s*\(|sys\.exit\s*\()/;
23820
+ for (let i2 = 0; i2 < lines.length; i2++) {
23821
+ const m = guardOpen.exec(lines[i2]);
23822
+ if (!m) continue;
23823
+ const guardIndent = m[1].length;
23824
+ const allowName = m[2];
23825
+ if (!allowlistName.test(allowName)) continue;
23826
+ let bodyHasTerminator = false;
23827
+ let blockEnd = -1;
23828
+ const maxScan = Math.min(lines.length, i2 + 26);
23829
+ for (let j = i2 + 1; j < maxScan; j++) {
23830
+ const line = lines[j];
23831
+ if (line.trim() === "") continue;
23832
+ const indent = line.length - line.trimStart().length;
23833
+ if (indent <= guardIndent) {
23834
+ blockEnd = j - 1;
23835
+ break;
23836
+ }
23837
+ if (terminator.test(line)) bodyHasTerminator = true;
23838
+ }
23839
+ if (blockEnd === -1) blockEnd = Math.min(lines.length - 1, i2 + 25);
23840
+ if (!bodyHasTerminator) continue;
23841
+ for (let l = blockEnd + 2; l <= lines.length; l++) {
23842
+ sanitizers.push({
23843
+ type: "python_netloc_allowlist_guard",
23844
+ method: "if",
23845
+ line: l,
23846
+ sanitizes: [
23847
+ "open_redirect",
23848
+ "ssrf",
23849
+ "path_traversal",
23850
+ "external_taint_escape"
23851
+ ]
23852
+ });
23853
+ }
23854
+ }
23855
+ return sanitizers;
23856
+ }
23857
+ function findPythonRangeCheckGuardSanitizers(code) {
23858
+ const sanitizers = [];
23859
+ const lines = code.split("\n");
23860
+ const rangeGuard = /^(\s*)if\s+([A-Za-z_][A-Za-z0-9_]*)\s*[<>]=?\s*(?:\d+|-?\d+\.?\d*|[A-Z][A-Z0-9_]+)\s*(?:(?:or|and)\s+\2\s*[<>]=?\s*(?:\d+|-?\d+\.?\d*|[A-Z][A-Z0-9_]+)\s*)?:\s*$/;
23861
+ const terminator = /\b(return|raise|abort\s*\(|sys\.exit\s*\()/;
23862
+ for (let i2 = 0; i2 < lines.length; i2++) {
23863
+ const m = rangeGuard.exec(lines[i2]);
23864
+ if (!m) continue;
23865
+ const guardIndent = m[1].length;
23866
+ let bodyHasTerminator = false;
23867
+ let blockEnd = -1;
23868
+ const maxScan = Math.min(lines.length, i2 + 26);
23869
+ for (let j = i2 + 1; j < maxScan; j++) {
23870
+ const line = lines[j];
23871
+ if (line.trim() === "") continue;
23872
+ const indent = line.length - line.trimStart().length;
23873
+ if (indent <= guardIndent) {
23874
+ blockEnd = j - 1;
23875
+ break;
23876
+ }
23877
+ if (terminator.test(line)) bodyHasTerminator = true;
23878
+ }
23879
+ if (blockEnd === -1) blockEnd = Math.min(lines.length - 1, i2 + 25);
23880
+ if (!bodyHasTerminator) continue;
23881
+ for (let l = blockEnd + 2; l <= lines.length; l++) {
23882
+ sanitizers.push({
23883
+ type: "python_range_check_guard",
23884
+ method: "if",
23885
+ line: l,
23886
+ sanitizes: ["xss", "external_taint_escape"]
23887
+ });
23888
+ }
23889
+ }
23890
+ return sanitizers;
23891
+ }
23892
+ function findRustSetAllowlistGuardSanitizers(code) {
23893
+ const sanitizers = [];
23894
+ const lines = code.split("\n");
23895
+ const guardOpen = /^\s*if\s+!\s*([A-Za-z_][A-Za-z0-9_]*)\s*\.\s*(?:contains|contains_key)\s*\(/;
23896
+ const allowlistName = /^(?:[A-Z][A-Z0-9_]+|.*?(allowed|accepted|whitelist|permitted|valid|approved).*)$/i;
23897
+ const terminator = /\b(return|Err\s*\(|panic!\s*\(|HttpResponse::(?:Forbidden|BadRequest|Unauthorized))/;
23898
+ for (let i2 = 0; i2 < lines.length; i2++) {
23899
+ const m = guardOpen.exec(lines[i2]);
23900
+ if (!m) continue;
23901
+ const setName = m[1];
23902
+ if (!allowlistName.test(setName)) continue;
23903
+ let depth = 0;
23904
+ for (const ch of lines[i2]) {
23905
+ if (ch === "{") depth++;
23906
+ else if (ch === "}") depth--;
23907
+ }
23908
+ if (depth <= 0) continue;
23909
+ let closeLine = -1;
23910
+ let bodyHasTerminator = false;
23911
+ const maxScan = Math.min(lines.length, i2 + 26);
23912
+ for (let j = i2 + 1; j < maxScan; j++) {
23913
+ const line = lines[j];
23914
+ if (terminator.test(line)) bodyHasTerminator = true;
23915
+ for (const ch of line) {
23916
+ if (ch === "{") depth++;
23917
+ else if (ch === "}") depth--;
23918
+ }
23919
+ if (depth === 0) {
23920
+ closeLine = j;
23921
+ break;
23922
+ }
23923
+ }
23924
+ if (closeLine === -1 || !bodyHasTerminator) continue;
23925
+ for (let l = closeLine + 2; l <= lines.length; l++) {
23926
+ sanitizers.push({
23927
+ type: "rust_set_allowlist_guard",
23928
+ method: "if",
23929
+ line: l,
23930
+ sanitizes: [
23931
+ "ssrf",
23932
+ "open_redirect",
23933
+ "command_injection",
23934
+ "external_taint_escape"
23935
+ ]
23936
+ });
23937
+ }
23938
+ }
23939
+ return sanitizers;
23940
+ }
23941
+ function findRustCanonicalizeGuardSanitizers(code) {
23942
+ const sanitizers = [];
23943
+ const lines = code.split("\n");
23944
+ const guardOpen = /^\s*if\s+!\s*[A-Za-z_][\w?.()&]*\.starts_with\s*\(/;
23945
+ const terminator = /\b(return|Err\s*\(|panic!\s*\(|HttpResponse::(?:Forbidden|BadRequest|Unauthorized|NotFound))/;
23946
+ for (let i2 = 0; i2 < lines.length; i2++) {
23947
+ if (!guardOpen.test(lines[i2])) continue;
23948
+ let depth = 0;
23949
+ for (const ch of lines[i2]) {
23950
+ if (ch === "{") depth++;
23951
+ else if (ch === "}") depth--;
23952
+ }
23953
+ if (depth <= 0) continue;
23954
+ let closeLine = -1;
23955
+ let bodyHasTerminator = false;
23956
+ const maxScan = Math.min(lines.length, i2 + 26);
23957
+ for (let j = i2 + 1; j < maxScan; j++) {
23958
+ const line = lines[j];
23959
+ if (terminator.test(line)) bodyHasTerminator = true;
23960
+ for (const ch of line) {
23961
+ if (ch === "{") depth++;
23962
+ else if (ch === "}") depth--;
23963
+ }
23964
+ if (depth === 0) {
23965
+ closeLine = j;
23966
+ break;
23967
+ }
23968
+ }
23969
+ if (closeLine === -1 || !bodyHasTerminator) continue;
23970
+ for (let l = closeLine + 2; l <= lines.length; l++) {
23971
+ sanitizers.push({
23972
+ type: "rust_canonicalize_guard",
23973
+ method: "if",
23974
+ line: l,
23975
+ sanitizes: [
23976
+ "path_traversal",
23977
+ "xss",
23978
+ "ssrf",
23979
+ "external_taint_escape"
23980
+ ]
23981
+ });
23982
+ }
23983
+ }
23984
+ return sanitizers;
23985
+ }
23754
23986
 
23755
23987
  // src/analysis/passes/sink-filter-pass.ts
23756
23988
  var JS_XSS_SANITIZERS = [
@@ -12503,6 +12503,55 @@ function isSafeGoExecCommandCall(call, pattern, language) {
12503
12503
  if (SHELL_PROGRAMS.has(program)) return false;
12504
12504
  return true;
12505
12505
  }
12506
+ function isSafeRustCommandCall(call, pattern, language) {
12507
+ if (language !== "rust") return false;
12508
+ if (pattern.type !== "command_injection") return false;
12509
+ if (pattern.class !== void 0 && pattern.class !== "Command") return false;
12510
+ const SHELL_PROGRAMS = /* @__PURE__ */ new Set([
12511
+ "sh",
12512
+ "bash",
12513
+ "zsh",
12514
+ "dash",
12515
+ "ash",
12516
+ "ksh",
12517
+ "cmd",
12518
+ "cmd.exe",
12519
+ "powershell",
12520
+ "pwsh",
12521
+ "powershell.exe",
12522
+ "pwsh.exe"
12523
+ ]);
12524
+ const PROGRAM_RE = /\bCommand\s*::\s*new\s*\(\s*(?:r?"([^"]*)"|'([^']*)')/;
12525
+ const extractProgram = (text) => {
12526
+ const m = PROGRAM_RE.exec(text);
12527
+ if (!m) return null;
12528
+ const lit = m[1] ?? m[2] ?? "";
12529
+ return lit.split("/").pop() ?? lit;
12530
+ };
12531
+ if (pattern.method === "new") {
12532
+ const programArg = call.arguments.find((a) => a.position === 0);
12533
+ if (!programArg) return false;
12534
+ let program;
12535
+ if (programArg.literal !== null && programArg.literal !== void 0) {
12536
+ program = String(programArg.literal).split("/").pop() ?? String(programArg.literal);
12537
+ } else {
12538
+ const expr = (programArg.expression ?? "").trim();
12539
+ if (!(expr.startsWith('"') || expr.startsWith("'"))) {
12540
+ return false;
12541
+ }
12542
+ const stripped = expr.slice(1, -1);
12543
+ program = stripped.split("/").pop() ?? stripped;
12544
+ }
12545
+ return !SHELL_PROGRAMS.has(program);
12546
+ }
12547
+ if (pattern.method === "arg" || pattern.method === "args" || pattern.method === "spawn" || pattern.method === "output") {
12548
+ const receiverText = call.receiver ?? "";
12549
+ const program = extractProgram(receiverText);
12550
+ if (program === null) return false;
12551
+ return !SHELL_PROGRAMS.has(program);
12552
+ }
12553
+ return false;
12554
+ }
12506
12555
  var CLASS_LITERAL_RE = /^(?:[A-Za-z_][\w]*\.)*[A-Z][\w]*(?:\[\])*\.class$/;
12507
12556
  function argIsClassLiteral(call, position) {
12508
12557
  const arg = call.arguments.find((a) => a.position === position);
@@ -12525,6 +12574,9 @@ function findSinks(calls, patterns, typeHierarchy, language, sourceLines) {
12525
12574
  if (isSafeGoExecCommandCall(call, pattern, language)) {
12526
12575
  continue;
12527
12576
  }
12577
+ if (isSafeRustCommandCall(call, pattern, language)) {
12578
+ continue;
12579
+ }
12528
12580
  if (pattern.safe_if_class_literal_at !== void 0 && argIsClassLiteral(call, pattern.safe_if_class_literal_at)) {
12529
12581
  continue;
12530
12582
  }