circle-ir 3.18.5 → 3.18.7

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.
@@ -9106,6 +9106,8 @@ var DEFAULT_SOURCES = [
9106
9106
  { method: "read_line", class: "BufReader", type: "file_input", severity: "medium", return_tainted: true },
9107
9107
  { method: "lines", class: "BufReader", type: "file_input", severity: "medium", return_tainted: true },
9108
9108
  { method: "read_to_string", class: "stdin", type: "io_input", severity: "medium", return_tainted: true },
9109
+ { method: "read_line", class: "stdin", type: "io_input", severity: "medium", return_tainted: true },
9110
+ { method: "lines", class: "stdin", type: "io_input", severity: "medium", return_tainted: true },
9109
9111
  { method: "recv", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
9110
9112
  { method: "read", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
9111
9113
  { method: "read_to_end", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
@@ -9626,9 +9628,8 @@ var DEFAULT_SINKS = [
9626
9628
  { method: "load", class: "Yaml", type: "deserialization", cwe: "CWE-502", severity: "critical", arg_positions: [0] },
9627
9629
  { method: "loadAll", class: "Yaml", type: "deserialization", cwe: "CWE-502", severity: "critical", arg_positions: [0] },
9628
9630
  { method: "loadAs", class: "Yaml", type: "deserialization", cwe: "CWE-502", severity: "critical", arg_positions: [0] },
9629
- // JSON deserialization
9631
+ // JSON deserialization (Java FastJSON / Jackson — NOT JavaScript's safe JSON.parse)
9630
9632
  { method: "parseObject", class: "JSON", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
9631
- { method: "parse", class: "JSON", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
9632
9633
  { method: "parseObject", class: "JSONObject", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
9633
9634
  { method: "fromJson", class: "Gson", type: "deserialization", cwe: "CWE-502", severity: "medium", arg_positions: [0] },
9634
9635
  // XMLDecoder
@@ -9661,8 +9662,8 @@ var DEFAULT_SINKS = [
9661
9662
  { method: "sendRedirect", type: "ssrf", cwe: "CWE-601", severity: "high", arg_positions: [0] },
9662
9663
  { method: "openConnection", class: "URL", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [] },
9663
9664
  { method: "openStream", class: "URL", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [] },
9664
- { method: "URL", class: "constructor", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9665
- { method: "URI", class: "constructor", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9665
+ // NOTE: URL/URI constructors removed constructing a URL object doesn't make a network
9666
+ // request in any language. The real SSRF sinks are openConnection/openStream/execute/etc.
9666
9667
  { method: "execute", class: "HttpClient", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9667
9668
  { method: "send", class: "HttpClient", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9668
9669
  { method: "getForObject", class: "RestTemplate", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
@@ -9826,6 +9827,8 @@ var DEFAULT_SINKS = [
9826
9827
  { method: "query", class: "Client", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0] },
9827
9828
  { method: "query", type: "sql_injection", cwe: "CWE-89", severity: "high", arg_positions: [0] },
9828
9829
  { method: "raw", type: "sql_injection", cwe: "CWE-89", severity: "high", arg_positions: [0] },
9830
+ // Browser DOM XSS sinks
9831
+ { method: "setAttribute", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [1] },
9829
9832
  // Express.js XSS (response methods)
9830
9833
  { method: "send", class: "Response", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
9831
9834
  { method: "write", class: "Response", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
@@ -10073,6 +10076,14 @@ var DEFAULT_SINKS = [
10073
10076
  // Rust Open Redirect
10074
10077
  { method: "redirect", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0] },
10075
10078
  { method: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0] },
10079
+ { method: "see_other", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10080
+ { method: "to", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10081
+ { method: "temporary", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10082
+ { method: "permanent", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10083
+ { method: "header", class: "Response", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [1] },
10084
+ { method: "insert_header", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [1] },
10085
+ { method: "append_header", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [1] },
10086
+ { method: "from_str", class: "HeaderValue", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10076
10087
  // Rust Log Injection (log crate, tracing)
10077
10088
  { method: "info!", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0, 1, 2] },
10078
10089
  { method: "warn!", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0, 1, 2] },
@@ -10107,6 +10118,9 @@ var DEFAULT_SINKS = [
10107
10118
  { method: "body", class: "HttpResponse", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10108
10119
  { method: "body", class: "HttpResponseBuilder", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10109
10120
  { method: "body", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10121
+ // warp::reply::html
10122
+ { method: "html", class: "reply", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10123
+ { method: "html", class: "warp", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10110
10124
  // Rust serde deserialization
10111
10125
  { method: "from_str", class: "serde_yaml", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
10112
10126
  { method: "from_reader", class: "serde_yaml", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
@@ -10179,6 +10193,8 @@ var DEFAULT_SANITIZERS = [
10179
10193
  // DOMPurify and similar
10180
10194
  { method: "sanitize", class: "DOMPurify", removes: ["xss"] },
10181
10195
  { method: "escape", class: "validator", removes: ["xss"] },
10196
+ // JSON.parse (data is validated against JSON grammar, prevents XSS/code injection)
10197
+ { method: "parse", class: "JSON", removes: ["xss", "code_injection"] },
10182
10198
  // Type coercion (removes string-based injections)
10183
10199
  { method: "parseInt", removes: ["sql_injection", "nosql_injection", "command_injection", "xss"] },
10184
10200
  { method: "parseFloat", removes: ["sql_injection", "nosql_injection", "command_injection"] },
@@ -10250,11 +10266,11 @@ var DEFAULT_SANITIZERS = [
10250
10266
  { method: "canonicalize", removes: ["path_traversal"] },
10251
10267
  // Resolves symlinks, validates path exists
10252
10268
  // Rust Command Injection - allowlist validation
10253
- { method: "contains", removes: ["command_injection", "ssrf"] },
10269
+ { method: "contains", removes: ["command_injection", "ssrf", "open_redirect"] },
10254
10270
  // Used for allowlist checks
10255
- { method: "starts_with", removes: ["path_traversal", "ssrf"] },
10271
+ { method: "starts_with", removes: ["path_traversal", "ssrf", "open_redirect"] },
10256
10272
  // Path/URL prefix validation
10257
- { method: "ends_with", removes: ["path_traversal"] },
10273
+ { method: "ends_with", removes: ["path_traversal", "open_redirect"] },
10258
10274
  // Rust XSS - HTML escaping
10259
10275
  { method: "escape", class: "html_escape", removes: ["xss"] },
10260
10276
  { method: "encode_text", class: "html_escape", removes: ["xss"] },
@@ -10329,6 +10345,26 @@ function findSources(calls, types, patterns) {
10329
10345
  }
10330
10346
  }
10331
10347
  }
10348
+ const RUST_EXTRACTOR_TYPES = /^(?:Json|Form|Query|Path|Extension|Multipart)(?:<|$)|^(?:Body|Bytes)$/;
10349
+ for (const type of types) {
10350
+ for (const method of type.methods) {
10351
+ for (const param of method.parameters) {
10352
+ if (param.type && RUST_EXTRACTOR_TYPES.test(param.type)) {
10353
+ const paramLine = param.line ?? method.start_line;
10354
+ const alreadyExists = sources.some((s) => s.line === paramLine && s.type === "http_body");
10355
+ if (!alreadyExists) {
10356
+ sources.push({
10357
+ type: "http_body",
10358
+ location: `${param.type} ${param.name} in ${method.name}`,
10359
+ severity: "high",
10360
+ line: paramLine,
10361
+ confidence: 1
10362
+ });
10363
+ }
10364
+ }
10365
+ }
10366
+ }
10367
+ }
10332
10368
  for (const type of types) {
10333
10369
  for (const method of type.methods) {
10334
10370
  if (method.modifiers.includes("private")) continue;
@@ -10705,7 +10741,9 @@ function receiverMightBeClass(receiver, className) {
10705
10741
  "createStatement": ["Statement"],
10706
10742
  "prepareStatement": ["PreparedStatement"],
10707
10743
  "getRuntime": ["Runtime"],
10708
- "builder": ["Response", "ResponseBuilder", "HttpResponseBuilder"]
10744
+ "builder": ["Response", "ResponseBuilder", "HttpResponseBuilder"],
10745
+ "stdin": ["stdin", "Stdin", "BufReader"],
10746
+ "lock": ["stdin", "Stdin", "StdinLock", "BufReader"]
10709
10747
  };
10710
10748
  const expectedTypes = returnTypeMappings[methodName];
10711
10749
  if (Array.isArray(expectedTypes) && expectedTypes.includes(className)) {
@@ -10714,12 +10752,16 @@ function receiverMightBeClass(receiver, className) {
10714
10752
  }
10715
10753
  }
10716
10754
  if (receiver.includes("::") && receiver.endsWith(")")) {
10717
- const scopedMatch = receiver.match(/^(\w+)::\w+\(.*\)$/);
10755
+ const scopedMatch = receiver.match(/^(\w+)::(\w+)\(.*\)$/);
10718
10756
  if (scopedMatch) {
10719
10757
  const typeName = scopedMatch[1];
10758
+ const funcName = scopedMatch[2];
10720
10759
  if (typeName === className || typeName.toLowerCase() === lowerClass) {
10721
10760
  return true;
10722
10761
  }
10762
+ if (funcName === className || funcName.toLowerCase() === lowerClass) {
10763
+ return true;
10764
+ }
10723
10765
  }
10724
10766
  }
10725
10767
  if (lowerClass.includes(lowerReceiver)) {
@@ -16442,15 +16484,8 @@ var JavaScriptPlugin = class extends BaseLanguagePlugin {
16442
16484
  // =========================================================
16443
16485
  // Data Exposure Sinks (React Native)
16444
16486
  // =========================================================
16445
- {
16446
- // Logging sensitive data
16447
- method: "log",
16448
- class: "console",
16449
- type: "information_exposure",
16450
- cwe: "CWE-532",
16451
- severity: "low",
16452
- argPositions: [0]
16453
- },
16487
+ // NOTE: console.log removed as a sink — too noisy for general-purpose analysis.
16488
+ // console.log is ubiquitous and rarely a true vulnerability outside mobile contexts.
16454
16489
  {
16455
16490
  // Storing sensitive data insecurely
16456
16491
  method: "setItem",
@@ -18366,7 +18401,14 @@ var JS_TAINTED_PATTERNS = [
18366
18401
  // Narrow to event-based DOM input reads: `e.target.value`, `event.target.value`.
18367
18402
  // The formerly broad `/\.value\b/` matched any `.value` property (e.g. `result.value`,
18368
18403
  // `node.value` in TypeScript) generating false positives in non-browser code.
18369
- { pattern: /\b(?:event|e)\.(?:target\.)?value\b/, type: "dom_input" }
18404
+ { pattern: /\b(?:event|e)\.(?:target\.)?value\b/, type: "dom_input" },
18405
+ // Browser property-based sources (assigned to variables then used in sinks)
18406
+ { pattern: /\bdocument\.referrer\b/, type: "http_header" },
18407
+ { pattern: /\bdocument\.cookie\b/, type: "http_cookie" },
18408
+ { pattern: /\bwindow\.name\b/, type: "dom_input" },
18409
+ { pattern: /\bdocument\.URL\b/, type: "http_path" },
18410
+ { pattern: /\bdocument\.documentURI\b/, type: "http_path" },
18411
+ { pattern: /\blocation\.pathname\b/, type: "http_path" }
18370
18412
  ];
18371
18413
  var PYTHON_TAINTED_PATTERNS2 = [
18372
18414
  { pattern: /\brequest\.args\b/, type: "http_param" },
@@ -18795,7 +18837,8 @@ var SinkFilterPass = class {
18795
18837
  constProp.symbols,
18796
18838
  dfg,
18797
18839
  constProp.sanitizedVars,
18798
- constProp.synchronizedLines
18840
+ constProp.synchronizedLines,
18841
+ language
18799
18842
  );
18800
18843
  filtered = filterSanitizedSinks(filtered, sanitizers, calls);
18801
18844
  if (language === "python") {
@@ -18853,6 +18896,16 @@ var SinkFilterPass = class {
18853
18896
  if (/^`[^`]*`$/.test(rhs) && !rhs.includes("${")) return false;
18854
18897
  if (rhs === '""' || rhs === "''" || rhs === "``") return false;
18855
18898
  }
18899
+ if (/\.href\s*=|location\s*=/.test(sinkLineText)) {
18900
+ const guardPatterns = /\b(?:includes|startsWith|endsWith|indexOf|test|match)\s*\(/;
18901
+ const startLine = Math.max(0, sink.line - 6);
18902
+ for (let i2 = startLine; i2 < sink.line - 1; i2++) {
18903
+ const line = sourceLines[i2] ?? "";
18904
+ if (/\bif\s*\(/.test(line) && guardPatterns.test(line)) {
18905
+ return false;
18906
+ }
18907
+ }
18908
+ }
18856
18909
  if (jsTaintedVars.size > 0) {
18857
18910
  if ([...jsTaintedVars.keys()].some((v) => new RegExp(`\\b${v}\\b`).test(sinkLineText))) return true;
18858
18911
  if (JS_TAINTED_PATTERNS.some((p) => p.pattern.test(sinkLineText))) return true;
@@ -18985,7 +19038,7 @@ function filterCleanArraySinks(sinks, calls, taintedArrayElements, symbols) {
18985
19038
  return true;
18986
19039
  });
18987
19040
  }
18988
- function filterCleanVariableSinks(sinks, calls, taintedVars, symbols, dfg, sanitizedVars, synchronizedLines) {
19041
+ function filterCleanVariableSinks(sinks, calls, taintedVars, symbols, dfg, sanitizedVars, synchronizedLines, language) {
18989
19042
  const fieldNames = /* @__PURE__ */ new Set();
18990
19043
  if (dfg) {
18991
19044
  for (const def of dfg.defs) {
@@ -19006,6 +19059,7 @@ function filterCleanVariableSinks(sinks, calls, taintedVars, symbols, dfg, sanit
19006
19059
  let allArgsAreClean = true;
19007
19060
  const methodName = call.in_method;
19008
19061
  for (const arg of call.arguments) {
19062
+ if (language === "bash" && arg.expression === call.method_name && !arg.variable && arg.literal == null) continue;
19009
19063
  if (arg.variable && !arg.expression?.includes("[")) {
19010
19064
  const varName = arg.variable;
19011
19065
  const scopedName = methodName ? `${methodName}:${varName}` : varName;
@@ -9219,6 +9219,8 @@ var DEFAULT_SOURCES = [
9219
9219
  { method: "read_line", class: "BufReader", type: "file_input", severity: "medium", return_tainted: true },
9220
9220
  { method: "lines", class: "BufReader", type: "file_input", severity: "medium", return_tainted: true },
9221
9221
  { method: "read_to_string", class: "stdin", type: "io_input", severity: "medium", return_tainted: true },
9222
+ { method: "read_line", class: "stdin", type: "io_input", severity: "medium", return_tainted: true },
9223
+ { method: "lines", class: "stdin", type: "io_input", severity: "medium", return_tainted: true },
9222
9224
  { method: "recv", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
9223
9225
  { method: "read", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
9224
9226
  { method: "read_to_end", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
@@ -9739,9 +9741,8 @@ var DEFAULT_SINKS = [
9739
9741
  { method: "load", class: "Yaml", type: "deserialization", cwe: "CWE-502", severity: "critical", arg_positions: [0] },
9740
9742
  { method: "loadAll", class: "Yaml", type: "deserialization", cwe: "CWE-502", severity: "critical", arg_positions: [0] },
9741
9743
  { method: "loadAs", class: "Yaml", type: "deserialization", cwe: "CWE-502", severity: "critical", arg_positions: [0] },
9742
- // JSON deserialization
9744
+ // JSON deserialization (Java FastJSON / Jackson — NOT JavaScript's safe JSON.parse)
9743
9745
  { method: "parseObject", class: "JSON", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
9744
- { method: "parse", class: "JSON", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
9745
9746
  { method: "parseObject", class: "JSONObject", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
9746
9747
  { method: "fromJson", class: "Gson", type: "deserialization", cwe: "CWE-502", severity: "medium", arg_positions: [0] },
9747
9748
  // XMLDecoder
@@ -9774,8 +9775,8 @@ var DEFAULT_SINKS = [
9774
9775
  { method: "sendRedirect", type: "ssrf", cwe: "CWE-601", severity: "high", arg_positions: [0] },
9775
9776
  { method: "openConnection", class: "URL", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [] },
9776
9777
  { method: "openStream", class: "URL", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [] },
9777
- { method: "URL", class: "constructor", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9778
- { method: "URI", class: "constructor", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9778
+ // NOTE: URL/URI constructors removed constructing a URL object doesn't make a network
9779
+ // request in any language. The real SSRF sinks are openConnection/openStream/execute/etc.
9779
9780
  { method: "execute", class: "HttpClient", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9780
9781
  { method: "send", class: "HttpClient", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9781
9782
  { method: "getForObject", class: "RestTemplate", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
@@ -9939,6 +9940,8 @@ var DEFAULT_SINKS = [
9939
9940
  { method: "query", class: "Client", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0] },
9940
9941
  { method: "query", type: "sql_injection", cwe: "CWE-89", severity: "high", arg_positions: [0] },
9941
9942
  { method: "raw", type: "sql_injection", cwe: "CWE-89", severity: "high", arg_positions: [0] },
9943
+ // Browser DOM XSS sinks
9944
+ { method: "setAttribute", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [1] },
9942
9945
  // Express.js XSS (response methods)
9943
9946
  { method: "send", class: "Response", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
9944
9947
  { method: "write", class: "Response", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
@@ -10186,6 +10189,14 @@ var DEFAULT_SINKS = [
10186
10189
  // Rust Open Redirect
10187
10190
  { method: "redirect", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0] },
10188
10191
  { method: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0] },
10192
+ { method: "see_other", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10193
+ { method: "to", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10194
+ { method: "temporary", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10195
+ { method: "permanent", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10196
+ { method: "header", class: "Response", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [1] },
10197
+ { method: "insert_header", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [1] },
10198
+ { method: "append_header", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [1] },
10199
+ { method: "from_str", class: "HeaderValue", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10189
10200
  // Rust Log Injection (log crate, tracing)
10190
10201
  { method: "info!", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0, 1, 2] },
10191
10202
  { method: "warn!", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0, 1, 2] },
@@ -10220,6 +10231,9 @@ var DEFAULT_SINKS = [
10220
10231
  { method: "body", class: "HttpResponse", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10221
10232
  { method: "body", class: "HttpResponseBuilder", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10222
10233
  { method: "body", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10234
+ // warp::reply::html
10235
+ { method: "html", class: "reply", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10236
+ { method: "html", class: "warp", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10223
10237
  // Rust serde deserialization
10224
10238
  { method: "from_str", class: "serde_yaml", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
10225
10239
  { method: "from_reader", class: "serde_yaml", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
@@ -10292,6 +10306,8 @@ var DEFAULT_SANITIZERS = [
10292
10306
  // DOMPurify and similar
10293
10307
  { method: "sanitize", class: "DOMPurify", removes: ["xss"] },
10294
10308
  { method: "escape", class: "validator", removes: ["xss"] },
10309
+ // JSON.parse (data is validated against JSON grammar, prevents XSS/code injection)
10310
+ { method: "parse", class: "JSON", removes: ["xss", "code_injection"] },
10295
10311
  // Type coercion (removes string-based injections)
10296
10312
  { method: "parseInt", removes: ["sql_injection", "nosql_injection", "command_injection", "xss"] },
10297
10313
  { method: "parseFloat", removes: ["sql_injection", "nosql_injection", "command_injection"] },
@@ -10363,11 +10379,11 @@ var DEFAULT_SANITIZERS = [
10363
10379
  { method: "canonicalize", removes: ["path_traversal"] },
10364
10380
  // Resolves symlinks, validates path exists
10365
10381
  // Rust Command Injection - allowlist validation
10366
- { method: "contains", removes: ["command_injection", "ssrf"] },
10382
+ { method: "contains", removes: ["command_injection", "ssrf", "open_redirect"] },
10367
10383
  // Used for allowlist checks
10368
- { method: "starts_with", removes: ["path_traversal", "ssrf"] },
10384
+ { method: "starts_with", removes: ["path_traversal", "ssrf", "open_redirect"] },
10369
10385
  // Path/URL prefix validation
10370
- { method: "ends_with", removes: ["path_traversal"] },
10386
+ { method: "ends_with", removes: ["path_traversal", "open_redirect"] },
10371
10387
  // Rust XSS - HTML escaping
10372
10388
  { method: "escape", class: "html_escape", removes: ["xss"] },
10373
10389
  { method: "encode_text", class: "html_escape", removes: ["xss"] },
@@ -10442,6 +10458,26 @@ function findSources(calls, types, patterns) {
10442
10458
  }
10443
10459
  }
10444
10460
  }
10461
+ const RUST_EXTRACTOR_TYPES = /^(?:Json|Form|Query|Path|Extension|Multipart)(?:<|$)|^(?:Body|Bytes)$/;
10462
+ for (const type of types) {
10463
+ for (const method of type.methods) {
10464
+ for (const param of method.parameters) {
10465
+ if (param.type && RUST_EXTRACTOR_TYPES.test(param.type)) {
10466
+ const paramLine = param.line ?? method.start_line;
10467
+ const alreadyExists = sources.some((s) => s.line === paramLine && s.type === "http_body");
10468
+ if (!alreadyExists) {
10469
+ sources.push({
10470
+ type: "http_body",
10471
+ location: `${param.type} ${param.name} in ${method.name}`,
10472
+ severity: "high",
10473
+ line: paramLine,
10474
+ confidence: 1
10475
+ });
10476
+ }
10477
+ }
10478
+ }
10479
+ }
10480
+ }
10445
10481
  for (const type of types) {
10446
10482
  for (const method of type.methods) {
10447
10483
  if (method.modifiers.includes("private")) continue;
@@ -10818,7 +10854,9 @@ function receiverMightBeClass(receiver, className) {
10818
10854
  "createStatement": ["Statement"],
10819
10855
  "prepareStatement": ["PreparedStatement"],
10820
10856
  "getRuntime": ["Runtime"],
10821
- "builder": ["Response", "ResponseBuilder", "HttpResponseBuilder"]
10857
+ "builder": ["Response", "ResponseBuilder", "HttpResponseBuilder"],
10858
+ "stdin": ["stdin", "Stdin", "BufReader"],
10859
+ "lock": ["stdin", "Stdin", "StdinLock", "BufReader"]
10822
10860
  };
10823
10861
  const expectedTypes = returnTypeMappings[methodName];
10824
10862
  if (Array.isArray(expectedTypes) && expectedTypes.includes(className)) {
@@ -10827,12 +10865,16 @@ function receiverMightBeClass(receiver, className) {
10827
10865
  }
10828
10866
  }
10829
10867
  if (receiver.includes("::") && receiver.endsWith(")")) {
10830
- const scopedMatch = receiver.match(/^(\w+)::\w+\(.*\)$/);
10868
+ const scopedMatch = receiver.match(/^(\w+)::(\w+)\(.*\)$/);
10831
10869
  if (scopedMatch) {
10832
10870
  const typeName = scopedMatch[1];
10871
+ const funcName = scopedMatch[2];
10833
10872
  if (typeName === className || typeName.toLowerCase() === lowerClass) {
10834
10873
  return true;
10835
10874
  }
10875
+ if (funcName === className || funcName.toLowerCase() === lowerClass) {
10876
+ return true;
10877
+ }
10836
10878
  }
10837
10879
  }
10838
10880
  if (lowerClass.includes(lowerReceiver)) {
@@ -9154,6 +9154,8 @@ var DEFAULT_SOURCES = [
9154
9154
  { method: "read_line", class: "BufReader", type: "file_input", severity: "medium", return_tainted: true },
9155
9155
  { method: "lines", class: "BufReader", type: "file_input", severity: "medium", return_tainted: true },
9156
9156
  { method: "read_to_string", class: "stdin", type: "io_input", severity: "medium", return_tainted: true },
9157
+ { method: "read_line", class: "stdin", type: "io_input", severity: "medium", return_tainted: true },
9158
+ { method: "lines", class: "stdin", type: "io_input", severity: "medium", return_tainted: true },
9157
9159
  { method: "recv", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
9158
9160
  { method: "read", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
9159
9161
  { method: "read_to_end", class: "TcpStream", type: "network_input", severity: "high", return_tainted: true },
@@ -9674,9 +9676,8 @@ var DEFAULT_SINKS = [
9674
9676
  { method: "load", class: "Yaml", type: "deserialization", cwe: "CWE-502", severity: "critical", arg_positions: [0] },
9675
9677
  { method: "loadAll", class: "Yaml", type: "deserialization", cwe: "CWE-502", severity: "critical", arg_positions: [0] },
9676
9678
  { method: "loadAs", class: "Yaml", type: "deserialization", cwe: "CWE-502", severity: "critical", arg_positions: [0] },
9677
- // JSON deserialization
9679
+ // JSON deserialization (Java FastJSON / Jackson — NOT JavaScript's safe JSON.parse)
9678
9680
  { method: "parseObject", class: "JSON", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
9679
- { method: "parse", class: "JSON", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
9680
9681
  { method: "parseObject", class: "JSONObject", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
9681
9682
  { method: "fromJson", class: "Gson", type: "deserialization", cwe: "CWE-502", severity: "medium", arg_positions: [0] },
9682
9683
  // XMLDecoder
@@ -9709,8 +9710,8 @@ var DEFAULT_SINKS = [
9709
9710
  { method: "sendRedirect", type: "ssrf", cwe: "CWE-601", severity: "high", arg_positions: [0] },
9710
9711
  { method: "openConnection", class: "URL", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [] },
9711
9712
  { method: "openStream", class: "URL", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [] },
9712
- { method: "URL", class: "constructor", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9713
- { method: "URI", class: "constructor", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9713
+ // NOTE: URL/URI constructors removed constructing a URL object doesn't make a network
9714
+ // request in any language. The real SSRF sinks are openConnection/openStream/execute/etc.
9714
9715
  { method: "execute", class: "HttpClient", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9715
9716
  { method: "send", class: "HttpClient", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
9716
9717
  { method: "getForObject", class: "RestTemplate", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
@@ -9874,6 +9875,8 @@ var DEFAULT_SINKS = [
9874
9875
  { method: "query", class: "Client", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0] },
9875
9876
  { method: "query", type: "sql_injection", cwe: "CWE-89", severity: "high", arg_positions: [0] },
9876
9877
  { method: "raw", type: "sql_injection", cwe: "CWE-89", severity: "high", arg_positions: [0] },
9878
+ // Browser DOM XSS sinks
9879
+ { method: "setAttribute", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [1] },
9877
9880
  // Express.js XSS (response methods)
9878
9881
  { method: "send", class: "Response", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
9879
9882
  { method: "write", class: "Response", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
@@ -10121,6 +10124,14 @@ var DEFAULT_SINKS = [
10121
10124
  // Rust Open Redirect
10122
10125
  { method: "redirect", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0] },
10123
10126
  { method: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0] },
10127
+ { method: "see_other", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10128
+ { method: "to", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10129
+ { method: "temporary", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10130
+ { method: "permanent", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10131
+ { method: "header", class: "Response", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [1] },
10132
+ { method: "insert_header", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [1] },
10133
+ { method: "append_header", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [1] },
10134
+ { method: "from_str", class: "HeaderValue", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
10124
10135
  // Rust Log Injection (log crate, tracing)
10125
10136
  { method: "info!", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0, 1, 2] },
10126
10137
  { method: "warn!", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0, 1, 2] },
@@ -10155,6 +10166,9 @@ var DEFAULT_SINKS = [
10155
10166
  { method: "body", class: "HttpResponse", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10156
10167
  { method: "body", class: "HttpResponseBuilder", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10157
10168
  { method: "body", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10169
+ // warp::reply::html
10170
+ { method: "html", class: "reply", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10171
+ { method: "html", class: "warp", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
10158
10172
  // Rust serde deserialization
10159
10173
  { method: "from_str", class: "serde_yaml", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
10160
10174
  { method: "from_reader", class: "serde_yaml", type: "deserialization", cwe: "CWE-502", severity: "high", arg_positions: [0] },
@@ -10227,6 +10241,8 @@ var DEFAULT_SANITIZERS = [
10227
10241
  // DOMPurify and similar
10228
10242
  { method: "sanitize", class: "DOMPurify", removes: ["xss"] },
10229
10243
  { method: "escape", class: "validator", removes: ["xss"] },
10244
+ // JSON.parse (data is validated against JSON grammar, prevents XSS/code injection)
10245
+ { method: "parse", class: "JSON", removes: ["xss", "code_injection"] },
10230
10246
  // Type coercion (removes string-based injections)
10231
10247
  { method: "parseInt", removes: ["sql_injection", "nosql_injection", "command_injection", "xss"] },
10232
10248
  { method: "parseFloat", removes: ["sql_injection", "nosql_injection", "command_injection"] },
@@ -10298,11 +10314,11 @@ var DEFAULT_SANITIZERS = [
10298
10314
  { method: "canonicalize", removes: ["path_traversal"] },
10299
10315
  // Resolves symlinks, validates path exists
10300
10316
  // Rust Command Injection - allowlist validation
10301
- { method: "contains", removes: ["command_injection", "ssrf"] },
10317
+ { method: "contains", removes: ["command_injection", "ssrf", "open_redirect"] },
10302
10318
  // Used for allowlist checks
10303
- { method: "starts_with", removes: ["path_traversal", "ssrf"] },
10319
+ { method: "starts_with", removes: ["path_traversal", "ssrf", "open_redirect"] },
10304
10320
  // Path/URL prefix validation
10305
- { method: "ends_with", removes: ["path_traversal"] },
10321
+ { method: "ends_with", removes: ["path_traversal", "open_redirect"] },
10306
10322
  // Rust XSS - HTML escaping
10307
10323
  { method: "escape", class: "html_escape", removes: ["xss"] },
10308
10324
  { method: "encode_text", class: "html_escape", removes: ["xss"] },
@@ -10377,6 +10393,26 @@ function findSources(calls, types, patterns) {
10377
10393
  }
10378
10394
  }
10379
10395
  }
10396
+ const RUST_EXTRACTOR_TYPES = /^(?:Json|Form|Query|Path|Extension|Multipart)(?:<|$)|^(?:Body|Bytes)$/;
10397
+ for (const type of types) {
10398
+ for (const method of type.methods) {
10399
+ for (const param of method.parameters) {
10400
+ if (param.type && RUST_EXTRACTOR_TYPES.test(param.type)) {
10401
+ const paramLine = param.line ?? method.start_line;
10402
+ const alreadyExists = sources.some((s) => s.line === paramLine && s.type === "http_body");
10403
+ if (!alreadyExists) {
10404
+ sources.push({
10405
+ type: "http_body",
10406
+ location: `${param.type} ${param.name} in ${method.name}`,
10407
+ severity: "high",
10408
+ line: paramLine,
10409
+ confidence: 1
10410
+ });
10411
+ }
10412
+ }
10413
+ }
10414
+ }
10415
+ }
10380
10416
  for (const type of types) {
10381
10417
  for (const method of type.methods) {
10382
10418
  if (method.modifiers.includes("private")) continue;
@@ -10753,7 +10789,9 @@ function receiverMightBeClass(receiver, className) {
10753
10789
  "createStatement": ["Statement"],
10754
10790
  "prepareStatement": ["PreparedStatement"],
10755
10791
  "getRuntime": ["Runtime"],
10756
- "builder": ["Response", "ResponseBuilder", "HttpResponseBuilder"]
10792
+ "builder": ["Response", "ResponseBuilder", "HttpResponseBuilder"],
10793
+ "stdin": ["stdin", "Stdin", "BufReader"],
10794
+ "lock": ["stdin", "Stdin", "StdinLock", "BufReader"]
10757
10795
  };
10758
10796
  const expectedTypes = returnTypeMappings[methodName];
10759
10797
  if (Array.isArray(expectedTypes) && expectedTypes.includes(className)) {
@@ -10762,12 +10800,16 @@ function receiverMightBeClass(receiver, className) {
10762
10800
  }
10763
10801
  }
10764
10802
  if (receiver.includes("::") && receiver.endsWith(")")) {
10765
- const scopedMatch = receiver.match(/^(\w+)::\w+\(.*\)$/);
10803
+ const scopedMatch = receiver.match(/^(\w+)::(\w+)\(.*\)$/);
10766
10804
  if (scopedMatch) {
10767
10805
  const typeName = scopedMatch[1];
10806
+ const funcName = scopedMatch[2];
10768
10807
  if (typeName === className || typeName.toLowerCase() === lowerClass) {
10769
10808
  return true;
10770
10809
  }
10810
+ if (funcName === className || funcName.toLowerCase() === lowerClass) {
10811
+ return true;
10812
+ }
10771
10813
  }
10772
10814
  }
10773
10815
  if (lowerClass.includes(lowerReceiver)) {
@@ -819,15 +819,8 @@ export class JavaScriptPlugin extends BaseLanguagePlugin {
819
819
  // =========================================================
820
820
  // Data Exposure Sinks (React Native)
821
821
  // =========================================================
822
- {
823
- // Logging sensitive data
824
- method: 'log',
825
- class: 'console',
826
- type: 'information_exposure',
827
- cwe: 'CWE-532',
828
- severity: 'low',
829
- argPositions: [0],
830
- },
822
+ // NOTE: console.log removed as a sink — too noisy for general-purpose analysis.
823
+ // console.log is ubiquitous and rarely a true vulnerability outside mobile contexts.
831
824
  {
832
825
  // Storing sensitive data insecurely
833
826
  method: 'setItem',
@@ -1 +1 @@
1
- {"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/languages/plugins/javascript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/languages/plugins/javascript.ts"],"names":[],"mappings":"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"}