code-auditor-mcp 3.4.10 → 3.4.12

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.
Files changed (86) hide show
  1. package/.claude-plugin/marketplace.json +10 -3
  2. package/CHANGELOG.md +141 -1
  3. package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
  4. package/dist/analyzers/documentationAnalyzer.js +11 -59
  5. package/dist/analyzers/documentationAnalyzer.js.map +1 -1
  6. package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
  7. package/dist/analyzers/invariantsAnalyzer.js +10 -3
  8. package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
  9. package/dist/analyzers/provenance.d.ts +10 -0
  10. package/dist/analyzers/provenance.d.ts.map +1 -1
  11. package/dist/analyzers/provenance.js +41 -11
  12. package/dist/analyzers/provenance.js.map +1 -1
  13. package/dist/analyzers/ruleRegistry.d.ts +8 -0
  14. package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
  15. package/dist/analyzers/ruleRegistry.js +28 -5
  16. package/dist/analyzers/ruleRegistry.js.map +1 -1
  17. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
  18. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +9 -7
  19. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
  20. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +85 -0
  21. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  22. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +422 -2
  23. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  24. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +2 -0
  25. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  26. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +3 -0
  27. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  28. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  29. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +9 -1
  30. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  31. package/dist/auditRunner.d.ts.map +1 -1
  32. package/dist/auditRunner.js +30 -30
  33. package/dist/auditRunner.js.map +1 -1
  34. package/dist/cli.js +33 -0
  35. package/dist/cli.js.map +1 -1
  36. package/dist/conventions/conventionMiner.d.ts +5 -4
  37. package/dist/conventions/conventionMiner.d.ts.map +1 -1
  38. package/dist/conventions/conventionMiner.js +37 -17
  39. package/dist/conventions/conventionMiner.js.map +1 -1
  40. package/dist/grammars/tree-sitter-scss.wasm +0 -0
  41. package/dist/invariants/ruleEngine.d.ts +23 -0
  42. package/dist/invariants/ruleEngine.d.ts.map +1 -1
  43. package/dist/invariants/ruleEngine.js +11 -115
  44. package/dist/invariants/ruleEngine.js.map +1 -1
  45. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +5 -5
  46. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -1
  47. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +11 -9
  48. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
  49. package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
  50. package/dist/languages/tree-sitter/parser.js +2 -0
  51. package/dist/languages/tree-sitter/parser.js.map +1 -1
  52. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +13 -0
  53. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  54. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +242 -24
  55. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  56. package/dist/mcp-tools/whitelistTools.d.ts +1 -1
  57. package/dist/mcp-tools-shared.d.ts.map +1 -1
  58. package/dist/mcp-tools-shared.js +1 -0
  59. package/dist/mcp-tools-shared.js.map +1 -1
  60. package/dist/mcpAuditJobs.d.ts.map +1 -1
  61. package/dist/mcpAuditJobs.js +1 -0
  62. package/dist/mcpAuditJobs.js.map +1 -1
  63. package/dist/pipeline.d.ts +22 -1
  64. package/dist/pipeline.d.ts.map +1 -1
  65. package/dist/pipeline.js +157 -14
  66. package/dist/pipeline.js.map +1 -1
  67. package/dist/pipelineAdapters.d.ts +10 -0
  68. package/dist/pipelineAdapters.d.ts.map +1 -1
  69. package/dist/pipelineAdapters.js +277 -48
  70. package/dist/pipelineAdapters.js.map +1 -1
  71. package/dist/styles/cssAstExtractor.d.ts +61 -0
  72. package/dist/styles/cssAstExtractor.d.ts.map +1 -0
  73. package/dist/styles/cssAstExtractor.js +617 -0
  74. package/dist/styles/cssAstExtractor.js.map +1 -0
  75. package/dist/styles/styleExtractor.d.ts +2 -2
  76. package/dist/styles/styleExtractor.d.ts.map +1 -1
  77. package/dist/styles/styleExtractor.js +69 -16
  78. package/dist/styles/styleExtractor.js.map +1 -1
  79. package/dist/styles/styleIndexer.d.ts.map +1 -1
  80. package/dist/styles/styleIndexer.js +4 -0
  81. package/dist/styles/styleIndexer.js.map +1 -1
  82. package/dist/types.d.ts +20 -0
  83. package/dist/types.d.ts.map +1 -1
  84. package/dist/types.js.map +1 -1
  85. package/package.json +3 -2
  86. package/plugin/.claude-plugin/plugin.json +1 -1
