circle-ir 3.70.0 → 3.72.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.
@@ -181,6 +181,33 @@ export class TaintPropagationPass {
181
181
  return false;
182
182
  });
183
183
  }
184
+ // cognium-dev #105 (Sprint 21 B.2) — MongoDB value-bound filter sanitizer.
185
+ // The `find/findOne/updateOne/deleteOne/aggregate` sinks fire on any
186
+ // tainted dict-literal at arg[0], but pure value-equality dicts
187
+ // (`{ user: name }`) are NOT operator-injection vectors: MongoDB only
188
+ // interprets keys with a `$` prefix (e.g. `$where`, `$ne`, `$gt`) as
189
+ // operators. When the sink's arg[0] is a literal object whose keys are
190
+ // all non-`$`-prefixed identifiers/strings, drop the flow. The
191
+ // operator-injection shape (`findOne(filter)` where `filter` is opaque
192
+ // and may carry `$where`) remains a sink because the arg is not a
193
+ // literal object.
194
+ if (typeof ctx.code === 'string') {
195
+ const sinkByLine = new Map();
196
+ for (const s of sinks) {
197
+ if (s.type === 'nosql_injection')
198
+ sinkByLine.set(s.line, s);
199
+ }
200
+ if (sinkByLine.size > 0) {
201
+ finalFlows = finalFlows.filter(f => {
202
+ if (f.sink_type !== 'nosql_injection')
203
+ return true;
204
+ const sink = sinkByLine.get(f.sink_line);
205
+ if (!sink || !sink.code || !sink.method)
206
+ return true;
207
+ return !isMongoValueBoundFilter(sink.code, sink.method);
208
+ });
209
+ }
210
+ }
184
211
  // cognium-dev #49 — final dedup on (source_line, sink_line, sink_type).
185
212
  // The DFG propagator and the four supplementary detectors each emit
186
213
  // independently; merge-time dedup at the supplement seams is partial
@@ -206,6 +233,110 @@ export class TaintPropagationPass {
206
233
  return { flows: finalFlows };
207
234
  }
208
235
  }
