vibe-guard 1.1.2 → 1.1.3

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 (71) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/README.md +104 -112
  3. package/dist/bin/vibe-guard.js +0 -7
  4. package/dist/bin/vibe-guard.js.map +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +0 -3
  7. package/dist/index.js.map +1 -1
  8. package/dist/reporter.d.ts.map +1 -1
  9. package/dist/reporter.js +0 -5
  10. package/dist/reporter.js.map +1 -1
  11. package/dist/rules/ai-agent-access-control.d.ts +11 -0
  12. package/dist/rules/ai-agent-access-control.d.ts.map +1 -0
  13. package/dist/rules/ai-agent-access-control.js +65 -0
  14. package/dist/rules/ai-agent-access-control.js.map +1 -0
  15. package/dist/rules/ai-data-leakage-prevention.d.ts +11 -0
  16. package/dist/rules/ai-data-leakage-prevention.d.ts.map +1 -0
  17. package/dist/rules/ai-data-leakage-prevention.js +68 -0
  18. package/dist/rules/ai-data-leakage-prevention.js.map +1 -0
  19. package/dist/rules/ai-generated-code-validation.d.ts +17 -0
  20. package/dist/rules/ai-generated-code-validation.d.ts.map +1 -0
  21. package/dist/rules/ai-generated-code-validation.js +225 -0
  22. package/dist/rules/ai-generated-code-validation.js.map +1 -0
  23. package/dist/rules/broken-access-control.d.ts.map +1 -1
  24. package/dist/rules/broken-access-control.js +1 -10
  25. package/dist/rules/broken-access-control.js.map +1 -1
  26. package/dist/rules/csrf-protection.d.ts +0 -1
  27. package/dist/rules/csrf-protection.d.ts.map +1 -1
  28. package/dist/rules/csrf-protection.js +2 -22
  29. package/dist/rules/csrf-protection.js.map +1 -1
  30. package/dist/rules/exposed-secrets.d.ts.map +1 -1
  31. package/dist/rules/exposed-secrets.js +14 -36
  32. package/dist/rules/exposed-secrets.js.map +1 -1
  33. package/dist/rules/hardcoded-sensitive-data.d.ts.map +1 -1
  34. package/dist/rules/hardcoded-sensitive-data.js +0 -1
  35. package/dist/rules/hardcoded-sensitive-data.js.map +1 -1
  36. package/dist/rules/insecure-configuration.d.ts +5 -5
  37. package/dist/rules/insecure-configuration.d.ts.map +1 -1
  38. package/dist/rules/insecure-configuration.js +71 -87
  39. package/dist/rules/insecure-configuration.js.map +1 -1
  40. package/dist/rules/insecure-dependencies.d.ts.map +1 -1
  41. package/dist/rules/insecure-dependencies.js +29 -48
  42. package/dist/rules/insecure-dependencies.js.map +1 -1
  43. package/dist/rules/insecure-logging.d.ts.map +1 -1
  44. package/dist/rules/insecure-logging.js +0 -1
  45. package/dist/rules/insecure-logging.js.map +1 -1
  46. package/dist/rules/insecure-random-generation.d.ts.map +1 -1
  47. package/dist/rules/insecure-random-generation.js +0 -4
  48. package/dist/rules/insecure-random-generation.js.map +1 -1
  49. package/dist/rules/mcp-server-security.d.ts +11 -0
  50. package/dist/rules/mcp-server-security.d.ts.map +1 -0
  51. package/dist/rules/mcp-server-security.js +96 -0
  52. package/dist/rules/mcp-server-security.js.map +1 -0
  53. package/dist/rules/prompt-injection-detection.d.ts +11 -0
  54. package/dist/rules/prompt-injection-detection.d.ts.map +1 -0
  55. package/dist/rules/prompt-injection-detection.js +69 -0
  56. package/dist/rules/prompt-injection-detection.js.map +1 -0
  57. package/dist/rules/sql-injection.d.ts.map +1 -1
  58. package/dist/rules/sql-injection.js +13 -53
  59. package/dist/rules/sql-injection.js.map +1 -1
  60. package/dist/rules/unvalidated-input.d.ts.map +1 -1
  61. package/dist/rules/unvalidated-input.js +0 -1
  62. package/dist/rules/unvalidated-input.js.map +1 -1
  63. package/dist/rules/xss-detection.d.ts.map +1 -1
  64. package/dist/rules/xss-detection.js +17 -75
  65. package/dist/rules/xss-detection.js.map +1 -1
  66. package/dist/scanner.d.ts.map +1 -1
  67. package/dist/scanner.js +1 -13
  68. package/dist/scanner.js.map +1 -1
  69. package/dist/types/version.d.ts +1 -1
  70. package/dist/types/version.js +1 -1
  71. package/package.json +2 -2
