circle-ir 3.19.5 → 3.20.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.
@@ -13,7 +13,7 @@
13
13
  *
14
14
  * Depends on: taint-matcher, constant-propagation
15
15
  */
16
- import type { TaintSource, TaintSink } from '../../types/index.js';
16
+ import type { TaintSource, TaintSink, SastFinding } from '../../types/index.js';
17
17
  import type { AnalysisPass, PassContext } from '../../graph/analysis-pass.js';
18
18
  export declare const JS_TAINTED_PATTERNS: ({
19
19
  pattern: RegExp;
@@ -74,3 +74,4 @@ export declare function findPythonTrustBoundaryViolations(sourceCode: string, ta
74
74
  sinkLine: number;
75
75
  }>;
76
76
  export declare function buildJavaScriptTaintedVars(sourceCode: string, language: string): Map<string, number>;
77
+ export declare function findBashPatternFindings(sourceCode: string, file: string): SastFinding[];
@@ -152,6 +152,13 @@ export class LanguageSourcesPass {
152
152
  }
153
153
  }
154
154
  const jsTaintedVars = buildJavaScriptTaintedVars(code, language);
155
+ // -- Bash/Shell: pattern-based findings (hardcoded creds, chmod 777, etc.) --
156
+ if (language === 'bash') {
157
+ const bashFindings = findBashPatternFindings(code, graph.ir.meta.file);
158
+ for (const finding of bashFindings) {
159
+ ctx.addFinding(finding);
160
+ }
161
+ }
155
162
  return { additionalSources, additionalSinks, pyTaintedVars, pySanitizedVars, jsTaintedVars };
156
163
  }
157
164
  }
@@ -508,4 +515,108 @@ export function buildJavaScriptTaintedVars(sourceCode, language) {
508
515
  }
509
516
  return tainted;
510
517
  }