236
+ /**
237
+ * cognium-dev #105 (Sprint 21 B.2). Recognise MongoDB value-bound filter
238
+ * dicts at the first argument of `find/findOne/updateOne/deleteOne/aggregate`
239
+ * sink calls.
240
+ *
241
+ * MongoDB only interprets keys with a `$` prefix as query operators
242
+ * (`$where`, `$ne`, `$gt`, `$regex`, …). A literal object whose top-level
243
+ * keys are all plain identifiers/strings reduces to pure value-equality,
244
+ * which is structurally incapable of operator-injection regardless of the
245
+ * value expressions (the values are bound, not the keys).
246
+ *
247
+ * Recognised:
248
+ * - `findOne({ user: name })`
249
+ * - `findOne({ "user_id": id, status: 'active' })`
250
+ * - `find({ name })` // shorthand
251
+ *
252
+ * NOT recognised (still fires):
253
+ * - `findOne(filter)` // opaque variable — may carry $where
254
+ * - `findOne({ $where: 'this.x' })` // explicit operator
255
+ * - `findOne({ ...filter, name })` // spread — opaque subset
256
+ *
257
+ * Scope: same-line literal at arg[0]. Multi-line dicts are conservatively
258
+ * left alone — we prefer FP over FN on the operator-injection class.
259
+ */
260
+ function isMongoValueBoundFilter(sinkCode, sinkMethod) {
261
+ if (!sinkCode || !sinkMethod)
262
+ return false;
263
+ // Locate the call site for the specific sink method to avoid matching
264
+ // an inner call that happens to share a name.
265
+ const callIdx = sinkCode.indexOf(`${sinkMethod}(`);
266
+ if (callIdx < 0)
267
+ return false;
268
+ const openIdx = callIdx + sinkMethod.length;
269
+ // Walk to matching close-paren, tracking nested `()` `{}` `[]` and skipping
270
+ // string literals. Cap at 4 KiB to bound the scan on pathological inputs.
271
+ let depth = 0;
272
+ let braceDepth = 0;
273
+ let bracketDepth = 0;
274
+ let inString = null;
275
+ let firstArgEnd = -1;
276
+ let firstArgComma = -1;
277
+ const limit = Math.min(sinkCode.length, openIdx + 4096);
278
+ for (let i = openIdx; i < limit; i++) {
279
+ const ch = sinkCode[i];
280
+ if (inString) {
281
+ if (ch === '\\' && i + 1 < limit) {
282
+ i++;
283
+ continue;
284
+ }
285
+ if (ch === inString)
286
+ inString = null;
287
+ continue;
288
+ }
289
+ if (ch === '"' || ch === "'" || ch === '`') {
290
+ inString = ch;
291
+ continue;
292
+ }
293
+ if (ch === '(')
294
+ depth++;
295
+ else if (ch === ')') {
296
+ depth--;
297
+ if (depth === 0) {
298
+ firstArgEnd = i;
299
+ break;
300
+ }
301
+ }
302
+ else if (ch === '{')
303
+ braceDepth++;
304
+ else if (ch === '}')
305
+ braceDepth--;
306
+ else if (ch === '[')
307
+ bracketDepth++;
308
+ else if (ch === ']')
309
+ bracketDepth--;
310
+ else if (ch === ',' && depth === 1 && braceDepth === 0 && bracketDepth === 0) {
311
+ if (firstArgComma < 0)
312
+ firstArgComma = i;
313
+ }
314
+ }
315
+ if (firstArgEnd < 0)
316
+ return false;
317
+ const argEnd = firstArgComma >= 0 ? firstArgComma : firstArgEnd;
318
+ const firstArg = sinkCode.slice(openIdx + 1, argEnd).trim();
319
+ if (!firstArg)
320
+ return false;
321
+ // Must be a literal object (`{...}`), not a bare identifier or spread.
322
+ if (firstArg[0] !== '{' || firstArg[firstArg.length - 1] !== '}')
323
+ return false;
324
+ const body = firstArg.slice(1, -1).trim();
325
+ if (!body)
326
+ return false;
327
+ // Strip string literals so `$` inside string values doesn't false-trip.
328
+ const stripped = body.replace(/(['"`])(?:\\.|(?!\1).)*\1/g, '""');
329
+ // Spread / rest disqualifies (opaque subset).
330
+ if (/\.\.\./.test(stripped))
331
+ return false;
332
+ // Any `$<word>:` key is an operator → not value-bound.
333
+ if (/(^|[,{\s])\$[A-Za-z_]\w*\s*:/.test(stripped))
334
+ return false;
335
+ // Quoted-string key starting with `$`.
336
+ if (/(['"])\$[A-Za-z_]\w*\1\s*:/.test(body))
337
+ return false;
338
+ return true;
339
+ }
209
340
  /**
210
341
  * cognium-dev #101 (Sprint 14 Phase C/D). Detect Java method-level sanitizer
211
342
  * idioms that protect the entire method body from a given sink type.
@@ -1 +1 @@
1
- {"version":3,"file":"taint-propagation-pass.js","sourceRoot":"","sources":["../../../src/analysis/passes/taint-propagation-pass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taint-propagation-pass.js","sourceRoot":"","sources":["../../../src/analysis/passes/taint-propagation-pass.ts"],"names":[],"mappings":"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"}
@@ -12018,6 +12018,41 @@ var DEFAULT_SINKS = [
12018
12018
  // pattern with a language-scoped classless entry. The method name
12019
12019
  // `redirect` is rare outside HTTP frameworks so the FP risk is low.
12020
12020
  { method: "redirect", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["javascript", "typescript"] },
12021
+ // Node.js LDAP Injection (ldapjs) — CWE-90
12022
+ // cognium-dev#104 Sprint 22: receiver matches the canonical ldapjs
12023
+ // import name (`const ldap = require('ldapjs')` → ldap.search/...).
12024
+ { method: "search", class: "ldap", type: "ldap_injection", cwe: "CWE-90", severity: "high", arg_positions: [1, 2], languages: ["javascript", "typescript"] },
12025
+ { method: "searchSync", class: "ldap", type: "ldap_injection", cwe: "CWE-90", severity: "high", arg_positions: [1, 2], languages: ["javascript", "typescript"] },
12026
+ { method: "search", class: "ldapjs", type: "ldap_injection", cwe: "CWE-90", severity: "high", arg_positions: [1, 2], languages: ["javascript", "typescript"] },
12027
+ { method: "searchSync", class: "ldapjs", type: "ldap_injection", cwe: "CWE-90", severity: "high", arg_positions: [1, 2], languages: ["javascript", "typescript"] },
12028
+ // Node.js XPath Injection (xpath module) — CWE-643
12029
+ // cognium-dev#104 Sprint 22: `const xpath = require('xpath')` → xpath.select/select1/evaluate.
12030
+ { method: "select", class: "xpath", type: "xpath_injection", cwe: "CWE-643", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
12031
+ { method: "select1", class: "xpath", type: "xpath_injection", cwe: "CWE-643", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
12032
+ { method: "evaluate", class: "xpath", type: "xpath_injection", cwe: "CWE-643", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
12033
+ { method: "parse", class: "xpath", type: "xpath_injection", cwe: "CWE-643", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
12034
+ // Node.js XXE (libxmljs, xmldom) — CWE-611
12035
+ // cognium-dev#104 Sprint 22: `const libxml = require('libxmljs')` (or 'libxml')
12036
+ // → libxml.parseXml(src, {noent: true}). xmldom DOMParser via parseFromString.
12037
+ { method: "parseXml", class: "libxml", type: "xxe", cwe: "CWE-611", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
12038
+ { method: "parseXmlString", class: "libxml", type: "xxe", cwe: "CWE-611", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
12039
+ { method: "parseXml", class: "libxmljs", type: "xxe", cwe: "CWE-611", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
12040
+ { method: "parseXmlString", class: "libxmljs", type: "xxe", cwe: "CWE-611", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
12041
+ { method: "parseFromString", class: "DOMParser", type: "xxe", cwe: "CWE-611", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
12042
+ { method: "parseFromString", class: "xmldom", type: "xxe", cwe: "CWE-611", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
12043
+ // Node.js Server-Side Template Injection (SSTI) — CWE-94
12044
+ // cognium-dev#104 Sprint 22: ejs/handlebars/pug template render with
12045
+ // tainted templates → arbitrary JS execution. Uses `code_injection`
12046
+ // SinkType to mirror the Python Jinja2/Mako pattern above.
12047
+ { method: "render", class: "ejs", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
12048
+ { method: "compile", class: "ejs", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
12049
+ { method: "render", class: "handlebars", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
12050
+ { method: "compile", class: "handlebars", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
12051
+ { method: "render", class: "pug", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
12052
+ { method: "compile", class: "pug", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
12053
+ { method: "render", class: "mustache", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
12054
+ { method: "render", class: "nunjucks", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
12055
+ { method: "renderString", class: "nunjucks", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
12021
12056
  // =========================================================================
12022
12057
  // Python Sinks
12023
12058
  // =========================================================================
@@ -12127,6 +12162,16 @@ var DEFAULT_SINKS = [
12127
12162
  { method: "delete_one", class: "Collection", type: "nosql_injection", cwe: "CWE-943", severity: "critical", arg_positions: [0] },
12128
12163
  { method: "delete_many", class: "Collection", type: "nosql_injection", cwe: "CWE-943", severity: "critical", arg_positions: [0] },
12129
12164
  { method: "aggregate", class: "Collection", type: "nosql_injection", cwe: "CWE-943", severity: "critical", arg_positions: [0] },
12165
+ // pymongo dynamic attribute-access pattern: `db.users.find({...})` — receiver
12166
+ // class isn't statically known. Method-only entries restricted to Python.
12167
+ // cognium-dev#104 Sprint 22.
12168
+ { method: "find_one", type: "nosql_injection", cwe: "CWE-943", severity: "critical", arg_positions: [0], languages: ["python"] },
12169
+ { method: "update_one", type: "nosql_injection", cwe: "CWE-943", severity: "critical", arg_positions: [0, 1], languages: ["python"] },
12170
+ { method: "update_many", type: "nosql_injection", cwe: "CWE-943", severity: "critical", arg_positions: [0, 1], languages: ["python"] },
12171
+ { method: "delete_one", type: "nosql_injection", cwe: "CWE-943", severity: "critical", arg_positions: [0], languages: ["python"] },
12172
+ { method: "delete_many", type: "nosql_injection", cwe: "CWE-943", severity: "critical", arg_positions: [0], languages: ["python"] },
12173
+ { method: "replace_one", type: "nosql_injection", cwe: "CWE-943", severity: "critical", arg_positions: [0, 1], languages: ["python"] },
12174
+ { method: "count_documents", type: "nosql_injection", cwe: "CWE-943", severity: "critical", arg_positions: [0], languages: ["python"] },
12130
12175
  // Python Template Injection (Jinja2, Mako)
12131
12176
  { method: "from_string", class: "Template", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0] },
12132
12177
  { method: "Template", class: "jinja2", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0] },
@@ -12137,6 +12182,15 @@ var DEFAULT_SINKS = [
12137
12182
  { method: "error", class: "logger", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0] },
12138
12183
  { method: "debug", class: "logger", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0] },
12139
12184
  { method: "critical", class: "logger", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0] },
12185
+ // Python `logging` module top-level functions (e.g. logging.info(...))
12186
+ // — cognium-dev#104 Sprint 22: OOP fixtures use `import logging; logging.info(self.msg)`.
12187
+ { method: "info", class: "logging", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0] },
12188
+ { method: "warning", class: "logging", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0] },
12189
+ { method: "error", class: "logging", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0] },
12190
+ { method: "debug", class: "logging", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0] },
12191
+ { method: "critical", class: "logging", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0] },
12192
+ { method: "log", class: "logging", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [1] },
12193
+ { method: "exception", class: "logging", type: "log_injection", cwe: "CWE-117", severity: "low", arg_positions: [0] },
12140
12194
  // =========================================================================
12141
12195
  // Java CWE-Bench Enhancement Patterns (Collection/Builder)
12142
12196
  // =========================================================================
@@ -18361,6 +18415,9 @@ function isFalsePositive(result, sinkLine, taintedVar) {
18361
18415
  if (varValue && varValue.type !== "unknown" && !result.tainted.has(taintedVar)) {
18362
18416
  return { isFalsePositive: true, reason: `variable_is_constant: ${varValue.value}` };
18363
18417
  }
18418
+ if (taintedVar.startsWith("self.") || taintedVar.startsWith("this.")) {
18419
+ return { isFalsePositive: false, reason: null };
18420
+ }
18364
18421
  if (result.symbols.has(taintedVar) && !result.tainted.has(taintedVar)) {
18365
18422
  return { isFalsePositive: true, reason: "variable_not_tainted" };
18366
18423
  }
@@ -22495,13 +22552,16 @@ function findGetterSources(types, instanceFieldTaint, _sourceCode) {
22495
22552
  return sources;
22496
22553
  }
22497
22554
  function findOopFieldReadSources(types, sourceCode, language) {
22498
- if (language !== "java" && language !== "python") return [];
22555
+ if (language !== "java" && language !== "python" && language !== "javascript" && language !== "typescript") return [];
22499
22556
  const sources = [];
22500
22557
  const lines = sourceCode.split("\n");
22501
22558
  const isPython = language === "python";
22559
+ const isJs = language === "javascript" || language === "typescript";
22560
+ const isJava = language === "java";
22502
22561
  const SELF = isPython ? "self" : "this";
22503
22562
  const javaHttpPattern = /\b(?:req|request|httpRequest|servletRequest|httpServletRequest)\.(?:getParameter|getParameterValues|getParameterMap|getHeader|getHeaders|getCookies|getQueryString|getPathInfo|getRequestURI|getRequestURL|getInputStream|getReader)\b/;
22504
22563
  const fieldAssignRe = new RegExp(`^\\s*${SELF}\\.([A-Za-z_]\\w*)\\s*=\\s*(.+?)(?:;\\s*)?$`);
22564
+ const fieldAssignReG = new RegExp(`${SELF}\\.([A-Za-z_]\\w*)\\s*=\\s*([^;}\\n]+)`, "g");
22505
22565
  const commentPrefix = isPython ? "#" : "//";
22506
22566
  for (const type of types) {
22507
22567
  if (type.kind !== "class") continue;
@@ -22513,7 +22573,12 @@ function findOopFieldReadSources(types, sourceCode, language) {
22513
22573
  ctor = m;
22514
22574
  break;
22515
22575
  }
22516
- } else {
22576
+ } else if (isJs) {
22577
+ if (m.name === "constructor") {
22578
+ ctor = m;
22579
+ break;
22580
+ }
22581
+ } else if (isJava) {
22517
22582
  if (m.name === type.name) {
22518
22583
  ctor = m;
22519
22584
  break;
@@ -22532,25 +22597,41 @@ function findOopFieldReadSources(types, sourceCode, language) {
22532
22597
  for (let i2 = ctorStart - 1; i2 < Math.min(ctorEnd, lines.length); i2++) {
22533
22598
  const line = lines[i2] ?? "";
22534
22599
  if (line.trim().startsWith(commentPrefix)) continue;
22535
- const m = line.match(fieldAssignRe);
22536
- if (!m) continue;
22537
- const fieldName = m[1];
22538
- const rhs = m[2].trim().replace(/;\s*$/, "");
22539
- let sourceType = null;
22540
- if (paramNames.has(rhs)) {
22541
- sourceType = "interprocedural_param";
22542
- } else if (!isPython && javaHttpPattern.test(rhs)) {
22543
- sourceType = "http_param";
22544
- } else if (isPython) {
22545
- for (const { pattern, type: type2 } of PYTHON_TAINTED_PATTERNS2) {
22546
- if (pattern.test(rhs)) {
22547
- sourceType = type2;
22548
- break;
22600
+ const pairs = [];
22601
+ const anchored = line.match(fieldAssignRe);
22602
+ if (anchored) pairs.push({ field: anchored[1], rhs: anchored[2].trim().replace(/;\s*$/, "") });
22603
+ if (isJs) {
22604
+ for (const m of line.matchAll(fieldAssignReG)) {
22605
+ const field = m[1];
22606
+ const rhs = m[2].trim().replace(/;\s*$/, "");
22607
+ if (!pairs.some((p) => p.field === field)) pairs.push({ field, rhs });
22608
+ }
22609
+ }
22610
+ if (pairs.length === 0) continue;
22611
+ for (const { field: fieldName, rhs } of pairs) {
22612
+ let sourceType = null;
22613
+ if (paramNames.has(rhs)) {
22614
+ sourceType = "interprocedural_param";
22615
+ } else if (isJava && javaHttpPattern.test(rhs)) {
22616
+ sourceType = "http_param";
22617
+ } else if (isPython) {
22618
+ for (const { pattern, type: type2 } of PYTHON_TAINTED_PATTERNS2) {
22619
+ if (pattern.test(rhs)) {
22620
+ sourceType = type2;
22621
+ break;
22622
+ }
22623
+ }
22624
+ } else if (isJs) {
22625
+ for (const { pattern, type: type2 } of JS_TAINTED_PATTERNS) {
22626
+ if (pattern.test(rhs)) {
22627
+ sourceType = type2;
22628
+ break;
22629
+ }
22549
22630
  }
22550
22631
  }
22551
- }
22552
- if (sourceType) {
22553
- fieldTaint.set(fieldName, { line: i2 + 1, type: sourceType });
22632
+ if (sourceType) {
22633
+ fieldTaint.set(fieldName, { line: i2 + 1, type: sourceType });
22634
+ }
22554
22635
  }
22555
22636
  }
22556
22637
  if (fieldTaint.size === 0) continue;
@@ -22573,6 +22654,13 @@ function findOopFieldReadSources(types, sourceCode, language) {
22573
22654
  let returnedField = null;
22574
22655
  let returnStatementCount = 0;
22575
22656
  const returnRe = new RegExp(`\\breturn\\s+${SELF}\\.([A-Za-z_]\\w*)\\s*[;}]?`);
22657
+ const guardRePy = /\bif\s+[\w.]+\s+(?:not\s+)?in\s+(?:self\.)?[A-Z_][A-Z0-9_]*\s*:/;
22658
+ const guardThrowRePy = /^\s*(?:raise\b|abort\b|return\s+(?:None\b|''|""|\)?$))/;
22659
+ const guardReJv = /\bif\s*\(\s*!\s*(?:this\.)?[A-Z_][A-Z0-9_]*\s*\.\s*(?:contains|includes|has|matches)\s*\(/;
22660
+ const guardThrowReJv = /^\s*(?:throw\b|return\s+null\b)/;
22661
+ const guardRe = isPython ? guardRePy : guardReJv;
22662
+ const guardThrowRe = isPython ? guardThrowRePy : guardThrowReJv;
22663
+ let hasAllowlistGuard = false;
22576
22664
  for (let i2 = mStart - 1; i2 < Math.min(mEnd, lines.length); i2++) {
22577
22665
  const raw = lines[i2] ?? "";
22578
22666
  const trimmed = raw.trim();
@@ -22586,8 +22674,17 @@ function findOopFieldReadSources(types, sourceCode, language) {
22586
22674
  returnStatementCount = 99;
22587
22675
  break;
22588
22676
  }
22677
+ if (guardRe.test(trimmed)) {
22678
+ for (let j = i2 + 1; j < Math.min(i2 + 4, mEnd, lines.length); j++) {
22679
+ const next = lines[j] ?? "";
22680
+ if (guardThrowRe.test(next)) {
22681
+ hasAllowlistGuard = true;
22682
+ break;
22683
+ }
22684
+ }
22685
+ }
22589
22686
  }
22590
- if (returnStatementCount === 1 && returnedField && fieldTaint.has(returnedField)) {
22687
+ if (returnStatementCount === 1 && returnedField && fieldTaint.has(returnedField) && !hasAllowlistGuard) {
22591
22688
  const fieldInfo = fieldTaint.get(returnedField);
22592
22689
  const getterVar = isPython ? `${SELF}.${m.name}` : m.name;
22593
22690
  sources.push({
@@ -23323,12 +23420,22 @@ var SinkFilterPass = class {
23323
23420
  if (language === "python") {
23324
23421
  const { pyTaintedVars, pySanitizedVars } = langSources;
23325
23422
  const sourceLines = ctx.code.split("\n");
23423
+ const oopFieldVars = /* @__PURE__ */ new Set();
23424
+ for (const s of sources) {
23425
+ if (s.variable && s.variable.startsWith("self.")) {
23426
+ oopFieldVars.add(s.variable);
23427
+ }
23428
+ }
23326
23429
  filtered = filtered.filter((sink) => {
23327
23430
  if (sink.type !== "xpath_injection") return true;
23328
23431
  const sinkLineText = sourceLines[sink.line - 1] ?? "";
23329
23432
  const taintedVarOnLine = [...pyTaintedVars.keys()].find(
23330
23433
  (v) => new RegExp(`\\b${v}\\b`).test(sinkLineText)
23331
23434
  );
23435
+ const oopVarOnLine = [...oopFieldVars].find(
23436
+ (v) => sinkLineText.includes(v)
23437
+ );
23438
+ if (oopVarOnLine) return true;
23332
23439
  if (!taintedVarOnLine) return false;
23333
23440
  if (pySanitizedVars.has(taintedVarOnLine)) return false;
23334
23441
  if (new RegExp(`\\.xpath\\s*\\([^)]*\\b\\w+\\s*=\\s*\\b${taintedVarOnLine}\\b`).test(sinkLineText)) return false;
@@ -23758,6 +23865,20 @@ var TaintPropagationPass = class {
23758
23865
  return false;
23759
23866
  });
23760
23867
  }
23868
+ if (typeof ctx.code === "string") {
23869
+ const sinkByLine = /* @__PURE__ */ new Map();
23870
+ for (const s of sinks) {
23871
+ if (s.type === "nosql_injection") sinkByLine.set(s.line, s);
23872
+ }
23873
+ if (sinkByLine.size > 0) {
23874
+ finalFlows = finalFlows.filter((f) => {
23875
+ if (f.sink_type !== "nosql_injection") return true;
23876
+ const sink = sinkByLine.get(f.sink_line);
23877
+ if (!sink || !sink.code || !sink.method) return true;
23878
+ return !isMongoValueBoundFilter(sink.code, sink.method);
23879
+ });
23880
+ }
23881
+ }
23761
23882
  if (finalFlows.length > 1) {
23762
23883
  const bestByKey = /* @__PURE__ */ new Map();
23763
23884
  for (const f of finalFlows) {
@@ -23775,6 +23896,60 @@ var TaintPropagationPass = class {
23775
23896
  return { flows: finalFlows };
23776
23897
  }
23777
23898
  };
23899
+ function isMongoValueBoundFilter(sinkCode, sinkMethod) {
23900
+ if (!sinkCode || !sinkMethod) return false;
23901
+ const callIdx = sinkCode.indexOf(`${sinkMethod}(`);
23902
+ if (callIdx < 0) return false;
23903
+ const openIdx = callIdx + sinkMethod.length;
23904
+ let depth = 0;
23905
+ let braceDepth = 0;
23906
+ let bracketDepth = 0;
23907
+ let inString = null;
23908
+ let firstArgEnd = -1;
23909
+ let firstArgComma = -1;
23910
+ const limit = Math.min(sinkCode.length, openIdx + 4096);
23911
+ for (let i2 = openIdx; i2 < limit; i2++) {
23912
+ const ch = sinkCode[i2];
23913
+ if (inString) {
23914
+ if (ch === "\\" && i2 + 1 < limit) {
23915
+ i2++;
23916
+ continue;
23917
+ }
23918
+ if (ch === inString) inString = null;
23919
+ continue;
23920
+ }
23921
+ if (ch === '"' || ch === "'" || ch === "`") {
23922
+ inString = ch;
23923
+ continue;
23924
+ }
23925
+ if (ch === "(") depth++;
23926
+ else if (ch === ")") {
23927
+ depth--;
23928
+ if (depth === 0) {
23929
+ firstArgEnd = i2;
23930
+ break;
23931
+ }
23932
+ } else if (ch === "{") braceDepth++;
23933
+ else if (ch === "}") braceDepth--;
23934
+ else if (ch === "[") bracketDepth++;
23935
+ else if (ch === "]") bracketDepth--;
23936
+ else if (ch === "," && depth === 1 && braceDepth === 0 && bracketDepth === 0) {
23937
+ if (firstArgComma < 0) firstArgComma = i2;
23938
+ }
23939
+ }
23940
+ if (firstArgEnd < 0) return false;
23941
+ const argEnd = firstArgComma >= 0 ? firstArgComma : firstArgEnd;
23942
+ const firstArg = sinkCode.slice(openIdx + 1, argEnd).trim();
23943
+ if (!firstArg) return false;
23944
+ if (firstArg[0] !== "{" || firstArg[firstArg.length - 1] !== "}") return false;
23945
+ const body2 = firstArg.slice(1, -1).trim();
23946
+ if (!body2) return false;
23947
+ const stripped = body2.replace(/(['"`])(?:\\.|(?!\1).)*\1/g, '""');
23948
+ if (/\.\.\./.test(stripped)) return false;
23949
+ if (/(^|[,{\s])\$[A-Za-z_]\w*\s*:/.test(stripped)) return false;
23950
+ if (/(['"])\$[A-Za-z_]\w*\1\s*:/.test(body2)) return false;
23951
+ return true;
23952
+ }
23778
23953
  function isInJavaSanitizedMethod(code, types, sinkLine, sinkType) {
23779
23954
  if (!types || types.length === 0) return false;
23780
23955
  let methodStart = -1;