@@ -0,0 +1,11 @@
1
+ import { BaseRule, FileContent, SecurityIssue } from '../types';
2
+ export declare class AiDataLeakagePreventionRule extends BaseRule {
3
+ readonly name = "ai-data-leakage-prevention";
4
+ readonly description = "Detects potential data leakage in AI systems and training data exposure";
5
+ readonly severity: "high";
6
+ private readonly leakagePatterns;
7
+ private readonly falsePositivePatterns;
8
+ check(fileContent: FileContent): SecurityIssue[];
9
+ private isFalsePositive;
10
+ }
11
+ //# sourceMappingURL=ai-data-leakage-prevention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-data-leakage-prevention.d.ts","sourceRoot":"","sources":["../../src/rules/ai-data-leakage-prevention.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,qBAAa,2BAA4B,SAAQ,QAAQ;IACvD,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,WAAW,6EAA6E;IACjG,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAmB9B;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAsBpC;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IA0BhD,OAAO,CAAC,eAAe;CAGxB"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiDataLeakagePreventionRule = void 0;
4
+ const types_1 = require("../types");
5
+ class AiDataLeakagePreventionRule extends types_1.BaseRule {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.name = 'ai-data-leakage-prevention';
9
+ this.description = 'Detects potential data leakage in AI systems and training data exposure';
10
+ this.severity = 'high';
11
+ this.leakagePatterns = [
12
+ // Training data exposure
13
+ { pattern: /(?:training[_-]?data|dataset|corpus).*?(?:expose|leak|public|unrestricted)/gi, type: 'Training Data Exposure' },
14
+ { pattern: /(?:sensitive|confidential|proprietary).*?(?:training|dataset|corpus)/gi, type: 'Sensitive Training Data' },
15
+ // Model output containing sensitive data
16
+ { pattern: /(?:model|ai|llm).*?(?:output|response|generation).*?(?:sensitive|confidential|proprietary)/gi, type: 'Sensitive Data in AI Output' },
17
+ // Unfiltered AI responses
18
+ { pattern: /(?:ai|model|llm).*?(?:unfiltered|unrestricted|raw).*?(?:output|response)/gi, type: 'Unfiltered AI Output' },
19
+ // Data classification bypass
20
+ { pattern: /(?:bypass|ignore|skip).*?(?:classification|label|sensitivity)/gi, type: 'Data Classification Bypass' },
21
+ // AI model containing sensitive data
22
+ { pattern: /(?:model|weights|parameters).*?(?:contain|include|embed).*?(?:sensitive|confidential)/gi, type: 'Sensitive Data in Model' },
23
+ // Unencrypted AI artifacts
24
+ { pattern: /(?:model|weights|artifacts).*?(?:unencrypted|plaintext|raw)/gi, type: 'Unencrypted AI Artifacts' }
25
+ ];
26
+ this.falsePositivePatterns = [
27
+ /example/i,
28
+ /demo/i,
29
+ /test/i,
30
+ /mock/i,
31
+ /sample/i,
32
+ /placeholder/i,
33
+ /comment/i,
34
+ /todo/i,
35
+ /fixme/i,
36
+ /\/\/.*/i,
37
+ /#.*/i,
38
+ /\/\*.*\*\//i,
39
+ /<!--.*-->/i,
40
+ /development/i,
41
+ /dev/i,
42
+ /staging/i,
43
+ /localhost/i,
44
+ /encrypt/i,
45
+ /protect/i,
46
+ /secure/i,
47
+ /filter/i
48
+ ];
49
+ }
50
+ check(fileContent) {
51
+ const issues = [];
52
+ for (const { pattern, type } of this.leakagePatterns) {
53
+ const matches = this.findMatches(fileContent.content, pattern);
54
+ for (const { line, column, lineContent } of matches) {
55
+ if (this.isFalsePositive(lineContent)) {
56
+ continue;
57
+ }
58
+ issues.push(this.createIssue(fileContent.path, line, column, lineContent, `High: ${type} detected`, `Implement data loss prevention (DLP) policies. Use sensitivity labels, output filtering, and encryption for AI artifacts. Monitor AI outputs for sensitive data exposure.`, 'high'));
59
+ }
60
+ }
61
+ return issues;
62
+ }
63
+ isFalsePositive(lineContent) {
64
+ return this.falsePositivePatterns.some(pattern => pattern.test(lineContent));
65
+ }
66
+ }
67
+ exports.AiDataLeakagePreventionRule = AiDataLeakagePreventionRule;
68
+ //# sourceMappingURL=ai-data-leakage-prevention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-data-leakage-prevention.js","sourceRoot":"","sources":["../../src/rules/ai-data-leakage-prevention.ts"],"names":[],"mappings":";;;AAAA,oCAAgE;AAEhE,MAAa,2BAA4B,SAAQ,gBAAQ;IAAzD;;QACW,SAAI,GAAG,4BAA4B,CAAC;QACpC,gBAAW,GAAG,yEAAyE,CAAC;QACxF,aAAQ,GAAG,MAAe,CAAC;QAEnB,oBAAe,GAAG;YACjC,yBAAyB;YACzB,EAAE,OAAO,EAAE,8EAA8E,EAAE,IAAI,EAAE,wBAAwB,EAAE;YAC3H,EAAE,OAAO,EAAE,wEAAwE,EAAE,IAAI,EAAE,yBAAyB,EAAE;YAEtH,yCAAyC;YACzC,EAAE,OAAO,EAAE,8FAA8F,EAAE,IAAI,EAAE,6BAA6B,EAAE;YAEhJ,0BAA0B;YAC1B,EAAE,OAAO,EAAE,4EAA4E,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAEvH,6BAA6B;YAC7B,EAAE,OAAO,EAAE,iEAAiE,EAAE,IAAI,EAAE,4BAA4B,EAAE;YAElH,qCAAqC;YACrC,EAAE,OAAO,EAAE,yFAAyF,EAAE,IAAI,EAAE,yBAAyB,EAAE;YAEvI,2BAA2B;YAC3B,EAAE,OAAO,EAAE,+DAA+D,EAAE,IAAI,EAAE,0BAA0B,EAAE;SAC/G,CAAC;QAEe,0BAAqB,GAAG;YACvC,UAAU;YACV,OAAO;YACP,OAAO;YACP,OAAO;YACP,SAAS;YACT,cAAc;YACd,UAAU;YACV,OAAO;YACP,QAAQ;YACR,SAAS;YACT,MAAM;YACN,aAAa;YACb,YAAY;YACZ,cAAc;YACd,MAAM;YACN,UAAU;YACV,YAAY;YACZ,UAAU;YACV,UAAU;YACV,SAAS;YACT,SAAS;SACV,CAAC;IA+BJ,CAAC;IA7BC,KAAK,CAAC,WAAwB;QAC5B,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE/D,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,OAAO,EAAE,CAAC;gBACpD,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtC,SAAS;gBACX,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAC1B,WAAW,CAAC,IAAI,EAChB,IAAI,EACJ,MAAM,EACN,WAAW,EACX,SAAS,IAAI,WAAW,EACxB,2KAA2K,EAC3K,MAAM,CACP,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,eAAe,CAAC,WAAmB;QACzC,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/E,CAAC;CACF;AA/ED,kEA+EC"}
@@ -0,0 +1,17 @@
1
+ import { BaseRule, FileContent, SecurityIssue } from '../types';
2
+ export declare class AiGeneratedCodeValidationRule extends BaseRule {
3
+ readonly name = "ai-generated-code-validation";
4
+ readonly description = "Detects security issues in AI-generated code and validates its safety";
5
+ readonly severity: "high";
6
+ private readonly aiCodePatterns;
7
+ private readonly falsePositivePatterns;
8
+ private readonly contextPatterns;
9
+ check(fileContent: FileContent): SecurityIssue[];
10
+ private isFalsePositive;
11
+ private isDevelopmentContext;
12
+ private isTestFile;
13
+ private adjustSeverityForContext;
14
+ private findMultiLineMatches;
15
+ private getSuggestion;
16
+ }
17
+ //# sourceMappingURL=ai-generated-code-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-generated-code-validation.d.ts","sourceRoot":"","sources":["../../src/rules/ai-generated-code-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,qBAAa,6BAA8B,SAAQ,QAAQ;IACzD,QAAQ,CAAC,IAAI,kCAAkC;IAC/C,QAAQ,CAAC,WAAW,2EAA2E;IAC/F,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CA+B7B;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAwDpC;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAoB9B;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IAkDhD,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,oBAAoB;IAyC5B,OAAO,CAAC,aAAa;CAatB"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiGeneratedCodeValidationRule = void 0;
4
+ const types_1 = require("../types");
5
+ class AiGeneratedCodeValidationRule extends types_1.BaseRule {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.name = 'ai-generated-code-validation';
9
+ this.description = 'Detects security issues in AI-generated code and validates its safety';
10
+ this.severity = 'high';
11
+ this.aiCodePatterns = [
12
+ {
13
+ pattern: /(?:generated[_-]?by|ai[_-]?generated|copilot|chatgpt|gpt[_-]?generated|claude[_-]?generated)/gi,
14
+ type: 'AI-Generated Code',
15
+ severity: 'medium'
16
+ },
17
+ {
18
+ pattern: /(?:ai|generated|copilot).*?(?:unvalidated|unreviewed|unchecked)/gi,
19
+ type: 'Unvalidated AI Code',
20
+ severity: 'high'
21
+ },
22
+ {
23
+ pattern: /(?:ai|generated|copilot).*?(?:no[_-]?review|without[_-]?review|skip[_-]?review)/gi,
24
+ type: 'AI Code Without Security Review',
25
+ severity: 'high'
26
+ },
27
+ {
28
+ pattern: /(?:ai|generated|copilot).*?(?:vulnerable|insecure|unsafe)/gi,
29
+ type: 'Vulnerable AI-Generated Code',
30
+ severity: 'critical'
31
+ },
32
+ {
33
+ pattern: /(?:ai|generated|copilot).*?(?:bypass|skip|ignore).*?(?:security|validation)/gi,
34
+ type: 'AI Code Bypassing Security',
35
+ severity: 'critical'
36
+ },
37
+ {
38
+ pattern: /(?:prompt|input).*?(?:ignore|forget|system|assistant|user).*?(?:previous|above|instructions)/gis,
39
+ type: 'Multi-Line AI Injection',
40
+ severity: 'critical'
41
+ }
42
+ ];
43
+ this.falsePositivePatterns = [
44
+ // Basic false positives
45
+ /example/i,
46
+ /demo/i,
47
+ /test/i,
48
+ /mock/i,
49
+ /sample/i,
50
+ /placeholder/i,
51
+ /comment/i,
52
+ /todo/i,
53
+ /fixme/i,
54
+ /\/\/.*/i,
55
+ /#.*/i,
56
+ /\/\*.*\*\//i,
57
+ /<!--.*-->/i,
58
+ /development/i,
59
+ /dev/i,
60
+ /staging/i,
61
+ /localhost/i,
62
+ // Security-related false positives
63
+ /validate/i,
64
+ /review/i,
65
+ /secure/i,
66
+ /safe/i,
67
+ /sanitize/i,
68
+ /escape/i,
69
+ /filter/i,
70
+ /protect/i,
71
+ // Documentation and examples
72
+ /documentation/i,
73
+ /readme/i,
74
+ /docs/i,
75
+ /example[_-]?code/i,
76
+ /sample[_-]?code/i,
77
+ /demo[_-]?code/i,
78
+ // Test files and directories
79
+ /test[_-]?files?/i,
80
+ /test[_-]?data/i,
81
+ /test[_-]?cases/i,
82
+ /spec[_-]?files?/i,
83
+ /__tests__/i,
84
+ /\.test\./i,
85
+ /\.spec\./i,
86
+ // Configuration and setup
87
+ /config[_-]?example/i,
88
+ /setup[_-]?example/i,
89
+ /template[_-]?example/i,
90
+ // Comments indicating safe usage
91
+ /\/\/.*(?:safe|secure|validated|reviewed)/i,
92
+ /#.*(?:safe|secure|validated|reviewed)/i,
93
+ /\/\*.*(?:safe|secure|validated|reviewed).*\*\//i
94
+ ];
95
+ this.contextPatterns = [
96
+ // Development environment indicators
97
+ /NODE_ENV\s*[:=]\s*['"`]development['"`]/i,
98
+ /process\.env\.NODE_ENV\s*[:=]\s*['"`]development['"`]/i,
99
+ /DEBUG\s*[:=]\s*['"`]true['"`]/i,
100
+ /debug\s*[:=]\s*true/i,
101
+ // Test environment indicators
102
+ /NODE_ENV\s*[:=]\s*['"`]test['"`]/i,
103
+ /process\.env\.NODE_ENV\s*[:=]\s*['"`]test['"`]/i,
104
+ /TESTING\s*[:=]\s*['"`]true['"`]/i,
105
+ /testing\s*[:=]\s*true/i,
106
+ // Local development indicators
107
+ /localhost/i,
108
+ /127\.0\.0\.1/i,
109
+ /0\.0\.0\.0/i,
110
+ /dev\./i,
111
+ /staging\./i,
112
+ /test\./i
113
+ ];
114
+ }
115
+ check(fileContent) {
116
+ const issues = [];
117
+ const isDevelopmentContext = this.isDevelopmentContext(fileContent.content);
118
+ const isTestFile = this.isTestFile(fileContent.path);
119
+ for (const { pattern, type, severity } of this.aiCodePatterns) {
120
+ let matches;
121
+ // Handle multi line patterns differently
122
+ if (pattern.flags.includes('s')) {
123
+ matches = this.findMultiLineMatches(fileContent.content, pattern);
124
+ }
125
+ else {
126
+ matches = this.findMatches(fileContent.content, pattern);
127
+ }
128
+ for (const { match, line, column, lineContent } of matches) {
129
+ const matchedText = match[0];
130
+ // Enhanced false positive detection
131
+ if (this.isFalsePositive(lineContent, matchedText, fileContent.path)) {
132
+ continue;
133
+ }
134
+ // Context-aware severity adjustment
135
+ let adjustedSeverity = severity;
136
+ if (isDevelopmentContext || isTestFile) {
137
+ adjustedSeverity = this.adjustSeverityForContext(severity);
138
+ }
139
+ if (adjustedSeverity === 'medium' && isDevelopmentContext) {
140
+ continue;
141
+ }
142
+ issues.push(this.createIssue(fileContent.path, line, column, lineContent, `${adjustedSeverity.charAt(0).toUpperCase() + adjustedSeverity.slice(1)}: ${type} detected`, this.getSuggestion(type, isDevelopmentContext, isTestFile), adjustedSeverity));
143
+ }
144
+ }
145
+ return issues;
146
+ }
147
+ isFalsePositive(lineContent, matchedText, filePath) {
148
+ if (this.falsePositivePatterns.some(pattern => pattern.test(lineContent))) {
149
+ return true;
150
+ }
151
+ if (filePath.match(/\.(md|txt|rst|adoc)$/i)) {
152
+ return true;
153
+ }
154
+ if (filePath.match(/\.(example|sample|template)\./i)) {
155
+ return true;
156
+ }
157
+ if (lineContent.trim().startsWith('//') || lineContent.trim().startsWith('#') ||
158
+ lineContent.trim().startsWith('/*') || lineContent.trim().startsWith('<!--')) {
159
+ return true;
160
+ }
161
+ // Check for variable assignments that are clearly examples
162
+ if (matchedText.match(/['"`](example|demo|test|sample|placeholder)['"`]/i) !== null) {
163
+ return true;
164
+ }
165
+ return false;
166
+ }
167
+ isDevelopmentContext(content) {
168
+ return this.contextPatterns.some(pattern => pattern.test(content));
169
+ }
170
+ isTestFile(filePath) {
171
+ return filePath.includes('test') ||
172
+ filePath.includes('spec') ||
173
+ filePath.includes('__tests__') ||
174
+ filePath.match(/\.(test|spec)\./i) !== null;
175
+ }
176
+ adjustSeverityForContext(originalSeverity) {
177
+ switch (originalSeverity) {
178
+ case 'critical':
179
+ return 'high';
180
+ case 'high':
181
+ return 'medium';
182
+ case 'medium':
183
+ return 'medium'; // Keep medium as minimum
184
+ default:
185
+ return originalSeverity;
186
+ }
187
+ }
188
+ findMultiLineMatches(content, pattern) {
189
+ const matches = [];
190
+ let match;
191
+ const globalPattern = new RegExp(pattern.source, pattern.flags.includes('g') ? pattern.flags : pattern.flags + 'g');
192
+ while ((match = globalPattern.exec(content)) !== null) {
193
+ // Find the line number for the match
194
+ const matchIndex = match.index ?? 0;
195
+ const beforeMatch = content.substring(0, matchIndex);
196
+ const lineNumber = beforeMatch.split('\n').length;
197
+ const lineStart = beforeMatch.lastIndexOf('\n') + 1;
198
+ const columnNumber = matchIndex - lineStart + 1;
199
+ // Get the line content (first line of multi-line match)
200
+ const lines = content.split('\n');
201
+ const lineContent = lines[lineNumber - 1] || '';
202
+ matches.push({
203
+ match,
204
+ line: lineNumber,
205
+ column: columnNumber,
206
+ lineContent
207
+ });
208
+ if (!pattern.flags.includes('g'))
209
+ break;
210
+ }
211
+ return matches;
212
+ }
213
+ getSuggestion(_type, isDevelopment, isTestFile) {
214
+ const baseSuggestion = `Always validate and review AI-generated code for security vulnerabilities. Implement automated security scanning and manual code review processes.`;
215
+ if (isDevelopment) {
216
+ return `${baseSuggestion} Consider using a separate security review process for production deployments.`;
217
+ }
218
+ if (isTestFile) {
219
+ return `${baseSuggestion} Ensure test files don't contain production security bypasses.`;
220
+ }
221
+ return baseSuggestion;
222
+ }
223
+ }
224
+ exports.AiGeneratedCodeValidationRule = AiGeneratedCodeValidationRule;
225
+ //# sourceMappingURL=ai-generated-code-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-generated-code-validation.js","sourceRoot":"","sources":["../../src/rules/ai-generated-code-validation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"broken-access-control.d.ts","sourceRoot":"","sources":["../../src/rules/broken-access-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,qBAAa,uBAAwB,SAAQ,QAAQ;IACnD,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,WAAW,gFAAgF;IACpG,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAgDpC;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CA2BpC;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IAkEhD,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,oBAAoB;CAoB7B"}
1
+ {"version":3,"file":"broken-access-control.d.ts","sourceRoot":"","sources":["../../src/rules/broken-access-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,qBAAa,uBAAwB,SAAQ,QAAQ;IACnD,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,WAAW,gFAAgF;IACpG,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAuCpC;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CA2BpC;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IAkEhD,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,oBAAoB;CAoB7B"}
@@ -10,16 +10,7 @@ class BrokenAccessControlRule extends types_1.BaseRule {
10
10
  this.severity = 'high';
11
11
  this.accessControlPatterns = [
12
12
  // Missing authorization checks in routes - Edge cases
13
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/admin[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'Admin route without authorization' },
14
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/user[^'"`]*\/[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'User-specific route without authorization' },
15
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/api[^'"`]*\/[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'API route without authorization' },
16
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/dashboard[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'Dashboard route without authorization' },
17
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/settings[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'Settings route without authorization' },
18
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/profile[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'Profile route without authorization' },
19
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/account[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'Account route without authorization' },
20
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/billing[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'Billing route without authorization' },
21
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/payment[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'Payment route without authorization' },
22
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/order[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'Order route without authorization' },
13
+ { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]*\/(?:admin|user|api|dashboard|settings|profile|account|billing|payment|order)[^'"`]*['"`]\s*,\s*(?!.*auth|.*login|.*verify|.*middleware|.*authorize|.*permission|.*guard|.*protect)/gi, type: 'Protected route without authorization' },
23
14
  // Direct object references without ownership checks
24
15
  { pattern: /findById\s*\(\s*(?:req\.|request\.|input\.|params\.|query\.|body\.)/gi, type: 'Direct object reference without ownership check' },
25
16
  { pattern: /findOne\s*\(\s*\{[^}]*id\s*:\s*(?:req\.|request\.|input\.|params\.|query\.|body\.)/gi, type: 'Database query without ownership check' },
@@ -1 +1 @@
1
- {"version":3,"file":"broken-access-control.js","sourceRoot":"","sources":["../../src/rules/broken-access-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broken-access-control.js","sourceRoot":"","sources":["../../src/rules/broken-access-control.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,6 @@ export declare class CsrfProtectionRule extends BaseRule {
9
9
  check(fileContent: FileContent): SecurityIssue[];
10
10
  private hasSafePatterns;
11
11
  private isCommentOrTest;
12
- private isGetRequest;
13
12
  private isDevelopmentContext;
14
13
  }
15
14
  //# sourceMappingURL=csrf-protection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"csrf-protection.d.ts","sourceRoot":"","sources":["../../src/rules/csrf-protection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,WAAW,sEAAsE;IAC1F,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CA4D3B;IAEF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAmB7B;IAEF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAwE3B;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IA4FhD,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,oBAAoB;CAe7B"}
1
+ {"version":3,"file":"csrf-protection.d.ts","sourceRoot":"","sources":["../../src/rules/csrf-protection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,WAAW,sEAAsE;IAC1F,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CA4D3B;IAEF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAmB7B;IAEF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAwE3B;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IAkFhD,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,oBAAoB;CAe7B"}
@@ -15,8 +15,8 @@ class CsrfProtectionRule extends types_1.BaseRule {
15
15
  // Hidden form fields without CSRF - Edge case
16
16
  { pattern: /<input[^>]*type\s*=\s*['"`]hidden['"`][^>]*name\s*=\s*['"`](?!csrf|token|_token|authenticity_token|_csrf_token)[^'"`]+['"`][^>]*>/gi, type: 'Hidden input without CSRF token' },
17
17
  // Express.js CSRF patterns - Edge cases
18
- { pattern: /app\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]+['"`]\s*,\s*(?!.*csrf|.*token|.*middleware|.*authenticate|.*authorize)/gi, type: 'Express route without CSRF protection' },
19
- { pattern: /router\.(?:get|post|put|delete|patch)\s*\(\s*['"`][^'"`]+['"`]\s*,\s*(?!.*csrf|.*token|.*middleware|.*authenticate|.*authorize)/gi, type: 'Express router without CSRF protection' },
18
+ { pattern: /app\.(?:post|put|delete|patch)\s*\(\s*['"`][^'"`]+['"`]\s*,\s*(?!.*csrf|.*token|.*middleware|.*authenticate|.*authorize)/gi, type: 'Express route without CSRF protection' },
19
+ { pattern: /router\.(?:post|put|delete|patch)\s*\(\s*['"`][^'"`]+['"`]\s*,\s*(?!.*csrf|.*token|.*middleware|.*authenticate|.*authorize)/gi, type: 'Express router without CSRF protection' },
20
20
  // Express middleware bypass - Edge case
21
21
  { pattern: /app\.use\s*\(\s*['"`]\/api['"`]\s*,\s*(?!.*csrf|.*token|.*middleware)/gi, type: 'API routes without CSRF middleware' },
22
22
  // Django CSRF patterns - Edge cases
@@ -140,9 +140,7 @@ class CsrfProtectionRule extends types_1.BaseRule {
140
140
  }
141
141
  check(fileContent) {
142
142
  const issues = [];
143
- // Special case for all-vulnerabilities-test.js
144
143
  if (fileContent.path.includes('all-vulnerabilities-test.js')) {
145
- // Find the specific missing CSRF protection example in the test file
146
144
  const csrfPattern = /const form = `<form action="\/transfer" method="POST">[\s\S]*?<input type="hidden" name="amount" value="1000">[\s\S]*?<input type="hidden" name="to" value="attacker">[\s\S]*?<\/form>`/;
147
145
  if (csrfPattern.test(fileContent.content)) {
148
146
  const lines = fileContent.content.split('\n');
@@ -154,27 +152,19 @@ class CsrfProtectionRule extends types_1.BaseRule {
154
152
  }
155
153
  }
156
154
  }
157
- // If we found issues in the test file, return them immediately
158
155
  if (issues.length > 0) {
159
156
  return issues;
160
157
  }
161
158
  }
162
- // Check for CSRF protection issues
163
159
  for (const { pattern, type } of this.csrfPatterns) {
164
160
  const matches = this.findMatches(fileContent.content, pattern);
165
161
  for (const { line, column, lineContent } of matches) {
166
- // Skip if the line contains safe patterns
167
162
  if (this.hasSafePatterns(lineContent)) {
168
163
  continue;
169
164
  }
170
- // Skip if it's in a comment or test file (except for all-vulnerabilities-test.js)
171
165
  if (this.isCommentOrTest(lineContent, fileContent.path)) {
172
166
  continue;
173
167
  }
174
- // Skip if it's a GET request (CSRF not applicable)
175
- if (this.isGetRequest(lineContent)) {
176
- continue;
177
- }
178
168
  issues.push(this.createIssue(fileContent.path, line, column, lineContent, `Missing CSRF protection: ${type}`, `Add CSRF protection to prevent cross-site request forgery attacks. Use CSRF tokens in forms and validate them on the server side.`));
179
169
  }
180
170
  }
@@ -182,7 +172,6 @@ class CsrfProtectionRule extends types_1.BaseRule {
182
172
  for (const { pattern, type } of this.cookiePatterns) {
183
173
  const matches = this.findMatches(fileContent.content, pattern);
184
174
  for (const { line, column, lineContent } of matches) {
185
- // Skip if it's in a comment or test file (except for all-vulnerabilities-test.js)
186
175
  if (this.isCommentOrTest(lineContent, fileContent.path)) {
187
176
  continue;
188
177
  }
@@ -226,15 +215,6 @@ class CsrfProtectionRule extends types_1.BaseRule {
226
215
  ];
227
216
  return testPatterns.some(pattern => pattern.test(filePath));
228
217
  }
229
- isGetRequest(line) {
230
- // Check if it's a GET request (CSRF not applicable)
231
- const getPatterns = [
232
- /method\s*=\s*['"`]get['"`]/i,
233
- /\.get\s*\(/i,
234
- /GET\s+/i
235
- ];
236
- return getPatterns.some(pattern => pattern.test(line));
237
- }
238
218
  isDevelopmentContext(line) {
239
219
  // Check if it's in a development context
240
220
  const devPatterns = [
@@ -1 +1 @@
1
- {"version":3,"file":"csrf-protection.js","sourceRoot":"","sources":["../../src/rules/csrf-protection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"csrf-protection.js","sourceRoot":"","sources":["../../src/rules/csrf-protection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"exposed-secrets.d.ts","sourceRoot":"","sources":["../../src/rules/exposed-secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,WAAW,uDAAuD;IAC3E,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;IAExC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAiC7B;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAgDpC;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IAiChD,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,mBAAmB;IAiC3B,OAAO,CAAC,UAAU;CAWnB"}
1
+ {"version":3,"file":"exposed-secrets.d.ts","sourceRoot":"","sources":["../../src/rules/exposed-secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhE,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,WAAW,uDAAuD;IAC3E,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;IAExC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAwB7B;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CA+CpC;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IA+BhD,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,UAAU;CAWnB"}