518
+ // ---------------------------------------------------------------------------
519
+ // Bash/Shell pattern-based findings
520
+ // ---------------------------------------------------------------------------
521
+ const BASH_CREDENTIAL_PATTERN = /^(.*?)(password|passwd|secret|api_?key|token|auth_token|private_key|access_key)\s*=\s*["']?([^"'\s$][^"'\s]*)["']?\s*$/i;
522
+ export function findBashPatternFindings(sourceCode, file) {
523
+ const findings = [];
524
+ const lines = sourceCode.split('\n');
525
+ for (let i = 0; i < lines.length; i++) {
526
+ const line = lines[i];
527
+ const trimmed = line.trim();
528
+ const lineNumber = i + 1;
529
+ // Skip comments
530
+ if (trimmed.startsWith('#'))
531
+ continue;
532
+ // 1. Hardcoded credentials: PASSWORD="secret123"
533
+ const credMatch = trimmed.match(BASH_CREDENTIAL_PATTERN);
534
+ if (credMatch) {
535
+ const value = credMatch[3];
536
+ // Skip empty, variable references, and command substitutions
537
+ if (value && !value.startsWith('$') && !value.startsWith('(') && value.length > 1) {
538
+ findings.push({
539
+ id: `hardcoded-credential-${file}-${lineNumber}`,
540
+ pass: 'language-sources',
541
+ category: 'security',
542
+ rule_id: 'hardcoded-credential',
543
+ cwe: 'CWE-798',
544
+ severity: 'high',
545
+ level: 'error',
546
+ message: `Hardcoded credential: ${credMatch[2]} contains a literal value`,
547
+ file,
548
+ line: lineNumber,
549
+ snippet: trimmed.substring(0, 80),
550
+ });
551
+ }
552
+ }
553
+ // 2. Cleartext HTTP in curl/wget
554
+ if (/\b(curl|wget)\b/.test(trimmed) && /\bhttp:\/\//.test(trimmed)) {
555
+ findings.push({
556
+ id: `cleartext-transmission-${file}-${lineNumber}`,
557
+ pass: 'language-sources',
558
+ category: 'security',
559
+ rule_id: 'cleartext-transmission',
560
+ cwe: 'CWE-319',
561
+ severity: 'medium',
562
+ level: 'warning',
563
+ message: 'Cleartext HTTP transmission: use https:// instead of http://',
564
+ file,
565
+ line: lineNumber,
566
+ snippet: trimmed.substring(0, 80),
567
+ });
568
+ }
569
+ // 3. Predictable /tmp file (no variable in path)
570
+ const tmpMatch = trimmed.match(/\/tmp\/([^\s"'$]+)/);
571
+ if (tmpMatch && !/mktemp/.test(trimmed)) {
572
+ findings.push({
573
+ id: `predictable-temp-file-${file}-${lineNumber}`,
574
+ pass: 'language-sources',
575
+ category: 'security',
576
+ rule_id: 'predictable-temp-file',
577
+ cwe: 'CWE-377',
578
+ severity: 'medium',
579
+ level: 'warning',
580
+ message: `Predictable temp file: /tmp/${tmpMatch[1]}. Use mktemp instead`,
581
+ file,
582
+ line: lineNumber,
583
+ snippet: trimmed.substring(0, 80),
584
+ });
585
+ }
586
+ // 4. Insecure file permissions: chmod 777 or chmod 666
587
+ if (/\bchmod\b/.test(trimmed) && /\b(777|666)\b/.test(trimmed)) {
588
+ const mode = trimmed.match(/\b(777|666)\b/)[1];
589
+ findings.push({
590
+ id: `insecure-file-permission-${file}-${lineNumber}`,
591
+ pass: 'language-sources',
592
+ category: 'security',
593
+ rule_id: 'insecure-file-permission',
594
+ cwe: 'CWE-732',
595
+ severity: 'medium',
596
+ level: 'warning',
597
+ message: `Insecure file permission: chmod ${mode} grants excessive access`,
598
+ file,
599
+ line: lineNumber,
600
+ snippet: trimmed.substring(0, 80),
601
+ });
602
+ }
603
+ // 5. Unsafe archive extraction: tar with extract flags and no --strip-components
604
+ if (/\btar\b/.test(trimmed) && /(-x|--extract)/.test(trimmed) && !/--strip-components/.test(trimmed)) {
605
+ findings.push({
606
+ id: `unsafe-archive-extraction-${file}-${lineNumber}`,
607
+ pass: 'language-sources',
608
+ category: 'security',
609
+ rule_id: 'unsafe-archive-extraction',
610
+ cwe: 'CWE-22',
611
+ severity: 'medium',
612
+ level: 'warning',
613
+ message: 'Unsafe archive extraction: tar -x without --strip-components may allow path traversal',
614
+ file,
615
+ line: lineNumber,
616
+ snippet: trimmed.substring(0, 80),
617
+ });
618
+ }
619
+ }
620
+ return findings;
621
+ }
511
622
  //# sourceMappingURL=language-sources-pass.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"language-sources-pass.js","sourceRoot":"","sources":["../../../src/analysis/passes/language-sources-pass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"language-sources-pass.js","sourceRoot":"","sources":["../../../src/analysis/passes/language-sources-pass.ts"],"names":[],"mappings":"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"}
@@ -7450,6 +7450,9 @@ function buildCFG(tree, language) {
7450
7450
  const allBlocks = [];
7451
7451
  const allEdges = [];
7452
7452
  let blockIdCounter = 0;
7453
+ if (effectiveLanguage === "bash") {
7454
+ return buildBashCFG(tree, blockIdCounter);
7455
+ }
7453
7456
  if (isJavaScript) {
7454
7457
  const functions = [
7455
7458
  ...findNodes(tree.rootNode, "function_declaration"),
@@ -7805,6 +7808,81 @@ function processSwitchStatement(stmt, startId, blocks, edges, isJavaScript) {
7805
7808
  nextId: currentId
7806
7809
  };
7807
7810
  }
7811
+ function buildBashCFG(tree, startId) {
7812
+ const allBlocks = [];
7813
+ const allEdges = [];
7814
+ let blockIdCounter = startId;
7815
+ const functions = findNodes(tree.rootNode, "function_definition");
7816
+ for (const func2 of functions) {
7817
+ const body2 = func2.childForFieldName("body");
7818
+ if (!body2) continue;
7819
+ const { blocks, edges, nextId } = buildMethodCFG(body2, blockIdCounter, false);
7820
+ allBlocks.push(...blocks);
7821
+ allEdges.push(...edges);
7822
+ blockIdCounter = nextId;
7823
+ }
7824
+ const topLevelStatements = [];
7825
+ for (let i2 = 0; i2 < tree.rootNode.childCount; i2++) {
7826
+ const child = tree.rootNode.child(i2);
7827
+ if (child && child.type !== "function_definition" && isBashStatement(child)) {
7828
+ topLevelStatements.push(child);
7829
+ }
7830
+ }
7831
+ if (topLevelStatements.length > 0) {
7832
+ const entryBlock = {
7833
+ id: blockIdCounter++,
7834
+ type: "entry",
7835
+ start_line: topLevelStatements[0].startPosition.row + 1,
7836
+ end_line: topLevelStatements[0].startPosition.row + 1
7837
+ };
7838
+ allBlocks.push(entryBlock);
7839
+ let lastExitIds = [];
7840
+ let firstBlockId = -1;
7841
+ for (const stmt of topLevelStatements) {
7842
+ const result = processStatement(stmt, blockIdCounter, allBlocks, allEdges, false);
7843
+ blockIdCounter = result.nextId;
7844
+ if (firstBlockId === -1) {
7845
+ firstBlockId = result.entryId;
7846
+ } else {
7847
+ for (const exitId of lastExitIds) {
7848
+ allEdges.push({ from: exitId, to: result.entryId, type: "sequential" });
7849
+ }
7850
+ }
7851
+ lastExitIds = result.exitIds;
7852
+ }
7853
+ if (firstBlockId !== -1) {
7854
+ allEdges.push({ from: entryBlock.id, to: firstBlockId, type: "sequential" });
7855
+ }
7856
+ const exitBlock = {
7857
+ id: blockIdCounter++,
7858
+ type: "exit",
7859
+ start_line: topLevelStatements[topLevelStatements.length - 1].endPosition.row + 1,
7860
+ end_line: topLevelStatements[topLevelStatements.length - 1].endPosition.row + 1
7861
+ };
7862
+ allBlocks.push(exitBlock);
7863
+ for (const exitId of lastExitIds) {
7864
+ allEdges.push({ from: exitId, to: exitBlock.id, type: "sequential" });
7865
+ }
7866
+ }
7867
+ return { blocks: allBlocks, edges: allEdges };
7868
+ }
7869
+ function isBashStatement(node) {
7870
+ const bashStatementTypes = /* @__PURE__ */ new Set([
7871
+ "command",
7872
+ "variable_assignment",
7873
+ "if_statement",
7874
+ "for_statement",
7875
+ "while_statement",
7876
+ "case_statement",
7877
+ "pipeline",
7878
+ "list",
7879
+ "redirected_statement",
7880
+ "compound_statement",
7881
+ "subshell",
7882
+ "declaration_command"
7883
+ ]);
7884
+ return bashStatementTypes.has(node.type);
7885
+ }
7808
7886
  function isStatement(node, isJavaScript) {
7809
7887
  const javaStatementTypes = /* @__PURE__ */ new Set([
7810
7888
  "local_variable_declaration",
@@ -7895,6 +7973,9 @@ function buildDFG(tree, cache, language) {
7895
7973
  if (effectiveLanguage === "rust") {
7896
7974
  return buildRustDFG(tree, cache);
7897
7975
  }
7976
+ if (effectiveLanguage === "bash") {
7977
+ return buildBashDFG(tree);
7978
+ }
7898
7979
  return buildJavaDFG(tree, cache);
7899
7980
  }
7900
7981
  function buildJavaDFG(tree, cache) {
@@ -8621,6 +8702,126 @@ function computeChains(defs, uses) {
8621
8702
  chains.sort((a, b) => a.from_def - b.from_def || a.to_def - b.to_def);
8622
8703
  return chains;
8623
8704
  }
8705
+ function buildBashDFG(tree) {
8706
+ const defs = [];
8707
+ const uses = [];
8708
+ let defIdCounter = 1;
8709
+ let useIdCounter = 1;
8710
+ const scopeStack = [/* @__PURE__ */ new Map()];
8711
+ walkTree(tree.rootNode, (node) => {
8712
+ if (node.type === "variable_assignment") {
8713
+ const nameNode = node.childForFieldName("name");
8714
+ if (nameNode) {
8715
+ const varName = getNodeText(nameNode);
8716
+ const def = {
8717
+ id: defIdCounter++,
8718
+ variable: varName,
8719
+ line: node.startPosition.row + 1,
8720
+ kind: "local"
8721
+ };
8722
+ defs.push(def);
8723
+ currentScope(scopeStack).set(varName, def.id);
8724
+ const valueNode = node.childForFieldName("value");
8725
+ if (valueNode) {
8726
+ extractBashUses(valueNode, uses, useIdCounter, scopeStack);
8727
+ useIdCounter = uses.length + 1;
8728
+ }
8729
+ }
8730
+ } else if (node.type === "command") {
8731
+ const nameNode = node.childForFieldName("name");
8732
+ if (nameNode && getNodeText(nameNode) === "read") {
8733
+ for (let i2 = 0; i2 < node.namedChildCount; i2++) {
8734
+ const arg = node.namedChild(i2);
8735
+ if (!arg || arg === nameNode) continue;
8736
+ if (arg.type === "word") {
8737
+ const text = getNodeText(arg);
8738
+ if (text.startsWith("-")) continue;
8739
+ const def = {
8740
+ id: defIdCounter++,
8741
+ variable: text,
8742
+ line: node.startPosition.row + 1,
8743
+ kind: "local"
8744
+ };
8745
+ defs.push(def);
8746
+ currentScope(scopeStack).set(text, def.id);
8747
+ }
8748
+ }
8749
+ }
8750
+ } else if (node.type === "for_statement") {
8751
+ const varNode = node.childForFieldName("variable");
8752
+ if (varNode) {
8753
+ const varName = getNodeText(varNode);
8754
+ const def = {
8755
+ id: defIdCounter++,
8756
+ variable: varName,
8757
+ line: node.startPosition.row + 1,
8758
+ kind: "local"
8759
+ };
8760
+ defs.push(def);
8761
+ currentScope(scopeStack).set(varName, def.id);
8762
+ }
8763
+ } else if (node.type === "simple_expansion") {
8764
+ const varNameNode = node.namedChildCount > 0 ? node.namedChild(0) : null;
8765
+ if (varNameNode) {
8766
+ const varName = getNodeText(varNameNode);
8767
+ if (varName && !varName.startsWith("?") && !varName.startsWith("#")) {
8768
+ const reachingDef = findReachingDef(varName, scopeStack);
8769
+ uses.push({
8770
+ id: useIdCounter++,
8771
+ variable: varName,
8772
+ line: node.startPosition.row + 1,
8773
+ def_id: reachingDef
8774
+ });
8775
+ }
8776
+ }
8777
+ } else if (node.type === "expansion") {
8778
+ const varNameNode = node.namedChildCount > 0 ? node.namedChild(0) : null;
8779
+ if (varNameNode && varNameNode.type === "variable_name") {
8780
+ const varName = getNodeText(varNameNode);
8781
+ const reachingDef = findReachingDef(varName, scopeStack);
8782
+ uses.push({
8783
+ id: useIdCounter++,
8784
+ variable: varName,
8785
+ line: node.startPosition.row + 1,
8786
+ def_id: reachingDef
8787
+ });
8788
+ }
8789
+ }
8790
+ });
8791
+ const chains = computeChains(defs, uses);
8792
+ return { defs, uses, chains };
8793
+ }
8794
+ function extractBashUses(node, uses, _startId, scopeStack) {
8795
+ walkTree(node, (child) => {
8796
+ if (child.type === "simple_expansion") {
8797
+ const varNameNode = child.namedChildCount > 0 ? child.namedChild(0) : null;
8798
+ if (varNameNode) {
8799
+ const varName = getNodeText(varNameNode);
8800
+ if (varName && !varName.startsWith("?") && !varName.startsWith("#")) {
8801
+ const reachingDef = findReachingDef(varName, scopeStack);
8802
+ uses.push({
8803
+ id: uses.length + 1,
8804
+ variable: varName,
8805
+ line: child.startPosition.row + 1,
8806
+ def_id: reachingDef
8807
+ });
8808
+ }
8809
+ }
8810
+ } else if (child.type === "expansion") {
8811
+ const varNameNode = child.namedChildCount > 0 ? child.namedChild(0) : null;
8812
+ if (varNameNode && varNameNode.type === "variable_name") {
8813
+ const varName = getNodeText(varNameNode);
8814
+ const reachingDef = findReachingDef(varName, scopeStack);
8815
+ uses.push({
8816
+ id: uses.length + 1,
8817
+ variable: varName,
8818
+ line: child.startPosition.row + 1,
8819
+ def_id: reachingDef
8820
+ });
8821
+ }
8822
+ }
8823
+ });
8824
+ }
8624
8825
  function buildRustDFG(tree, cache) {
8625
8826
  const defs = [];
8626
8827
  const uses = [];
@@ -18706,6 +18907,12 @@ var LanguageSourcesPass = class {
18706
18907
  }
18707
18908
  }
18708
18909
  const jsTaintedVars = buildJavaScriptTaintedVars(code, language);
18910
+ if (language === "bash") {
18911
+ const bashFindings = findBashPatternFindings(code, graph.ir.meta.file);
18912
+ for (const finding of bashFindings) {
18913
+ ctx.addFinding(finding);
18914
+ }
18915
+ }
18709
18916
  return { additionalSources, additionalSinks, pyTaintedVars, pySanitizedVars, jsTaintedVars };
18710
18917
  }
18711
18918
  };
@@ -19008,6 +19215,99 @@ function buildJavaScriptTaintedVars(sourceCode, language) {
19008
19215
  }
19009
19216
  return tainted;
19010
19217
  }
19218
+ var BASH_CREDENTIAL_PATTERN = /^(.*?)(password|passwd|secret|api_?key|token|auth_token|private_key|access_key)\s*=\s*["']?([^"'\s$][^"'\s]*)["']?\s*$/i;
19219
+ function findBashPatternFindings(sourceCode, file) {
19220
+ const findings = [];
19221
+ const lines = sourceCode.split("\n");
19222
+ for (let i2 = 0; i2 < lines.length; i2++) {
19223
+ const line = lines[i2];
19224
+ const trimmed = line.trim();
19225
+ const lineNumber = i2 + 1;
19226
+ if (trimmed.startsWith("#")) continue;
19227
+ const credMatch = trimmed.match(BASH_CREDENTIAL_PATTERN);
19228
+ if (credMatch) {
19229
+ const value = credMatch[3];
19230
+ if (value && !value.startsWith("$") && !value.startsWith("(") && value.length > 1) {
19231
+ findings.push({
19232
+ id: `hardcoded-credential-${file}-${lineNumber}`,
19233
+ pass: "language-sources",
19234
+ category: "security",
19235
+ rule_id: "hardcoded-credential",
19236
+ cwe: "CWE-798",
19237
+ severity: "high",
19238
+ level: "error",
19239
+ message: `Hardcoded credential: ${credMatch[2]} contains a literal value`,
19240
+ file,
19241
+ line: lineNumber,
19242
+ snippet: trimmed.substring(0, 80)
19243
+ });
19244
+ }
19245
+ }
19246
+ if (/\b(curl|wget)\b/.test(trimmed) && /\bhttp:\/\//.test(trimmed)) {
19247
+ findings.push({
19248
+ id: `cleartext-transmission-${file}-${lineNumber}`,
19249
+ pass: "language-sources",
19250
+ category: "security",
19251
+ rule_id: "cleartext-transmission",
19252
+ cwe: "CWE-319",
19253
+ severity: "medium",
19254
+ level: "warning",
19255
+ message: "Cleartext HTTP transmission: use https:// instead of http://",
19256
+ file,
19257
+ line: lineNumber,
19258
+ snippet: trimmed.substring(0, 80)
19259
+ });
19260
+ }
19261
+ const tmpMatch = trimmed.match(/\/tmp\/([^\s"'$]+)/);
19262
+ if (tmpMatch && !/mktemp/.test(trimmed)) {
19263
+ findings.push({
19264
+ id: `predictable-temp-file-${file}-${lineNumber}`,
19265
+ pass: "language-sources",
19266
+ category: "security",
19267
+ rule_id: "predictable-temp-file",
19268
+ cwe: "CWE-377",
19269
+ severity: "medium",
19270
+ level: "warning",
19271
+ message: `Predictable temp file: /tmp/${tmpMatch[1]}. Use mktemp instead`,
19272
+ file,
19273
+ line: lineNumber,
19274
+ snippet: trimmed.substring(0, 80)
19275
+ });
19276
+ }
19277
+ if (/\bchmod\b/.test(trimmed) && /\b(777|666)\b/.test(trimmed)) {
19278
+ const mode = trimmed.match(/\b(777|666)\b/)[1];
19279
+ findings.push({
19280
+ id: `insecure-file-permission-${file}-${lineNumber}`,
19281
+ pass: "language-sources",
19282
+ category: "security",
19283
+ rule_id: "insecure-file-permission",
19284
+ cwe: "CWE-732",
19285
+ severity: "medium",
19286
+ level: "warning",
19287
+ message: `Insecure file permission: chmod ${mode} grants excessive access`,
19288
+ file,
19289
+ line: lineNumber,
19290
+ snippet: trimmed.substring(0, 80)
19291
+ });
19292
+ }
19293
+ if (/\btar\b/.test(trimmed) && /(-x|--extract)/.test(trimmed) && !/--strip-components/.test(trimmed)) {
19294
+ findings.push({
19295
+ id: `unsafe-archive-extraction-${file}-${lineNumber}`,
19296
+ pass: "language-sources",
19297
+ category: "security",
19298
+ rule_id: "unsafe-archive-extraction",
19299
+ cwe: "CWE-22",
19300
+ severity: "medium",
19301
+ level: "warning",
19302
+ message: "Unsafe archive extraction: tar -x without --strip-components may allow path traversal",
19303
+ file,
19304
+ line: lineNumber,
19305
+ snippet: trimmed.substring(0, 80)
19306
+ });
19307
+ }
19308
+ }
19309
+ return findings;
19310
+ }
19011
19311
 
19012
19312
  // src/analysis/passes/sink-filter-pass.ts
19013
19313
  var JS_XSS_SANITIZERS = [