vibe-guard 1.1.4 → 1.2.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.
- package/README.md +163 -283
- package/dist/bin/vibe-guard.js +240 -22
- package/dist/bin/vibe-guard.js.map +1 -1
- package/dist/config.d.ts +0 -18
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -26
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -8
- package/dist/index.js.map +1 -1
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +41 -19
- package/dist/reporter.js.map +1 -1
- package/dist/rules/ai-agent-access-control.d.ts +27 -2
- package/dist/rules/ai-agent-access-control.d.ts.map +1 -1
- package/dist/rules/ai-agent-access-control.js +393 -19
- package/dist/rules/ai-agent-access-control.js.map +1 -1
- package/dist/rules/ai-data-leakage-prevention.d.ts +25 -2
- package/dist/rules/ai-data-leakage-prevention.d.ts.map +1 -1
- package/dist/rules/ai-data-leakage-prevention.js +409 -21
- package/dist/rules/ai-data-leakage-prevention.js.map +1 -1
- package/dist/rules/ai-generated-code-validation.d.ts +28 -7
- package/dist/rules/ai-generated-code-validation.d.ts.map +1 -1
- package/dist/rules/ai-generated-code-validation.js +367 -96
- package/dist/rules/ai-generated-code-validation.js.map +1 -1
- package/dist/rules/broken-access-control.d.ts +40 -5
- package/dist/rules/broken-access-control.d.ts.map +1 -1
- package/dist/rules/broken-access-control.js +595 -144
- package/dist/rules/broken-access-control.js.map +1 -1
- package/dist/rules/container-registry-security.d.ts +21 -0
- package/dist/rules/container-registry-security.d.ts.map +1 -0
- package/dist/rules/container-registry-security.js +271 -0
- package/dist/rules/container-registry-security.js.map +1 -0
- package/dist/rules/csrf-protection.d.ts +25 -4
- package/dist/rules/csrf-protection.d.ts.map +1 -1
- package/dist/rules/csrf-protection.js +328 -81
- package/dist/rules/csrf-protection.js.map +1 -1
- package/dist/rules/directory-traversal.d.ts +33 -5
- package/dist/rules/directory-traversal.d.ts.map +1 -1
- package/dist/rules/directory-traversal.js +470 -171
- package/dist/rules/directory-traversal.js.map +1 -1
- package/dist/rules/dockerfile-security.d.ts +20 -0
- package/dist/rules/dockerfile-security.d.ts.map +1 -0
- package/dist/rules/dockerfile-security.js +280 -0
- package/dist/rules/dockerfile-security.js.map +1 -0
- package/dist/rules/exposed-secrets.d.ts +25 -4
- package/dist/rules/exposed-secrets.d.ts.map +1 -1
- package/dist/rules/exposed-secrets.js +355 -95
- package/dist/rules/exposed-secrets.js.map +1 -1
- package/dist/rules/hardcoded-sensitive-data.d.ts +32 -2
- package/dist/rules/hardcoded-sensitive-data.d.ts.map +1 -1
- package/dist/rules/hardcoded-sensitive-data.js +426 -29
- package/dist/rules/hardcoded-sensitive-data.js.map +1 -1
- package/dist/rules/index.d.ts +9 -1
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +25 -1
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/insecure-configuration.d.ts +16 -5
- package/dist/rules/insecure-configuration.d.ts.map +1 -1
- package/dist/rules/insecure-configuration.js +457 -64
- package/dist/rules/insecure-configuration.js.map +1 -1
- package/dist/rules/insecure-dependencies.d.ts +46 -1
- package/dist/rules/insecure-dependencies.d.ts.map +1 -1
- package/dist/rules/insecure-dependencies.js +678 -51
- package/dist/rules/insecure-dependencies.js.map +1 -1
- package/dist/rules/insecure-deserialization.d.ts +29 -4
- package/dist/rules/insecure-deserialization.d.ts.map +1 -1
- package/dist/rules/insecure-deserialization.js +531 -101
- package/dist/rules/insecure-deserialization.js.map +1 -1
- package/dist/rules/insecure-error-handling.d.ts +35 -4
- package/dist/rules/insecure-error-handling.d.ts.map +1 -1
- package/dist/rules/insecure-error-handling.js +590 -87
- package/dist/rules/insecure-error-handling.js.map +1 -1
- package/dist/rules/insecure-file-upload.d.ts +37 -5
- package/dist/rules/insecure-file-upload.d.ts.map +1 -1
- package/dist/rules/insecure-file-upload.js +690 -138
- package/dist/rules/insecure-file-upload.js.map +1 -1
- package/dist/rules/insecure-http.d.ts +31 -2
- package/dist/rules/insecure-http.d.ts.map +1 -1
- package/dist/rules/insecure-http.js +547 -61
- package/dist/rules/insecure-http.js.map +1 -1
- package/dist/rules/insecure-logging.d.ts +6 -1
- package/dist/rules/insecure-logging.d.ts.map +1 -1
- package/dist/rules/insecure-logging.js +430 -109
- package/dist/rules/insecure-logging.js.map +1 -1
- package/dist/rules/insecure-random-generation.d.ts +4 -1
- package/dist/rules/insecure-random-generation.d.ts.map +1 -1
- package/dist/rules/insecure-random-generation.js +239 -99
- package/dist/rules/insecure-random-generation.js.map +1 -1
- package/dist/rules/insecure-session-management.d.ts +4 -0
- package/dist/rules/insecure-session-management.d.ts.map +1 -1
- package/dist/rules/insecure-session-management.js +359 -54
- package/dist/rules/insecure-session-management.js.map +1 -1
- package/dist/rules/kubernetes-security.d.ts +17 -0
- package/dist/rules/kubernetes-security.d.ts.map +1 -0
- package/dist/rules/kubernetes-security.js +314 -0
- package/dist/rules/kubernetes-security.js.map +1 -0
- package/dist/rules/mcp-server-security.d.ts +32 -3
- package/dist/rules/mcp-server-security.d.ts.map +1 -1
- package/dist/rules/mcp-server-security.js +511 -39
- package/dist/rules/mcp-server-security.js.map +1 -1
- package/dist/rules/missing-authentication.d.ts +4 -0
- package/dist/rules/missing-authentication.d.ts.map +1 -1
- package/dist/rules/missing-authentication.js +263 -62
- package/dist/rules/missing-authentication.js.map +1 -1
- package/dist/rules/missing-security-headers.d.ts +32 -3
- package/dist/rules/missing-security-headers.d.ts.map +1 -1
- package/dist/rules/missing-security-headers.js +548 -95
- package/dist/rules/missing-security-headers.js.map +1 -1
- package/dist/rules/open-cors.d.ts +3 -0
- package/dist/rules/open-cors.d.ts.map +1 -1
- package/dist/rules/open-cors.js +202 -57
- package/dist/rules/open-cors.js.map +1 -1
- package/dist/rules/prompt-injection-detection.d.ts +33 -3
- package/dist/rules/prompt-injection-detection.d.ts.map +1 -1
- package/dist/rules/prompt-injection-detection.js +571 -43
- package/dist/rules/prompt-injection-detection.js.map +1 -1
- package/dist/rules/sql-injection.d.ts +27 -3
- package/dist/rules/sql-injection.d.ts.map +1 -1
- package/dist/rules/sql-injection.js +471 -61
- package/dist/rules/sql-injection.js.map +1 -1
- package/dist/rules/unvalidated-input.d.ts +20 -4
- package/dist/rules/unvalidated-input.d.ts.map +1 -1
- package/dist/rules/unvalidated-input.js +557 -128
- package/dist/rules/unvalidated-input.js.map +1 -1
- package/dist/rules/xss-detection.d.ts +25 -4
- package/dist/rules/xss-detection.d.ts.map +1 -1
- package/dist/rules/xss-detection.js +702 -135
- package/dist/rules/xss-detection.js.map +1 -1
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +11 -6
- package/dist/scanner.js.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.js +1 -1
- package/package.json +8 -3
- package/CHANGELOG.md +0 -102
|
@@ -6,25 +6,109 @@ class AiAgentAccessControlRule extends types_1.BaseRule {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
super(...arguments);
|
|
8
8
|
this.name = 'ai-agent-access-control';
|
|
9
|
-
this.description = 'Detects insecure AI agent access controls and privilege escalation';
|
|
9
|
+
this.description = 'Detects insecure AI agent access controls and privilege escalation with context-aware analysis';
|
|
10
10
|
this.severity = 'critical';
|
|
11
11
|
this.accessControlPatterns = [
|
|
12
|
-
// AI Agent with elevated privileges
|
|
13
|
-
|
|
14
|
-
{
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
// AI Agent with elevated privileges: Tighter patterns!
|
|
13
|
+
// Critical severity
|
|
14
|
+
{
|
|
15
|
+
pattern: /(?:ai[_-]?agent|agent|bot|assistant)\s*[:=]\s*['"`]?(?:admin|root|superuser|sudo)['"`]?/gi,
|
|
16
|
+
type: 'Elevated AI Agent Privileges',
|
|
17
|
+
confidence: 0.95,
|
|
18
|
+
severity: 'critical',
|
|
19
|
+
validation: (text) => this.validateElevatedPrivileges(text)
|
|
20
|
+
},
|
|
21
|
+
// Critical severity
|
|
22
|
+
{
|
|
23
|
+
pattern: /(?:permissions?|roles?|access)\s*[:=]\s*['"`]?(?:all|full|unlimited|wildcard)['"`]?/gi,
|
|
24
|
+
type: 'Unlimited AI Agent Permissions',
|
|
25
|
+
confidence: 0.9,
|
|
26
|
+
severity: 'critical',
|
|
27
|
+
validation: (text) => this.validateUnlimitedPermissions(text)
|
|
28
|
+
},
|
|
29
|
+
// High severity
|
|
30
|
+
// Authentication bypass patterns
|
|
31
|
+
{
|
|
32
|
+
pattern: /(?:auth|authentication)\s*[:=]\s*['"`]?(?:false|no|0|disabled|off)['"`]?/gi,
|
|
33
|
+
type: 'Disabled AI Agent Authentication',
|
|
34
|
+
confidence: 0.95,
|
|
35
|
+
severity: 'critical',
|
|
36
|
+
validation: (text) => this.validateDisabledAuth(text)
|
|
37
|
+
},
|
|
38
|
+
// High severity
|
|
39
|
+
// Missing RBAC for AI agents: More specific
|
|
40
|
+
{
|
|
41
|
+
pattern: /(?:ai[_-]?agent|agent|bot|assistant)\s*[:=]\s*['"`]?[^'"`]*\b(?:without|no|missing)\s+(?:role|permission|access[_-]?control)['"`]?/gi,
|
|
42
|
+
type: 'Missing AI Agent RBAC',
|
|
43
|
+
confidence: 0.85,
|
|
44
|
+
severity: 'high',
|
|
45
|
+
validation: (text) => this.validateMissingRBAC(text)
|
|
46
|
+
},
|
|
47
|
+
// Critical severity
|
|
17
48
|
// AI Agent with persistent elevated access
|
|
18
|
-
{
|
|
49
|
+
{
|
|
50
|
+
pattern: /(?:ai[_-]?agent|agent|bot|assistant).*?(?:permanent|persistent|always|forever).*?(?:admin|root|elevated)/gi,
|
|
51
|
+
type: 'Persistent Elevated AI Access',
|
|
52
|
+
confidence: 0.9,
|
|
53
|
+
severity: 'critical',
|
|
54
|
+
validation: (text) => this.validatePersistentAccess(text)
|
|
55
|
+
},
|
|
56
|
+
// High severity
|
|
19
57
|
// AI Agent bypassing authentication
|
|
20
|
-
{
|
|
58
|
+
{
|
|
59
|
+
pattern: /(?:ai[_-]?agent|agent|bot|assistant).*?(?:bypass|skip|ignore).*?(?:auth|authentication|login)/gi,
|
|
60
|
+
type: 'AI Agent Auth Bypass',
|
|
61
|
+
confidence: 0.95,
|
|
62
|
+
severity: 'critical',
|
|
63
|
+
validation: (text) => this.validateAuthBypass(text)
|
|
64
|
+
},
|
|
65
|
+
// High severity
|
|
21
66
|
// AI Agent with system-level access
|
|
22
|
-
{
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
67
|
+
{
|
|
68
|
+
pattern: /(?:ai[_-]?agent|agent|bot|assistant).*?(?:system|os|kernel|hardware)/gi,
|
|
69
|
+
type: 'AI Agent System Access',
|
|
70
|
+
confidence: 0.8,
|
|
71
|
+
severity: 'high',
|
|
72
|
+
validation: (text) => this.validateSystemAccess(text)
|
|
73
|
+
},
|
|
74
|
+
// High severity
|
|
75
|
+
// MCP Server insecure access: Tighter patterns!
|
|
76
|
+
{
|
|
77
|
+
pattern: /(?:mcp|model[_-]?context[_-]?protocol).*?(?:unrestricted|open|public)/gi,
|
|
78
|
+
type: 'Insecure MCP Server Access',
|
|
79
|
+
confidence: 0.85,
|
|
80
|
+
severity: 'high',
|
|
81
|
+
validation: (text) => this.validateInsecureMCP(text)
|
|
82
|
+
},
|
|
83
|
+
// High severity
|
|
84
|
+
{
|
|
85
|
+
pattern: /(?:mcp[_-]?server|model[_-]?context[_-]?protocol).*?(?:no[_-]?auth|without[_-]?auth)/gi,
|
|
86
|
+
type: 'MCP Server Without Auth',
|
|
87
|
+
confidence: 0.9,
|
|
88
|
+
severity: 'high',
|
|
89
|
+
validation: (text) => this.validateMCPNoAuth(text)
|
|
90
|
+
},
|
|
91
|
+
// Medium severity
|
|
92
|
+
// AI Agent with file system access
|
|
93
|
+
{
|
|
94
|
+
pattern: /(?:ai[_-]?agent|agent|bot|assistant).*?(?:file|directory|path|fs)/gi,
|
|
95
|
+
type: 'AI Agent File System Access',
|
|
96
|
+
confidence: 0.75,
|
|
97
|
+
severity: 'medium',
|
|
98
|
+
validation: (text) => this.validateFileSystemAccess(text)
|
|
99
|
+
},
|
|
100
|
+
// Medium severity
|
|
101
|
+
// AI Agent with network access
|
|
102
|
+
{
|
|
103
|
+
pattern: /(?:ai[_-]?agent|agent|bot|assistant).*?(?:network|http|https|api|endpoint)/gi,
|
|
104
|
+
type: 'AI Agent Network Access',
|
|
105
|
+
confidence: 0.7,
|
|
106
|
+
severity: 'medium',
|
|
107
|
+
validation: (text) => this.validateNetworkAccess(text)
|
|
108
|
+
}
|
|
26
109
|
];
|
|
27
110
|
this.falsePositivePatterns = [
|
|
111
|
+
// Development and testing patterns:
|
|
28
112
|
/example/i,
|
|
29
113
|
/demo/i,
|
|
30
114
|
/test/i,
|
|
@@ -41,24 +125,314 @@ class AiAgentAccessControlRule extends types_1.BaseRule {
|
|
|
41
125
|
/development/i,
|
|
42
126
|
/dev/i,
|
|
43
127
|
/staging/i,
|
|
44
|
-
/localhost/i
|
|
128
|
+
/localhost/i,
|
|
129
|
+
// Sandbox and safe environments:
|
|
130
|
+
/sandbox/i,
|
|
131
|
+
/isolated/i,
|
|
132
|
+
/contained/i,
|
|
133
|
+
/restricted/i,
|
|
134
|
+
/safe[_-]?mode/i,
|
|
135
|
+
/demo[_-]?mode/i,
|
|
136
|
+
/test[_-]?environment/i,
|
|
137
|
+
// Documentation and examples:
|
|
138
|
+
/documentation/i,
|
|
139
|
+
/docs?/i,
|
|
140
|
+
/readme/i,
|
|
141
|
+
/example[_-]?config/i,
|
|
142
|
+
/sample[_-]?config/i,
|
|
143
|
+
// Security related patterns (likely safe):
|
|
144
|
+
/secure/i,
|
|
145
|
+
/protected/i,
|
|
146
|
+
/guarded/i,
|
|
147
|
+
/monitored/i,
|
|
148
|
+
/audited/i,
|
|
149
|
+
/logged/i,
|
|
150
|
+
/restricted/i
|
|
45
151
|
];
|
|
46
152
|
}
|
|
47
153
|
check(fileContent) {
|
|
48
154
|
const issues = [];
|
|
49
|
-
|
|
155
|
+
const language = this.detectLanguage(fileContent.path);
|
|
156
|
+
const framework = this.detectFramework(fileContent.content, language);
|
|
157
|
+
const hasAuthChecks = this.hasAuthChecks(fileContent.content);
|
|
158
|
+
const isProtectedEnvironment = this.isProtectedEnvironment(fileContent.content);
|
|
159
|
+
for (const { pattern, type, confidence, severity, validation } of this.accessControlPatterns) {
|
|
50
160
|
const matches = this.findMatches(fileContent.content, pattern);
|
|
51
|
-
for (const { line, column, lineContent } of matches) {
|
|
52
|
-
|
|
161
|
+
for (const { match, line, column, lineContent } of matches) {
|
|
162
|
+
const matchedText = match[0];
|
|
163
|
+
const context = this.analyzeContext(fileContent, line, column, language, framework, hasAuthChecks, isProtectedEnvironment);
|
|
164
|
+
// Skips if in safe context
|
|
165
|
+
if (this.isSafeContext(context)) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
// Validates the access control issue
|
|
169
|
+
if (!validation(matchedText)) {
|
|
53
170
|
continue;
|
|
54
171
|
}
|
|
55
|
-
|
|
172
|
+
// Calculates final confidence based on context
|
|
173
|
+
const finalConfidence = this.calculateConfidence(confidence, context);
|
|
174
|
+
if (finalConfidence >= 0.5) {
|
|
175
|
+
issues.push(this.createIssue(fileContent.path, line, column, lineContent, `${severity.toUpperCase()}: ${type} detected (confidence: ${Math.round(finalConfidence * 100)}%): ${this.getLineContext(lineContent, column)}`, this.generateSuggestion(type, context), severity));
|
|
176
|
+
}
|
|
56
177
|
}
|
|
57
178
|
}
|
|
58
179
|
return issues;
|
|
59
180
|
}
|
|
60
|
-
|
|
61
|
-
|
|
181
|
+
analyzeContext(fileContent, line, column, language, framework, hasAuthChecks, isProtectedEnvironment) {
|
|
182
|
+
const lines = fileContent.lines;
|
|
183
|
+
const currentLine = lines[line - 1] || '';
|
|
184
|
+
const surroundingLines = lines.slice(Math.max(0, line - 3), line + 2);
|
|
185
|
+
return {
|
|
186
|
+
isInComment: this.isInComment(currentLine, language),
|
|
187
|
+
isInString: this.isInString(currentLine, column),
|
|
188
|
+
isInTestFile: this.isInTestFile(fileContent.path),
|
|
189
|
+
isInDocumentation: this.isInDocumentation(fileContent.path),
|
|
190
|
+
isInDevelopment: this.isInDevelopment(surroundingLines),
|
|
191
|
+
isInSandbox: this.isInSandbox(surroundingLines),
|
|
192
|
+
surroundingCode: surroundingLines.join('\n'),
|
|
193
|
+
language,
|
|
194
|
+
framework,
|
|
195
|
+
hasAuthChecks: hasAuthChecks || false,
|
|
196
|
+
isProtectedEnvironment: isProtectedEnvironment || false
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
isSafeContext(context) {
|
|
200
|
+
if (context.isInComment)
|
|
201
|
+
return true;
|
|
202
|
+
if (context.isInTestFile)
|
|
203
|
+
return true;
|
|
204
|
+
if (context.isInDocumentation)
|
|
205
|
+
return true;
|
|
206
|
+
if (context.isInDevelopment)
|
|
207
|
+
return true;
|
|
208
|
+
if (context.isInSandbox)
|
|
209
|
+
return true;
|
|
210
|
+
if (this.falsePositivePatterns.some(pattern => pattern.test(context.surroundingCode))) {
|
|
211
|
+
return true;
|
|
212
|
+
}
|
|
213
|
+
if (context.hasAuthChecks)
|
|
214
|
+
return true;
|
|
215
|
+
if (context.isProtectedEnvironment)
|
|
216
|
+
return true;
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
detectLanguage(filePath) {
|
|
220
|
+
const ext = filePath.split('.').pop()?.toLowerCase();
|
|
221
|
+
const languageMap = {
|
|
222
|
+
'js': 'javascript',
|
|
223
|
+
'jsx': 'javascript',
|
|
224
|
+
'ts': 'typescript',
|
|
225
|
+
'tsx': 'typescript',
|
|
226
|
+
'py': 'python',
|
|
227
|
+
'php': 'php',
|
|
228
|
+
'rb': 'ruby',
|
|
229
|
+
'go': 'go',
|
|
230
|
+
'java': 'java',
|
|
231
|
+
'cs': 'csharp'
|
|
232
|
+
};
|
|
233
|
+
return languageMap[ext || ''] || 'unknown';
|
|
234
|
+
}
|
|
235
|
+
detectFramework(content, language) {
|
|
236
|
+
if (language === 'javascript' || language === 'typescript') {
|
|
237
|
+
if (content.includes('openai') || content.includes('OpenAI'))
|
|
238
|
+
return 'openai';
|
|
239
|
+
if (content.includes('anthropic') || content.includes('Anthropic'))
|
|
240
|
+
return 'anthropic';
|
|
241
|
+
if (content.includes('langchain') || content.includes('LangChain'))
|
|
242
|
+
return 'langchain';
|
|
243
|
+
if (content.includes('llama') || content.includes('Llama'))
|
|
244
|
+
return 'llama';
|
|
245
|
+
}
|
|
246
|
+
if (language === 'python') {
|
|
247
|
+
if (content.includes('openai') || content.includes('OpenAI'))
|
|
248
|
+
return 'openai';
|
|
249
|
+
if (content.includes('anthropic') || content.includes('Anthropic'))
|
|
250
|
+
return 'anthropic';
|
|
251
|
+
if (content.includes('langchain') || content.includes('LangChain'))
|
|
252
|
+
return 'langchain';
|
|
253
|
+
if (content.includes('transformers') || content.includes('Transformers'))
|
|
254
|
+
return 'transformers';
|
|
255
|
+
}
|
|
256
|
+
return undefined;
|
|
257
|
+
}
|
|
258
|
+
isInComment(line, language) {
|
|
259
|
+
const trimmed = line.trim();
|
|
260
|
+
if (language === 'javascript' || language === 'typescript') {
|
|
261
|
+
return trimmed.startsWith('//') || trimmed.startsWith('/*') || trimmed.startsWith('*');
|
|
262
|
+
}
|
|
263
|
+
if (language === 'python') {
|
|
264
|
+
return trimmed.startsWith('#');
|
|
265
|
+
}
|
|
266
|
+
if (language === 'php') {
|
|
267
|
+
return trimmed.startsWith('//') || trimmed.startsWith('/*') || trimmed.startsWith('#');
|
|
268
|
+
}
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
isInString(line, column) {
|
|
272
|
+
const before = line.substring(0, column);
|
|
273
|
+
const quotes = (before.match(/['"`]/g) || []).length;
|
|
274
|
+
return quotes % 2 === 1;
|
|
275
|
+
}
|
|
276
|
+
isInTestFile(filePath) {
|
|
277
|
+
return filePath.includes('test') || filePath.includes('spec') || filePath.includes('mock');
|
|
278
|
+
}
|
|
279
|
+
isInDocumentation(filePath) {
|
|
280
|
+
const docPatterns = [
|
|
281
|
+
/docs?\//i,
|
|
282
|
+
/documentation/i,
|
|
283
|
+
/examples?/i,
|
|
284
|
+
/samples?/i,
|
|
285
|
+
/tutorials?/i,
|
|
286
|
+
/guides?/i,
|
|
287
|
+
/readme/i,
|
|
288
|
+
/\.md$/i,
|
|
289
|
+
/\.rst$/i,
|
|
290
|
+
/\.txt$/i
|
|
291
|
+
];
|
|
292
|
+
return docPatterns.some(pattern => pattern.test(filePath));
|
|
293
|
+
}
|
|
294
|
+
isInDevelopment(lines) {
|
|
295
|
+
return lines.some(line => line.includes('development') ||
|
|
296
|
+
line.includes('dev') ||
|
|
297
|
+
line.includes('staging') ||
|
|
298
|
+
line.includes('localhost') ||
|
|
299
|
+
line.includes('127.0.0.1') ||
|
|
300
|
+
line.includes('NODE_ENV') ||
|
|
301
|
+
line.includes('DEBUG'));
|
|
302
|
+
}
|
|
303
|
+
isInSandbox(lines) {
|
|
304
|
+
return lines.some(line => line.includes('sandbox') ||
|
|
305
|
+
line.includes('isolated') ||
|
|
306
|
+
line.includes('contained') ||
|
|
307
|
+
line.includes('restricted') ||
|
|
308
|
+
line.includes('safe[_-]?mode') ||
|
|
309
|
+
line.includes('demo[_-]?mode'));
|
|
310
|
+
}
|
|
311
|
+
hasAuthChecks(content) {
|
|
312
|
+
const authPatterns = [
|
|
313
|
+
/auth/i,
|
|
314
|
+
/authentication/i,
|
|
315
|
+
/authorization/i,
|
|
316
|
+
/permission/i,
|
|
317
|
+
/role/i,
|
|
318
|
+
/access[_-]?control/i,
|
|
319
|
+
/rbac/i,
|
|
320
|
+
/middleware/i,
|
|
321
|
+
/guard/i,
|
|
322
|
+
/protect/i,
|
|
323
|
+
/secure/i
|
|
324
|
+
];
|
|
325
|
+
return authPatterns.some(pattern => pattern.test(content));
|
|
326
|
+
}
|
|
327
|
+
isProtectedEnvironment(content) {
|
|
328
|
+
const protectedPatterns = [
|
|
329
|
+
/sandbox/i,
|
|
330
|
+
/isolated/i,
|
|
331
|
+
/contained/i,
|
|
332
|
+
/restricted/i,
|
|
333
|
+
/monitored/i,
|
|
334
|
+
/audited/i,
|
|
335
|
+
/logged/i,
|
|
336
|
+
/safe/i,
|
|
337
|
+
/protected/i
|
|
338
|
+
];
|
|
339
|
+
return protectedPatterns.some(pattern => pattern.test(content));
|
|
340
|
+
}
|
|
341
|
+
calculateConfidence(baseConfidence, context) {
|
|
342
|
+
let confidence = baseConfidence;
|
|
343
|
+
// Adjusts confidence based on context
|
|
344
|
+
if (context.hasAuthChecks)
|
|
345
|
+
confidence *= 0.6; // Reduces if auth checks present
|
|
346
|
+
if (context.isProtectedEnvironment)
|
|
347
|
+
confidence *= 0.7; // Reduces if in protected environment
|
|
348
|
+
if (context.framework)
|
|
349
|
+
confidence *= 1.1; // Increases for known frameworks
|
|
350
|
+
return Math.min(confidence, 1.0);
|
|
351
|
+
}
|
|
352
|
+
// Validation methods for different access control issues!
|
|
353
|
+
validateElevatedPrivileges(text) {
|
|
354
|
+
const privilegeKeywords = ['admin', 'root', 'superuser', 'sudo'];
|
|
355
|
+
return privilegeKeywords.some(keyword => text.toLowerCase().includes(keyword));
|
|
356
|
+
}
|
|
357
|
+
validateUnlimitedPermissions(text) {
|
|
358
|
+
const unlimitedKeywords = ['all', 'full', 'unlimited', 'wildcard'];
|
|
359
|
+
return unlimitedKeywords.some(keyword => text.toLowerCase().includes(keyword));
|
|
360
|
+
}
|
|
361
|
+
validateDisabledAuth(text) {
|
|
362
|
+
const disabledKeywords = ['false', 'no', '0', 'disabled', 'off'];
|
|
363
|
+
return disabledKeywords.some(keyword => text.toLowerCase().includes(keyword));
|
|
364
|
+
}
|
|
365
|
+
validateMissingRBAC(text) {
|
|
366
|
+
const missingKeywords = ['without', 'no', 'missing'];
|
|
367
|
+
const rbacKeywords = ['role', 'permission', 'access[_-]?control'];
|
|
368
|
+
return missingKeywords.some(missing => text.toLowerCase().includes(missing)) &&
|
|
369
|
+
rbacKeywords.some(rbac => text.toLowerCase().includes(rbac));
|
|
370
|
+
}
|
|
371
|
+
validatePersistentAccess(text) {
|
|
372
|
+
const persistentKeywords = ['permanent', 'persistent', 'always', 'forever'];
|
|
373
|
+
const elevatedKeywords = ['admin', 'root', 'elevated'];
|
|
374
|
+
return persistentKeywords.some(persistent => text.toLowerCase().includes(persistent)) &&
|
|
375
|
+
elevatedKeywords.some(elevated => text.toLowerCase().includes(elevated));
|
|
376
|
+
}
|
|
377
|
+
validateAuthBypass(text) {
|
|
378
|
+
const bypassKeywords = ['bypass', 'skip', 'ignore'];
|
|
379
|
+
const authKeywords = ['auth', 'authentication', 'login'];
|
|
380
|
+
return bypassKeywords.some(bypass => text.toLowerCase().includes(bypass)) &&
|
|
381
|
+
authKeywords.some(auth => text.toLowerCase().includes(auth));
|
|
382
|
+
}
|
|
383
|
+
validateSystemAccess(text) {
|
|
384
|
+
const systemKeywords = ['system', 'os', 'kernel', 'hardware'];
|
|
385
|
+
return systemKeywords.some(keyword => text.toLowerCase().includes(keyword));
|
|
386
|
+
}
|
|
387
|
+
validateInsecureMCP(text) {
|
|
388
|
+
const insecureKeywords = ['unrestricted', 'open', 'public'];
|
|
389
|
+
return insecureKeywords.some(keyword => text.toLowerCase().includes(keyword));
|
|
390
|
+
}
|
|
391
|
+
validateMCPNoAuth(text) {
|
|
392
|
+
const noAuthKeywords = ['no[_-]?auth', 'without[_-]?auth'];
|
|
393
|
+
return noAuthKeywords.some(keyword => text.toLowerCase().includes(keyword));
|
|
394
|
+
}
|
|
395
|
+
validateFileSystemAccess(text) {
|
|
396
|
+
const fsKeywords = ['file', 'directory', 'path', 'fs'];
|
|
397
|
+
return fsKeywords.some(keyword => text.toLowerCase().includes(keyword));
|
|
398
|
+
}
|
|
399
|
+
validateNetworkAccess(text) {
|
|
400
|
+
const networkKeywords = ['network', 'http', 'https', 'api', 'endpoint'];
|
|
401
|
+
return networkKeywords.some(keyword => text.toLowerCase().includes(keyword));
|
|
402
|
+
}
|
|
403
|
+
getLineContext(lineContent, column) {
|
|
404
|
+
const start = Math.max(0, column - 20);
|
|
405
|
+
const end = Math.min(lineContent.length, column + 20);
|
|
406
|
+
return lineContent.substring(start, end).trim();
|
|
407
|
+
}
|
|
408
|
+
generateSuggestion(type, context) {
|
|
409
|
+
const suggestions = {
|
|
410
|
+
'Elevated AI Agent Privileges': 'Implement least privilege principle. Use role-based access control (RBAC) and temporary elevated access only when necessary.',
|
|
411
|
+
'Unlimited AI Agent Permissions': 'Define specific, limited permissions for AI agents. Use principle of least privilege and granular access controls.',
|
|
412
|
+
'Disabled AI Agent Authentication': 'Enable authentication for all AI agents. Use secure authentication mechanisms and never disable auth in production.',
|
|
413
|
+
'Missing AI Agent RBAC': 'Implement role-based access control for AI agents. Define specific roles and permissions based on agent capabilities.',
|
|
414
|
+
'Persistent Elevated AI Access': 'Use temporary elevated access with time limits. Implement just-in-time access and automatic privilege revocation.',
|
|
415
|
+
'AI Agent Auth Bypass': 'Remove any authentication bypass mechanisms. Implement proper authentication and authorization for all AI agent interactions.',
|
|
416
|
+
'AI Agent System Access': 'Restrict AI agent access to system resources. Use sandboxing and isolation techniques to limit system access.',
|
|
417
|
+
'Insecure MCP Server Access': 'Secure MCP server access with authentication and authorization. Use network isolation and access controls.',
|
|
418
|
+
'MCP Server Without Auth': 'Implement authentication for MCP servers. Use secure authentication mechanisms and access controls.',
|
|
419
|
+
'AI Agent File System Access': 'Limit AI agent file system access to specific directories. Use read-only access where possible and implement access controls.',
|
|
420
|
+
'AI Agent Network Access': 'Restrict AI agent network access to specific endpoints. Use network segmentation and access controls.'
|
|
421
|
+
};
|
|
422
|
+
let suggestion = suggestions[type] || 'Implement proper access controls for AI agents. Use least privilege principle and secure authentication.';
|
|
423
|
+
if (context.framework) {
|
|
424
|
+
suggestion += ` For ${context.framework}, consider using framework-specific security features and access control patterns.`;
|
|
425
|
+
if (context.framework === 'openai') {
|
|
426
|
+
suggestion += ' Use OpenAI API key restrictions and content filtering.';
|
|
427
|
+
}
|
|
428
|
+
else if (context.framework === 'anthropic') {
|
|
429
|
+
suggestion += ' Use Anthropic safety features and content filtering.';
|
|
430
|
+
}
|
|
431
|
+
else if (context.framework === 'langchain') {
|
|
432
|
+
suggestion += ' Use LangChain security features and agent isolation.';
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
return suggestion;
|
|
62
436
|
}
|
|
63
437
|
}
|
|
64
438
|
exports.AiAgentAccessControlRule = AiAgentAccessControlRule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-agent-access-control.js","sourceRoot":"","sources":["../../src/rules/ai-agent-access-control.ts"],"names":[],"mappings":";;;AAAA,oCAAgE;AAEhE,MAAa,wBAAyB,SAAQ,gBAAQ;IAAtD;;QACW,SAAI,GAAG,yBAAyB,CAAC;QACjC,gBAAW,GAAG,oEAAoE,CAAC;QACnF,aAAQ,GAAG,UAAmB,CAAC;QAEvB,0BAAqB,GAAG;YACvC,oCAAoC;YACpC,EAAE,OAAO,EAAE,qFAAqF,EAAE,IAAI,EAAE,8BAA8B,EAAE;YACxI,EAAE,OAAO,EAAE,iFAAiF,EAAE,IAAI,EAAE,gCAAgC,EAAE;YAEtI,6BAA6B;YAC7B,EAAE,OAAO,EAAE,gIAAgI,EAAE,IAAI,EAAE,uBAAuB,EAAE;YAE5K,2CAA2C;YAC3C,EAAE,OAAO,EAAE,4GAA4G,EAAE,IAAI,EAAE,+BAA+B,EAAE;YAEhK,oCAAoC;YACpC,EAAE,OAAO,EAAE,iGAAiG,EAAE,IAAI,EAAE,sBAAsB,EAAE;YAE5I,oCAAoC;YACpC,EAAE,OAAO,EAAE,wEAAwE,EAAE,IAAI,EAAE,wBAAwB,EAAE;YAErH,6BAA6B;YAC7B,EAAE,OAAO,EAAE,yEAAyE,EAAE,IAAI,EAAE,4BAA4B,EAAE;YAC1H,EAAE,OAAO,EAAE,wFAAwF,EAAE,IAAI,EAAE,yBAAyB,EAAE;SACvI,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;SACb,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,qBAAqB,EAAE,CAAC;YAC3D,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,aAAa,IAAI,WAAW,EAC5B,yKAAyK,EACzK,UAAU,CACX,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;AA5ED,4DA4EC"}
|
|
1
|
+
{"version":3,"file":"ai-agent-access-control.js","sourceRoot":"","sources":["../../src/rules/ai-agent-access-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,34 @@
|
|
|
1
1
|
import { BaseRule, FileContent, SecurityIssue } from '../types';
|
|
2
2
|
export declare class AiDataLeakagePreventionRule extends BaseRule {
|
|
3
3
|
readonly name = "ai-data-leakage-prevention";
|
|
4
|
-
readonly description = "Detects potential data leakage in AI systems and training data exposure";
|
|
4
|
+
readonly description = "Detects potential data leakage in AI systems and training data exposure with context-aware analysis";
|
|
5
5
|
readonly severity: "high";
|
|
6
6
|
private readonly leakagePatterns;
|
|
7
7
|
private readonly falsePositivePatterns;
|
|
8
8
|
check(fileContent: FileContent): SecurityIssue[];
|
|
9
|
-
private
|
|
9
|
+
private analyzeContext;
|
|
10
|
+
private isSafeContext;
|
|
11
|
+
private detectLanguage;
|
|
12
|
+
private detectFramework;
|
|
13
|
+
private isInComment;
|
|
14
|
+
private isInString;
|
|
15
|
+
private isInTestFile;
|
|
16
|
+
private isInDocumentation;
|
|
17
|
+
private isInDevelopment;
|
|
18
|
+
private hasDataProtection;
|
|
19
|
+
private isProtectedEnvironment;
|
|
20
|
+
private calculateConfidence;
|
|
21
|
+
private validateTrainingDataExposure;
|
|
22
|
+
private validateSensitiveTrainingData;
|
|
23
|
+
private validateSensitiveOutput;
|
|
24
|
+
private validateUnfilteredOutput;
|
|
25
|
+
private validateClassificationBypass;
|
|
26
|
+
private validateSensitiveModel;
|
|
27
|
+
private validateUnencryptedArtifacts;
|
|
28
|
+
private validateSensitiveLogging;
|
|
29
|
+
private validateUnfilteredExport;
|
|
30
|
+
private validateUnsanitizedResponse;
|
|
31
|
+
private getLineContext;
|
|
32
|
+
private generateSuggestion;
|
|
10
33
|
}
|
|
11
34
|
//# sourceMappingURL=ai-data-leakage-prevention.d.ts.map
|
|
@@ -1 +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;
|
|
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,yGAAyG;IAC7H,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CA0F9B;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAoDpC;IAEF,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE;IA4ChD,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,kBAAkB;CAgC3B"}
|