@@ -41,7 +41,7 @@ export const DEFAULT_DATA_ACCESS_CONFIG = {
41
41
  /rightJoin\s*\(\s*([\p{L}\p{N}_]+)\s*,/giu,
42
42
  /innerJoin\s*\(\s*([\p{L}\p{N}_]+)\s*,/giu
43
43
  ],
44
- sql: [/FROM\s+["'`]?([\p{L}\p{N}_]+)["'`]?/giu, /JOIN\s+["'`]?([\p{L}\p{N}_]+)["'`]?/giu, /UPDATE\s+["'`]?([\p{L}\p{N}_]+)["'`]?/giu],
44
+ sql: [/INSERT\s+INTO\s+["'`]?([\p{L}\p{N}_]+)["'`]?/giu, /DELETE\s+FROM\s+["'`]?([\p{L}\p{N}_]+)["'`]?/giu, /FROM\s+["'`]?([\p{L}\p{N}_]+)["'`]?/giu, /JOIN\s+["'`]?([\p{L}\p{N}_]+)["'`]?/giu, /UPDATE\s+["'`]?([\p{L}\p{N}_]+)["'`]?/giu],
45
45
  queryBuilder: [/\.from\s*\(\s*["'`]?([\p{L}\p{N}_]+)["'`]?\s*\)/giu]
46
46
  },
47
47
  performanceThresholds: {
@@ -52,8 +52,15 @@ export const DEFAULT_DATA_ACCESS_CONFIG = {
52
52
  securityPatterns: {
53
53
  sqlInjectionRisks: ['${', 'concat', 'string interpolation'],
54
54
  parameterizedQueries: ['?', ':param', '$1', 'prepared', 'parameterized']
55
- }
55
+ },
56
+ // DB wrapper functions that accept (sql, params) — same as .prepare().bind()
57
+ // but expressed as a simple function call. Must match the provenance system's
58
+ // dbWrapperNames so the FP guards see the same capability list the detector does.
59
+ dbWrapperNames: ['d1Query', 'd1Exec'],
60
+ // SQL sanitizer functions — interpolation via escapeSql(x) is not raw.
61
+ sanitizerNames: ['escapeSql'],
56
62
  };
63
+ // ── Diagnostic infrastructure (one-time v3.4.12 adjuciation) ──────────────
57
64
  export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
58
65
  name = 'data-access';
59
66
  description = 'Analyzes database access patterns and data layer interactions';
@@ -71,6 +78,7 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
71
78
  dbReceiverNames: schemaConfig.dbReceiverNames ?? DEFAULT_SCHEMA_CONFIG.dbReceiverNames,
72
79
  dbBindingNames: schemaConfig.dbBindingNames ?? DEFAULT_SCHEMA_CONFIG.dbBindingNames,
73
80
  dbCallMethods: schemaConfig.dbCallMethods ?? DEFAULT_SCHEMA_CONFIG.dbCallMethods,
81
+ dbWrapperNames: schemaConfig.dbWrapperNames ?? DEFAULT_SCHEMA_CONFIG.dbWrapperNames,
74
82
  });
75
83
  const timingAcc = schemaConfig._provenanceTiming;
76
84
  if (timingAcc)
@@ -129,6 +137,12 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
129
137
  // where they sit (DB-provenanced call arguments), not what their
130
138
  // body contains. Content scanning with substring matching is removed.
131
139
  if (this.isTemplateLiteral(node, adapter)) {
140
+ const parent = adapter.getParent(node);
141
+ // Only capture template literals in call arguments — those are
142
+ // the ones the provenance gate decides on.
143
+ if (parent && adapter.getNodeType(parent) === 'arguments') {
144
+ return this.isTemplateInDBProvenancedCall(node, adapter, sourceCode, provenanceContext);
145
+ }
132
146
  return this.isTemplateInDBProvenancedCall(node, adapter, sourceCode, provenanceContext);
133
147
  }
134
148
  // Variable assignment with SQL structure — no child template check:
@@ -172,6 +186,21 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
172
186
  // Skip if the node text is too short or doesn't contain meaningful content
173
187
  if (!nodeText || nodeText.trim().length < 10)
174
188
  continue;
189
+ // When a call_expression like db.prepare(\`...\`) spans multiple lines,
190
+ // findNodes discovers both the call_expression (via path 1) and the
191
+ // template_string inside its arguments (via path 2). The template string
192
+ // is the more precise target for injection checks, and isDynamicString-
193
+ // Construction on a call_expression delegates to its template arguments
194
+ // anyway. Skip the call_expression here so we don't double-report the
195
+ // same injection risk.
196
+ if (this.isFunctionCall(node, adapter)) {
197
+ const args = adapter.getChildren(node).find(c => adapter.getNodeType(c) === 'arguments');
198
+ if (args) {
199
+ const hasTemplate = adapter.getChildren(args).some(c => this.isTemplateLiteral(c, adapter));
200
+ if (hasTemplate)
201
+ continue;
202
+ }
203
+ }
175
204
  // Determine if this is a database-related call
176
205
  const isSqlQuery = this.containsSQLKeywords(nodeText);
177
206
  const isOrmCall = this.isOrmPattern(nodeText);
@@ -368,6 +397,314 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
368
397
  }
369
398
  return false;
370
399
  }
400
+ /**
401
+ * Detect that a node sits inside a D1 .prepare() call — the standard safe
402
+ * pattern for SQL in Cloudflare Workers.
403
+ *
404
+ * D1's parameterized API is `db.prepare(sql).bind(a, b, c).first()`.
405
+ * This method also recognises `.prepare()` WITHOUT a subsequent `.bind()`
406
+ * as safe: a prepared statement with no bind step has zero runtime
407
+ * parameters, so template interpolation in the SQL text is query
408
+ * composition with compile-time constants, not user input.
409
+ *
410
+ * Handles these patterns:
411
+ * • Direct chain: `db.prepare(sql).bind(a).all()`
412
+ * • Two-statement: `const stmt = db.prepare(sql); stmt.bind(a).all();`
413
+ * • No-param: `db.prepare(sql).first()` (no bind needed)
414
+ *
415
+ * Entry points:
416
+ * - a `template_string` node inside prepare()'s arguments
417
+ * - the prepare() call_expression itself
418
+ */
419
+ isInPrepareBindChain(node, adapter, sourceCode) {
420
+ // Step 1: Find the prepare call_expression from the node.
421
+ let prepareCall;
422
+ if (adapter.getNodeType(node) === 'template_string') {
423
+ // Walk up through arguments → call_expression
424
+ const args = adapter.getParent(node);
425
+ if (!args || adapter.getNodeType(args) !== 'arguments')
426
+ return false;
427
+ prepareCall = adapter.getParent(args);
428
+ }
429
+ else if (adapter.getNodeType(node) === 'call_expression') {
430
+ // Node is the call_expression itself — check if it's a prepare() call.
431
+ prepareCall = node;
432
+ }
433
+ else {
434
+ return false;
435
+ }
436
+ if (!prepareCall || adapter.getNodeType(prepareCall) !== 'call_expression') {
437
+ return false;
438
+ }
439
+ // Step 2: Verify the call_expression is .prepare() by inspecting its
440
+ // callee — the first child that is a member_expression, which may be
441
+ // wrapped inside an await_expression (await db.prepare(sql)).
442
+ let prepareCallee = adapter.getChildren(prepareCall).find(c => adapter.getNodeType(c) === 'member_expression');
443
+ if (!prepareCallee) {
444
+ const awaitExpr = adapter.getChildren(prepareCall).find(c => adapter.getNodeType(c) === 'await_expression');
445
+ if (awaitExpr) {
446
+ prepareCallee = adapter.getChildren(awaitExpr).find(c => adapter.getNodeType(c) === 'member_expression');
447
+ }
448
+ }
449
+ if (!prepareCallee)
450
+ return false;
451
+ const hasPrepareProp = adapter.getChildren(prepareCallee).some(c => adapter.getNodeType(c) === 'property_identifier' &&
452
+ adapter.getNodeText(c, sourceCode) === 'prepare');
453
+ if (!hasPrepareProp)
454
+ return false;
455
+ // Step 3: Walk up from the prepare call_expression to find .bind()
456
+ // chained onto it. The parent of prepareCall should be a
457
+ // member_expression whose property is "bind".
458
+ const memberExpr = adapter.getParent(prepareCall);
459
+ if (memberExpr && adapter.getNodeType(memberExpr) === 'member_expression') {
460
+ const hasBindProp = adapter.getChildren(memberExpr).some(c => adapter.getNodeType(c) === 'property_identifier' &&
461
+ adapter.getNodeText(c, sourceCode) === 'bind');
462
+ if (hasBindProp) {
463
+ // Step 4: The member_expression's parent must be a call_expression
464
+ // (the actual .bind() invocation).
465
+ const bindCall = adapter.getParent(memberExpr);
466
+ if (bindCall && adapter.getNodeType(bindCall) === 'call_expression') {
467
+ return true;
468
+ }
469
+ }
470
+ }
471
+ // Step 5 (two-statement pattern): The direct-chain check failed. Check
472
+ // whether the prepare() result is assigned to a variable that is later
473
+ // .bind()'ed in the same function scope.
474
+ // Pattern: const stmt = db.prepare(sql);
475
+ // stmt.bind(x).all();
476
+ if (this.isPrepareAssignedToVariable(prepareCall, adapter, sourceCode)) {
477
+ return true;
478
+ }
479
+ // Step 6 (no-param prepare): Node is inside .prepare() with no .bind()
480
+ // found in the direct chain or local scope. Without .bind() the query
481
+ // has no runtime parameterisation at the statement level. Fall through
482
+ // to let checkQuerySecurity determine whether template interpolation
483
+ // makes the query dynamic.
484
+ return false;
485
+ }
486
+ /**
487
+ * Detect that a node sits inside a Durable Object .exec() call —
488
+ * Cloudflare's internal SQLite interface for Durable Objects.
489
+ *
490
+ * `storage.sql.exec(query, ...bindings)` accepts *spread* bind parameters
491
+ * after the query string. A call WITH spread binds is fully parameterized
492
+ * and safe. A call WITHOUT spread binds has no runtime parameters, so
493
+ * template interpolation is query-composition-time.
494
+ *
495
+ * Entry points: same as isInPrepareBindChain — a template_string inside
496
+ * the arguments, or the call_expression itself.
497
+ */
498
+ isInExecChain(node, adapter, sourceCode) {
499
+ // Step 1: Find the exec call_expression from the node.
500
+ let execCall;
501
+ if (adapter.getNodeType(node) === 'template_string') {
502
+ const args = adapter.getParent(node);
503
+ if (!args || adapter.getNodeType(args) !== 'arguments')
504
+ return false;
505
+ execCall = adapter.getParent(args);
506
+ }
507
+ else if (adapter.getNodeType(node) === 'call_expression') {
508
+ execCall = node;
509
+ }
510
+ else {
511
+ return false;
512
+ }
513
+ if (!execCall || adapter.getNodeType(execCall) !== 'call_expression') {
514
+ return false;
515
+ }
516
+ // Step 2: Verify the call_expression is .exec() — the member_expression
517
+ // may be inside an await_expression wrapper (await sql.exec(query)).
518
+ let execCallee = adapter.getChildren(execCall).find(c => adapter.getNodeType(c) === 'member_expression');
519
+ if (!execCallee) {
520
+ const awaitExpr = adapter.getChildren(execCall).find(c => adapter.getNodeType(c) === 'await_expression');
521
+ if (awaitExpr) {
522
+ execCallee = adapter.getChildren(awaitExpr).find(c => adapter.getNodeType(c) === 'member_expression');
523
+ }
524
+ }
525
+ if (!execCallee)
526
+ return false;
527
+ const hasExecProp = adapter.getChildren(execCallee).some(c => adapter.getNodeType(c) === 'property_identifier' &&
528
+ adapter.getNodeText(c, sourceCode) === 'exec');
529
+ if (!hasExecProp)
530
+ return false;
531
+ // Step 3: Check for spread bind parameters after the template.
532
+ // `sql.exec(template, ...binds)` — the spread element in arguments
533
+ // means values are parameterized.
534
+ const args = adapter.getChildren(execCall).find(c => adapter.getNodeType(c) === 'arguments');
535
+ if (args) {
536
+ const argChildren = adapter.getChildren(args);
537
+ const hasSpread = argChildren.some(c => adapter.getNodeType(c) === 'spread_element');
538
+ if (hasSpread) {
539
+ return true; // Parameterized via spread binds
540
+ }
541
+ }
542
+ // Step 4: No spread binds — the query has no runtime bind parameters.
543
+ // Fall through so checkQuerySecurity determines whether template
544
+ // interpolation makes the query dynamic. The "in-process SQLite"
545
+ // argument does not make dynamic interpolation safe — if user-supplied
546
+ // values reach the SQL text they are still injectable regardless of
547
+ // whether the DB is remote or in-process.
548
+ return false;
549
+ }
550
+ /**
551
+ * Detect D1's convenience SQL methods — .all(), .first(), .run() —
552
+ * called with bind parameters as a second argument.
553
+ *
554
+ * `db.all(query, ...params)` is shorthand for
555
+ * `db.prepare(query).bind(...params).all()`. If there's a second argument
556
+ * (the bind params), the call is fully parameterized and safe.
557
+ */
558
+ isD1ConvenienceCall(node, adapter, sourceCode) {
559
+ const D1_CONVENIENCE = new Set(['all', 'first', 'run']);
560
+ // Find the call_expression.
561
+ let call;
562
+ if (adapter.getNodeType(node) === 'template_string') {
563
+ const args = adapter.getParent(node);
564
+ if (!args || adapter.getNodeType(args) !== 'arguments')
565
+ return false;
566
+ call = adapter.getParent(args);
567
+ }
568
+ else if (adapter.getNodeType(node) === 'call_expression') {
569
+ call = node;
570
+ }
571
+ else {
572
+ return false;
573
+ }
574
+ if (!call || adapter.getNodeType(call) !== 'call_expression')
575
+ return false;
576
+ // Verify the callee is one of .all / .first / .run — the
577
+ // member_expression may be inside an await_expression wrapper
578
+ // (await db.all(query, params)).
579
+ let callee = adapter.getChildren(call).find(c => adapter.getNodeType(c) === 'member_expression');
580
+ if (!callee) {
581
+ const awaitExpr = adapter.getChildren(call).find(c => adapter.getNodeType(c) === 'await_expression');
582
+ if (awaitExpr) {
583
+ callee = adapter.getChildren(awaitExpr).find(c => adapter.getNodeType(c) === 'member_expression');
584
+ }
585
+ }
586
+ if (!callee)
587
+ return false;
588
+ const methodName = adapter.getChildren(callee).find(c => adapter.getNodeType(c) === 'property_identifier' &&
589
+ D1_CONVENIENCE.has(adapter.getNodeText(c, sourceCode)));
590
+ if (!methodName)
591
+ return false;
592
+ // Check for bind parameters — must have more than one argument.
593
+ // The first argument is the query text; any subsequent argument
594
+ // carries bind values for the ? placeholders.
595
+ const args = adapter.getChildren(call).find(c => adapter.getNodeType(c) === 'arguments');
596
+ if (!args)
597
+ return false;
598
+ const argChildren = adapter.getChildren(args);
599
+ // Filter out commas and whitespace; count real argument nodes.
600
+ const realArgs = argChildren.filter(c => !['(', ')', ',', 'comment'].includes(adapter.getNodeType(c)));
601
+ return realArgs.length >= 2;
602
+ }
603
+ /**
604
+ * Detect simple-function-call DB wrappers with bind parameters.
605
+ *
606
+ * dbWrapperNames (d1Query, d1Exec) are function wrappers that accept
607
+ * (sqlTemplate, bindParams) — the same pattern as .prepare().bind() but
608
+ * expressed as a direct function call rather than a method chain.
609
+ *
610
+ * `d1Query(\`SELECT ... WHERE x = ?\`, [value])` — bind params as second arg
611
+ * means the call is fully parameterized, even though the template literal
612
+ * text contains `${}` interpolation for table/column names.
613
+ *
614
+ * Entry point: a template_string inside the wrapper's arguments.
615
+ */
616
+ isWrapperFunctionWithBindParams(node, adapter, sourceCode, wrapperNames) {
617
+ if (wrapperNames.length === 0)
618
+ return false;
619
+ if (adapter.getNodeType(node) !== 'template_string')
620
+ return false;
621
+ // Walk up from template_string → arguments → call_expression
622
+ const args = adapter.getParent(node);
623
+ if (!args || adapter.getNodeType(args) !== 'arguments')
624
+ return false;
625
+ const call = adapter.getParent(args);
626
+ if (!call || adapter.getNodeType(call) !== 'call_expression')
627
+ return false;
628
+ // Check if the callee is a simple identifier (not member expression)
629
+ // matching one of the wrapper names.
630
+ const children = adapter.getChildren(call);
631
+ const callee = children.find(c => adapter.getNodeType(c) === 'identifier');
632
+ if (!callee)
633
+ return false;
634
+ const calleeName = adapter.getNodeText(callee, sourceCode);
635
+ if (!wrapperNames.includes(calleeName))
636
+ return false;
637
+ // Check for a second argument — the bind params. A single-arg call
638
+ // like d1Query(sql) without params has no runtime parameterization.
639
+ const realArgs = adapter.getChildren(args).filter(c => !['(', ')', ','].includes(adapter.getNodeType(c)));
640
+ return realArgs.length >= 2;
641
+ }
642
+ /**
643
+ * Check the two-statement prepare→bind pattern: db.prepare() is assigned to
644
+ * a variable whose value is later .bind()'ed in the same function scope.
645
+ *
646
+ * const stmt = db.prepare(sql);
647
+ * const result = stmt.bind(x).all();
648
+ *
649
+ * The direct-chain check (isInPrepareBindChain Step 3) only catches the
650
+ * single-expression form `db.prepare(sql).bind(x).all()`. This method
651
+ * catches the common idiom where the prepared statement is stored in a local
652
+ * before being bound.
653
+ */
654
+ isPrepareAssignedToVariable(prepareCall, adapter, sourceCode) {
655
+ // The parent of the prepare call_expression reveals how the result is used.
656
+ const parent = adapter.getParent(prepareCall);
657
+ if (!parent)
658
+ return false;
659
+ const parentType = adapter.getNodeType(parent);
660
+ let varName = null;
661
+ if (parentType === 'variable_declarator') {
662
+ // const stmt = db.prepare(sql)
663
+ const children = adapter.getChildren(parent);
664
+ const nameChild = children.find(c => adapter.getNodeType(c) === 'identifier');
665
+ if (nameChild) {
666
+ varName = adapter.getNodeText(nameChild, sourceCode);
667
+ }
668
+ }
669
+ else if (parentType === 'assignment_expression') {
670
+ // stmt = db.prepare(sql)
671
+ const children = adapter.getChildren(parent);
672
+ const left = children.find(c => adapter.getNodeType(c) === 'identifier' ||
673
+ adapter.getNodeType(c) === 'member_expression');
674
+ if (left) {
675
+ varName = adapter.getNodeText(left, sourceCode);
676
+ }
677
+ }
678
+ if (!varName)
679
+ return false;
680
+ // Scan the enclosing function scope for `.bind()` on this variable.
681
+ const fnNode = this.findEnclosingFunctionNode(prepareCall, adapter);
682
+ if (!fnNode)
683
+ return false;
684
+ const fnText = adapter.getNodeText(fnNode, sourceCode);
685
+ const escaped = varName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
686
+ const bindPattern = new RegExp(String.raw `\b${escaped}\.bind\s*\(`, 'u');
687
+ return bindPattern.test(fnText);
688
+ }
689
+ /**
690
+ * Walk up the AST to find the enclosing function node (function_declaration,
691
+ * arrow_function, or method_definition). Returns null if we reach the
692
+ * program root.
693
+ */
694
+ findEnclosingFunctionNode(node, adapter) {
695
+ let current = node;
696
+ while (current) {
697
+ const type = adapter.getNodeType(current);
698
+ if (type === 'function_declaration' ||
699
+ type === 'function_expression' ||
700
+ type === 'arrow_function' ||
701
+ type === 'method_definition') {
702
+ return current;
703
+ }
704
+ current = adapter.getParent(current);
705
+ }
706
+ return null;
707
+ }
371
708
  isOrmPattern(text) {
372
709
  // Common ORM method patterns
373
710
  const ormPatterns = [
@@ -483,6 +820,32 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
483
820
  return false;
484
821
  }
485
822
  checkQuerySecurity(node, text, ast, adapter, sourceCode, config) {
823
+ // Check for D1's .prepare().bind() chain — queries parameterized via
824
+ // .bind() are safe even when the template literal text doesn't contain
825
+ // '?' placeholders (the bind args carry the values). Walk up the AST
826
+ // from the template-string node to detect the enclosing chain.
827
+ if (this.isInPrepareBindChain(node, adapter, sourceCode)) {
828
+ return { parameterized: true, injectionRisk: false };
829
+ }
830
+ // Check for Durable Objects' .exec() — the internal SQLite interface.
831
+ // Spread binds (sql.exec(template, ...binds)) mean parameterized; without
832
+ // binds, template interpolation is query-composition-time, not runtime.
833
+ if (this.isInExecChain(node, adapter, sourceCode)) {
834
+ return { parameterized: true, injectionRisk: false };
835
+ }
836
+ // Check for D1 convenience methods — .all(), .first(), .run() with bind
837
+ // parameters. db.all(query, ...params) is shorthand for the full
838
+ // prepare().bind().all() chain.
839
+ if (this.isD1ConvenienceCall(node, adapter, sourceCode)) {
840
+ return { parameterized: true, injectionRisk: false };
841
+ }
842
+ // Check for DB wrapper functions with bind params — d1Query(sql, params)
843
+ // sends params as separate JSON field to the D1 REST API, which is true
844
+ // parameterization (not string interpolation). Same security guarantee
845
+ // as .prepare().bind() but expressed as a direct function call.
846
+ if (this.isWrapperFunctionWithBindParams(node, adapter, sourceCode, config.dbWrapperNames ?? [])) {
847
+ return { parameterized: true, injectionRisk: false };
848
+ }
486
849
  const parameterized = (config.securityPatterns?.parameterizedQueries || []).some(pattern => text.includes(pattern));
487
850
  if (parameterized) {
488
851
  return { parameterized: true, injectionRisk: false };
@@ -508,6 +871,14 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
508
871
  const unresolved = [];
509
872
  for (const part of dynamicParts) {
510
873
  if (!part.isIdentifier) {
874
+ // A non-identifier expression — check for known sanitizer wrappers.
875
+ // escapeSql(x) wraps user input in single-quote escaping and is a
876
+ // config-driven allowlist. An interpolation wrapped in a known
877
+ // sanitizer isn't raw — same pattern as dbWrapperNames for provenance.
878
+ const normalized = part.text.trim();
879
+ const sanitized = (config.sanitizerNames ?? []).some(name => normalized.startsWith(name + '(') || normalized.startsWith(name + ' ('));
880
+ if (sanitized)
881
+ continue; // Sanitizer-wrapped — not raw interpolation
511
882
  // A non-identifier expression embedded in the string — definitely dynamic.
512
883
  unresolved.push(part.text);
513
884
  continue;
@@ -538,7 +909,56 @@ export class UniversalDataAccessAnalyzer extends UniversalAnalyzer {
538
909
  message: `Cannot protect interpolated content: ${names}`,
539
910
  };
540
911
  }
912
+ extractCallExpressionMethod(callExpr, adapter, sourceCode) {
913
+ // Extract the method name from the callee of a call expression.
914
+ // For `sql.exec(...)` the callee is a member_expression whose
915
+ // property_identifier is "exec". Walking the AST avoids picking up SQL
916
+ // keywords (COUNT, JOIN, WHERE, ...) that appear inside template literals
917
+ // in the call arguments, which a regex scan of the full call-expression
918
+ // text would incorrectly match.
919
+ const children = adapter.getChildren(callExpr);
920
+ const callee = children.find(c => {
921
+ const t = adapter.getNodeType(c);
922
+ return t === 'member_expression' || t === 'identifier';
923
+ });
924
+ if (callee) {
925
+ const calleeType = adapter.getNodeType(callee);
926
+ if (calleeType === 'member_expression') {
927
+ const mc = adapter.getChildren(callee);
928
+ const prop = mc.find(c => adapter.getNodeType(c) === 'property_identifier');
929
+ if (prop)
930
+ return adapter.getNodeText(prop, sourceCode);
931
+ }
932
+ else {
933
+ // Bare identifier call (e.g. `exec(...)`)
934
+ return adapter.getNodeText(callee, sourceCode);
935
+ }
936
+ }
937
+ // Fallback: regex on just the callee portion of the text
938
+ const callText = adapter.getNodeText(callExpr, sourceCode);
939
+ const m = callText.match(/\.(\w+)\s*[<(]/);
940
+ return m ? m[1] : 'unknown';
941
+ }
541
942
  extractMethodName(node, adapter, sourceCode) {
943
+ const nodeType = adapter.getNodeType(node);
944
+ // For template literals inside a DB-provenanced call, extract the method
945
+ // name from the enclosing call expression instead of the template body.
946
+ if (nodeType === 'template_string' || nodeType === 'template_literal') {
947
+ const parent = adapter.getParent(node);
948
+ if (parent && adapter.getNodeType(parent) === 'arguments') {
949
+ const callExpr = adapter.getParent(parent);
950
+ if (callExpr && adapter.getNodeType(callExpr) === 'call_expression') {
951
+ return this.extractCallExpressionMethod(callExpr, adapter, sourceCode);
952
+ }
953
+ }
954
+ }
955
+ // For call expressions themselves, extract from the callee child. The
956
+ // full node text includes the arguments (which may contain template
957
+ // literals with SQL keywords), so a naive regex scan of the whole text
958
+ // can match COUNT, JOIN, WHERE, etc. instead of the real method name.
959
+ if (nodeType === 'call_expression') {
960
+ return this.extractCallExpressionMethod(node, adapter, sourceCode);
961
+ }
542
962
  const text = adapter.getNodeText(node, sourceCode);
543
963
  const match = text.match(/([\p{L}\p{N}_]+)\s*\(/u);
544
964
  return match ? match[1] : 'unknown';
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalDataAccessAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalDataAccessAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UniversalDataAccessAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalDataAccessAnalyzer.ts"],"names":[],"mappings":"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"}