codeslick-cli 1.4.0 → 1.4.1
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/dist/packages/cli/src/commands/scan.d.ts.map +1 -1
- package/dist/packages/cli/src/commands/scan.js +7 -3
- package/dist/packages/cli/src/commands/scan.js.map +1 -1
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts +11 -0
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts.map +1 -1
- package/dist/packages/cli/src/reporters/cli-reporter.js +150 -45
- package/dist/packages/cli/src/reporters/cli-reporter.js.map +1 -1
- package/dist/packages/cli/src/scanner/local-scanner.d.ts +2 -2
- package/dist/packages/cli/src/scanner/local-scanner.d.ts.map +1 -1
- package/dist/packages/cli/src/scanner/local-scanner.js +40 -9
- package/dist/packages/cli/src/scanner/local-scanner.js.map +1 -1
- package/dist/src/lib/analyzers/go-analyzer.d.ts +12 -0
- package/dist/src/lib/analyzers/go-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/go-analyzer.js +113 -0
- package/dist/src/lib/analyzers/go-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/iac/pii-detector.d.ts +27 -0
- package/dist/src/lib/analyzers/iac/pii-detector.d.ts.map +1 -0
- package/dist/src/lib/analyzers/iac/pii-detector.js +199 -0
- package/dist/src/lib/analyzers/iac/pii-detector.js.map +1 -0
- package/dist/src/lib/analyzers/iac/pii-patterns.d.ts +43 -0
- package/dist/src/lib/analyzers/iac/pii-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/iac/pii-patterns.js +228 -0
- package/dist/src/lib/analyzers/iac/pii-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/java-analyzer.d.ts +5 -0
- package/dist/src/lib/analyzers/java-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/java-analyzer.js +51 -0
- package/dist/src/lib/analyzers/java-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts +8 -4
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts.map +1 -1
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js +109 -13
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js.map +1 -1
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts.map +1 -1
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js +7 -8
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js.map +1 -1
- package/dist/src/lib/analyzers/javascript-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/javascript-analyzer.js +16 -12
- package/dist/src/lib/analyzers/javascript-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/kubernetes/checks/network-security.d.ts +33 -0
- package/dist/src/lib/analyzers/kubernetes/checks/network-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/network-security.js +184 -0
- package/dist/src/lib/analyzers/kubernetes/checks/network-security.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/pod-security.d.ts +60 -0
- package/dist/src/lib/analyzers/kubernetes/checks/pod-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/pod-security.js +418 -0
- package/dist/src/lib/analyzers/kubernetes/checks/pod-security.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.d.ts +44 -0
- package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.js +275 -0
- package/dist/src/lib/analyzers/kubernetes/checks/rbac-security.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/resource-management.d.ts +32 -0
- package/dist/src/lib/analyzers/kubernetes/checks/resource-management.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/resource-management.js +176 -0
- package/dist/src/lib/analyzers/kubernetes/checks/resource-management.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.d.ts +38 -0
- package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.js +266 -0
- package/dist/src/lib/analyzers/kubernetes/checks/secrets-management.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/service-security.d.ts +26 -0
- package/dist/src/lib/analyzers/kubernetes/checks/service-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/checks/service-security.js +120 -0
- package/dist/src/lib/analyzers/kubernetes/checks/service-security.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/parser.d.ts +74 -0
- package/dist/src/lib/analyzers/kubernetes/parser.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/parser.js +233 -0
- package/dist/src/lib/analyzers/kubernetes/parser.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/pii-detector.d.ts +34 -0
- package/dist/src/lib/analyzers/kubernetes/pii-detector.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/pii-detector.js +182 -0
- package/dist/src/lib/analyzers/kubernetes/pii-detector.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/types.d.ts +266 -0
- package/dist/src/lib/analyzers/kubernetes/types.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes/types.js +77 -0
- package/dist/src/lib/analyzers/kubernetes/types.js.map +1 -0
- package/dist/src/lib/analyzers/kubernetes-analyzer.d.ts +93 -0
- package/dist/src/lib/analyzers/kubernetes-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/kubernetes-analyzer.js +215 -0
- package/dist/src/lib/analyzers/kubernetes-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/python-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/python-analyzer.js +32 -48
- package/dist/src/lib/analyzers/python-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts +1 -1
- package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts +2 -32
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/secrets/types.d.ts +40 -0
- package/dist/src/lib/analyzers/secrets/types.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/types.js +10 -0
- package/dist/src/lib/analyzers/secrets/types.js.map +1 -0
- package/dist/src/lib/analyzers/terraform-analyzer.d.ts +1 -0
- package/dist/src/lib/analyzers/terraform-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/terraform-analyzer.js +28 -0
- package/dist/src/lib/analyzers/terraform-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts +5 -0
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/typescript-analyzer.js +76 -0
- package/dist/src/lib/analyzers/typescript-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/utils/false-positive-filter.d.ts +27 -0
- package/dist/src/lib/analyzers/utils/false-positive-filter.d.ts.map +1 -0
- package/dist/src/lib/analyzers/utils/false-positive-filter.js +176 -0
- package/dist/src/lib/analyzers/utils/false-positive-filter.js.map +1 -0
- package/dist/src/lib/security/epss-service.d.ts.map +1 -1
- package/dist/src/lib/security/epss-service.js +27 -8
- package/dist/src/lib/security/epss-service.js.map +1 -1
- package/dist/src/lib/security/severity-scoring.d.ts.map +1 -1
- package/dist/src/lib/security/severity-scoring.js +24 -0
- package/dist/src/lib/security/severity-scoring.js.map +1 -1
- package/dist/src/lib/types/index.d.ts +3 -3
- package/dist/src/lib/types/index.d.ts.map +1 -1
- package/dist/src/lib/utils/ignore-patterns.d.ts +60 -0
- package/dist/src/lib/utils/ignore-patterns.d.ts.map +1 -0
- package/dist/src/lib/utils/ignore-patterns.js +212 -0
- package/dist/src/lib/utils/ignore-patterns.js.map +1 -0
- package/package.json +1 -1
- package/src/commands/scan.ts +7 -3
- package/src/reporters/cli-reporter.ts +174 -48
- package/src/scanner/local-scanner.ts +54 -10
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - No API calls required (fully offline)
|
|
10
10
|
* - Fast scanning (<3s for 10 files)
|
|
11
11
|
* - Same analysis engine as GitHub App and WebTool
|
|
12
|
-
* - Supports JavaScript, TypeScript, Python, Java, Go, Terraform
|
|
12
|
+
* - Supports JavaScript, TypeScript, Python, Java, Go, Terraform, Kubernetes
|
|
13
13
|
*
|
|
14
14
|
* @module packages/cli/src/scanner/local-scanner
|
|
15
15
|
*/
|
|
@@ -55,6 +55,7 @@ exports.scanFiles = scanFiles;
|
|
|
55
55
|
exports.exceedsThreshold = exceedsThreshold;
|
|
56
56
|
const promises_1 = require("fs/promises");
|
|
57
57
|
const path_1 = require("path");
|
|
58
|
+
const ignore_patterns_1 = require("../../../../src/lib/utils/ignore-patterns");
|
|
58
59
|
/**
|
|
59
60
|
* Detect programming language from file extension
|
|
60
61
|
*/
|
|
@@ -78,6 +79,9 @@ function detectLanguage(filePath) {
|
|
|
78
79
|
if (ext.endsWith('.tf') || ext.endsWith('.tfvars')) {
|
|
79
80
|
return 'terraform';
|
|
80
81
|
}
|
|
82
|
+
if (ext.endsWith('.yaml') || ext.endsWith('.yml')) {
|
|
83
|
+
return 'kubernetes';
|
|
84
|
+
}
|
|
81
85
|
return null;
|
|
82
86
|
}
|
|
83
87
|
/**
|
|
@@ -137,9 +141,25 @@ async function scanFile(filePath, config = {}) {
|
|
|
137
141
|
if (!language) {
|
|
138
142
|
return null; // Unsupported file type
|
|
139
143
|
}
|
|
140
|
-
// Check
|
|
144
|
+
// Check .codeslickignore patterns (from file at project root)
|
|
145
|
+
if ((0, ignore_patterns_1.shouldIgnoreFile)(filePath)) {
|
|
146
|
+
return null; // File excluded by .codeslickignore
|
|
147
|
+
}
|
|
148
|
+
// Check if file is analyzer implementation (contains detection patterns, not vulnerabilities)
|
|
149
|
+
if ((0, ignore_patterns_1.isAnalyzerImplementation)(filePath)) {
|
|
150
|
+
return null; // Analyzer implementation file excluded
|
|
151
|
+
}
|
|
152
|
+
// Check if file is educational/example content (may have intentional vulnerabilities)
|
|
153
|
+
if ((0, ignore_patterns_1.isEducationalContent)(filePath)) {
|
|
154
|
+
return null; // Educational content excluded
|
|
155
|
+
}
|
|
156
|
+
// Check if file is a test file (may have intentional vulnerabilities)
|
|
157
|
+
if ((0, ignore_patterns_1.isTestFile)(filePath)) {
|
|
158
|
+
return null; // Test file excluded
|
|
159
|
+
}
|
|
160
|
+
// Check command-line exclusions (backward compatibility)
|
|
141
161
|
if (config.exclude && shouldExclude(filePath, config.exclude)) {
|
|
142
|
-
return null; // File excluded by pattern
|
|
162
|
+
return null; // File excluded by CLI pattern
|
|
143
163
|
}
|
|
144
164
|
// Read file content
|
|
145
165
|
const code = await (0, promises_1.readFile)(filePath, 'utf-8');
|
|
@@ -184,6 +204,12 @@ async function scanFile(filePath, config = {}) {
|
|
|
184
204
|
result = await analyzer.analyze({ code, filename: filePath, options: analyzerOptions });
|
|
185
205
|
break;
|
|
186
206
|
}
|
|
207
|
+
case 'kubernetes': {
|
|
208
|
+
const { KubernetesAnalyzer } = await Promise.resolve().then(() => __importStar(require('../../../../src/lib/analyzers/kubernetes-analyzer')));
|
|
209
|
+
const analyzer = new KubernetesAnalyzer();
|
|
210
|
+
result = await analyzer.analyze({ code, filename: filePath, options: analyzerOptions });
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
187
213
|
default:
|
|
188
214
|
return null;
|
|
189
215
|
}
|
|
@@ -220,11 +246,16 @@ async function scanFiles(filePaths, config = {}) {
|
|
|
220
246
|
const otherFiles = [];
|
|
221
247
|
for (const filePath of filePaths) {
|
|
222
248
|
const language = detectLanguage(filePath);
|
|
249
|
+
// Check all exclusion rules before categorizing
|
|
250
|
+
if ((0, ignore_patterns_1.shouldIgnoreFile)(filePath) ||
|
|
251
|
+
(0, ignore_patterns_1.isAnalyzerImplementation)(filePath) ||
|
|
252
|
+
(0, ignore_patterns_1.isEducationalContent)(filePath) ||
|
|
253
|
+
(0, ignore_patterns_1.isTestFile)(filePath) ||
|
|
254
|
+
(config.exclude && shouldExclude(filePath, config.exclude))) {
|
|
255
|
+
continue; // Skip this file
|
|
256
|
+
}
|
|
223
257
|
if (language === 'typescript') {
|
|
224
|
-
|
|
225
|
-
if (!config.exclude || !shouldExclude(filePath, config.exclude)) {
|
|
226
|
-
tsFiles.push(filePath);
|
|
227
|
-
}
|
|
258
|
+
tsFiles.push(filePath);
|
|
228
259
|
}
|
|
229
260
|
else if (language) {
|
|
230
261
|
otherFiles.push(filePath);
|
|
@@ -255,8 +286,8 @@ async function scanFiles(filePaths, config = {}) {
|
|
|
255
286
|
async function scanTypeScriptBatch(filePaths, _config = {}) {
|
|
256
287
|
const { readFile } = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
257
288
|
const { relative } = await Promise.resolve().then(() => __importStar(require('path')));
|
|
258
|
-
// Import batch diagnostics function
|
|
259
|
-
const { getBatchTypeScriptDiagnostics, convertDiagnosticsToIssues } = await Promise.resolve().then(() => __importStar(require('
|
|
289
|
+
// Import batch diagnostics function from @codeslick/ast-utils package
|
|
290
|
+
const { getBatchTypeScriptDiagnostics, convertDiagnosticsToIssues } = await Promise.resolve().then(() => __importStar(require('@codeslick/ast-utils')));
|
|
260
291
|
// Get batch diagnostics for all TypeScript files at once
|
|
261
292
|
const batchResult = getBatchTypeScriptDiagnostics(filePaths);
|
|
262
293
|
// Import TypeScript analyzer for security checks (runs separately)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-scanner.js","sourceRoot":"","sources":["../../../../../src/scanner/local-scanner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-scanner.js","sourceRoot":"","sources":["../../../../../src/scanner/local-scanner.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CH,wCAgCC;AAMD,sCAwBC;AAKD,oDASC;AAeD,4BAqHC;AAaD,8BA8CC;AAmFD,4CAqBC;AA7ZD,0CAAuC;AACvC,+BAAgC;AAEhC,+EAKmD;AA+BnD;;GAEG;AACH,SAAgB,cAAc,CAAC,QAAgB;IAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEnC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,QAAgB,EAAE,eAAyB;IACvE,MAAM,YAAY,GAAG,IAAA,eAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACvD,mEAAmE;IACnE,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAExD,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,kDAAkD;QAClD,8DAA8D;QAC9D,MAAM,YAAY,GAAG,OAAO;aACzB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAW,cAAc;aAC9C,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAE,0BAA0B;aAC9D,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAS,8BAA8B;aAC9D,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,kCAAkC;aACnE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAa,wBAAwB;aACxD,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB;QAExF,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC;QAEnD,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,MAAsB;IACzD,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,EAAE,eAAe,IAAI,EAAE,CAAC;IAE/D,OAAO;QACL,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC,MAAM;QAC5F,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,MAAM;QACpF,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC,MAAM;QACxF,GAAG,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,MAAM;KACnF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,SAAwB,EAAE;IAE1B,IAAI,CAAC;QACH,kBAAkB;QAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,CAAC,wBAAwB;QACvC,CAAC;QAED,8DAA8D;QAC9D,IAAI,IAAA,kCAAgB,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,CAAC,oCAAoC;QACnD,CAAC;QAED,8FAA8F;QAC9F,IAAI,IAAA,0CAAwB,EAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,CAAC,wCAAwC;QACvD,CAAC;QAED,sFAAsF;QACtF,IAAI,IAAA,sCAAoB,EAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,CAAC,+BAA+B;QAC9C,CAAC;QAED,sEAAsE;QACtE,IAAI,IAAA,4BAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,CAAC,qBAAqB;QACpC,CAAC;QAED,yDAAyD;QACzD,IAAI,MAAM,CAAC,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,CAAC,+BAA+B;QAC9C,CAAC;QAED,oBAAoB;QACpB,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE/C,gDAAgD;QAChD,wDAAwD;QACxD,MAAM,eAAe,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;QACjE,IAAI,MAAsB,CAAC;QAE3B,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAC7B,mDAAmD,GACpD,CAAC;gBACF,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBAC1C,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBACxF,MAAM;YACR,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAC7B,mDAAmD,GACpD,CAAC;gBACF,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBAC1C,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBACxF,MAAM;YACR,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,+CAA+C,GAAC,CAAC;gBACzF,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;gBACtC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBACxF,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,6CAA6C,GAAC,CAAC;gBACrF,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;gBACpC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBACxF,MAAM;YACR,CAAC;YAED,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,2CAA2C,GAAC,CAAC;gBACjF,MAAM,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;gBAClC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBACxF,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,EAAE,iBAAiB,EAAE,GAAG,wDAAa,kDAAkD,GAAC,CAAC;gBAC/F,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBACzC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBACxF,MAAM;YACR,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,mDAAmD,GAAC,CAAC;gBACjG,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBAC1C,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBACxF,MAAM;YACR,CAAC;YAED;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,oCAAoC;QACpC,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAE5C,OAAO;YACL,QAAQ;YACR,YAAY,EAAE,IAAA,eAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;YAC/C,QAAQ;YACR,MAAM;YACN,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,8CAA8C;QAC9C,OAAO,CAAC,KAAK,CAAC,kBAAkB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,SAAS,CAC7B,SAAmB,EACnB,SAAwB,EAAE;IAE1B,6DAA6D;IAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE1C,gDAAgD;QAChD,IAAI,IAAA,kCAAgB,EAAC,QAAQ,CAAC;YAC1B,IAAA,0CAAwB,EAAC,QAAQ,CAAC;YAClC,IAAA,sCAAoB,EAAC,QAAQ,CAAC;YAC9B,IAAA,4BAAU,EAAC,QAAQ,CAAC;YACpB,CAAC,MAAM,CAAC,OAAO,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAChE,SAAS,CAAC,iBAAiB;QAC7B,CAAC;QAED,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,8CAA8C;IAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAClD,0DAA0D;QAC1D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,qDAAqD;IACrD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAChC,SAAmB,EACnB,UAAyB,EAAE;IAE3B,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;IACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,MAAM,GAAC,CAAC;IAE1C,sEAAsE;IACtE,MAAM,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,GAAG,wDACpE,sBAAsB,GACvB,CAAC;IAEF,yDAAyD;IACzD,MAAM,WAAW,GAAG,6BAA6B,CAAC,SAAS,CAAC,CAAC;IAE7D,mEAAmE;IACnE,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAC7B,mDAAmD,GACpD,CAAC;IAEF,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE/C,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;YAC1C,0EAA0E;YAC1E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAElG,2CAA2C;YAC3C,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,UAAU,GAAG,0BAA0B,CAAC,eAAe,CAAC,CAAC;gBAC/D,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;oBAC1D,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;iBACf,CAAC,CAAC,CAAC;gBACJ,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAC;YAC/D,CAAC;YAED,wBAAwB;YACxB,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAE5C,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ;gBACR,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;gBAC/C,QAAQ,EAAE,YAAY;gBACtB,MAAM;gBACN,GAAG,MAAM;aACV,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kBAAkB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAC9B,OAAyB,EACzB,SAAiD;IAEjD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAE5D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,aAAa,GAAG,CAAC,CAAC;QAC3B,KAAK,MAAM;YACT,OAAO,aAAa,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;QAC5C,KAAK,QAAQ;YACX,OAAO,aAAa,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC;QAC/D,KAAK,KAAK;YACR,OAAO,aAAa,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;QAC/E;YACE,OAAO,aAAa,GAAG,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -44,6 +44,18 @@ export declare class GoAnalyzer implements ICodeAnalyzer {
|
|
|
44
44
|
private analyzePerformance;
|
|
45
45
|
private analyzeSecurity;
|
|
46
46
|
private calculateMetrics;
|
|
47
|
+
/**
|
|
48
|
+
* Phase 1.5 Week 7: AI Hallucination Detection (TIER 1)
|
|
49
|
+
*
|
|
50
|
+
* Detects individual method/property hallucinations from other languages (JS, Python, Java)
|
|
51
|
+
* These are SYNTAX ERRORS that should be highlighted individually in the editor.
|
|
52
|
+
*
|
|
53
|
+
* TIER 1 (syntax errors) → Individual `lineErrors` for Monaco editor highlighting
|
|
54
|
+
* TIER 2 (code smells) → Aggregated `checkAIGeneratedCode()` with OWASP mapping
|
|
55
|
+
*
|
|
56
|
+
* @see docs/features/AI_HALLUCINATION_DETECTION.md
|
|
57
|
+
*/
|
|
58
|
+
private detectAIHallucinations;
|
|
47
59
|
/**
|
|
48
60
|
* Detect if code is likely production code based on file path
|
|
49
61
|
* Feature 1 Phase 1: Environment context for smart triage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go-analyzer.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/analyzers/go-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAoC,MAAM,SAAS,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"go-analyzer.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/analyzers/go-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAoC,MAAM,SAAS,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAiB7C,qBAAa,UAAW,YAAW,aAAa;IAC9C,SAAgB,QAAQ,EAAE,iBAAiB,CAAQ;IAE7C,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAmDtD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBpD,eAAe;;;;;IAQf,OAAO,CAAC,aAAa;IA+DrB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,gBAAgB;IA4BxB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,sBAAsB;IAkH9B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;CA8BhC"}
|
|
@@ -45,6 +45,7 @@ const ai_generated_code_1 = require("./go/security-checks/ai-generated-code");
|
|
|
45
45
|
const enhanced_supply_chain_1 = require("./go/security-checks/enhanced-supply-chain");
|
|
46
46
|
const code_quality_1 = require("./go/quality-checks/code-quality");
|
|
47
47
|
const triage_service_1 = require("../security/triage-service");
|
|
48
|
+
const ignore_patterns_1 = require("../utils/ignore-patterns");
|
|
48
49
|
class GoAnalyzer {
|
|
49
50
|
constructor() {
|
|
50
51
|
this.language = 'go';
|
|
@@ -66,6 +67,8 @@ class GoAnalyzer {
|
|
|
66
67
|
// Phase 1.5: Secrets Detection
|
|
67
68
|
const secretsAnalyzer = (0, secrets_analyzer_1.createSecretsAnalyzer)();
|
|
68
69
|
result.security.vulnerabilities.push(...secretsAnalyzer.analyzeCode(input.code, input.filename || 'unknown.go', 'go'));
|
|
70
|
+
// Filter suppressed vulnerabilities (inline comments: // codeslick-ignore-next-line)
|
|
71
|
+
result.security.vulnerabilities = (0, ignore_patterns_1.filterSuppressedVulnerabilities)(input.code, result.security.vulnerabilities);
|
|
69
72
|
// Feature 1 Phase 1: Smart Triage with EPSS scoring
|
|
70
73
|
// Enhance vulnerabilities with priority scores and exploit predictions
|
|
71
74
|
try {
|
|
@@ -162,6 +165,8 @@ class GoAnalyzer {
|
|
|
162
165
|
});
|
|
163
166
|
}
|
|
164
167
|
});
|
|
168
|
+
// Phase 1.5 Week 7: AI Hallucination Detection (TIER 1 - Individual line highlights)
|
|
169
|
+
this.detectAIHallucinations(code, lineErrors);
|
|
165
170
|
result.syntax.lineErrors = lineErrors;
|
|
166
171
|
result.syntax.valid = lineErrors.length === 0;
|
|
167
172
|
if (!result.syntax.valid) {
|
|
@@ -249,6 +254,114 @@ class GoAnalyzer {
|
|
|
249
254
|
functions: functionCount
|
|
250
255
|
};
|
|
251
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* Phase 1.5 Week 7: AI Hallucination Detection (TIER 1)
|
|
259
|
+
*
|
|
260
|
+
* Detects individual method/property hallucinations from other languages (JS, Python, Java)
|
|
261
|
+
* These are SYNTAX ERRORS that should be highlighted individually in the editor.
|
|
262
|
+
*
|
|
263
|
+
* TIER 1 (syntax errors) → Individual `lineErrors` for Monaco editor highlighting
|
|
264
|
+
* TIER 2 (code smells) → Aggregated `checkAIGeneratedCode()` with OWASP mapping
|
|
265
|
+
*
|
|
266
|
+
* @see docs/features/AI_HALLUCINATION_DETECTION.md
|
|
267
|
+
*/
|
|
268
|
+
detectAIHallucinations(code, lineErrors) {
|
|
269
|
+
const hallucinationMap = new Map([
|
|
270
|
+
// JavaScript influence (method hallucinations)
|
|
271
|
+
['toUpperCase', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.ToUpper()' }],
|
|
272
|
+
['toLowerCase', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.ToLower()' }],
|
|
273
|
+
['indexOf', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.Index()' }],
|
|
274
|
+
['charAt', { description: 'Non-existent method (JavaScript influence)', correct: 'string[index]' }],
|
|
275
|
+
['substring', { description: 'Non-existent method (JavaScript influence)', correct: 'string[start:end]' }],
|
|
276
|
+
['push', { description: 'Non-existent method (JavaScript influence)', correct: 'append(slice, value)' }],
|
|
277
|
+
['pop', { description: 'Non-existent method (JavaScript influence)', correct: 'slice[:len(slice)-1]' }],
|
|
278
|
+
['shift', { description: 'Non-existent method (JavaScript influence)', correct: 'slice[1:]' }],
|
|
279
|
+
['unshift', { description: 'Non-existent method (JavaScript influence)', correct: 'append([]T{value}, slice...)' }],
|
|
280
|
+
['splice', { description: 'Non-existent method (JavaScript influence)', correct: 'append(slice[:i], slice[j:]...)' }],
|
|
281
|
+
['slice', { description: 'Non-existent method (JavaScript influence)', correct: 'slice[start:end]' }],
|
|
282
|
+
['trim', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.TrimSpace()' }],
|
|
283
|
+
['split', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.Split()' }],
|
|
284
|
+
['join', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.Join()' }],
|
|
285
|
+
['replace', { description: 'Non-existent method (JavaScript influence)', correct: 'strings.Replace()' }],
|
|
286
|
+
['match', { description: 'Non-existent method (JavaScript influence)', correct: 'regexp.MatchString()' }],
|
|
287
|
+
// Python influence (method hallucinations)
|
|
288
|
+
['upper', { description: 'Non-existent method (Python influence)', correct: 'strings.ToUpper()' }],
|
|
289
|
+
['lower', { description: 'Non-existent method (Python influence)', correct: 'strings.ToLower()' }],
|
|
290
|
+
['append', { description: 'Non-existent method (Python influence)', correct: 'append() function' }],
|
|
291
|
+
['extend', { description: 'Non-existent method (Python influence)', correct: 'append(slice, otherSlice...)' }],
|
|
292
|
+
['insert', { description: 'Non-existent method (Python influence)', correct: 'Use append() with slicing' }],
|
|
293
|
+
['remove', { description: 'Non-existent method (Python influence)', correct: 'Use slicing or copy()' }],
|
|
294
|
+
['clear', { description: 'Non-existent method (Python influence)', correct: 'slice = slice[:0]' }],
|
|
295
|
+
['index', { description: 'Non-existent method (Python influence)', correct: 'Use loop or strings.Index()' }],
|
|
296
|
+
['count', { description: 'Non-existent method (Python influence)', correct: 'strings.Count()' }],
|
|
297
|
+
['sort', { description: 'Non-existent method (Python influence)', correct: 'sort.Strings() or sort.Slice()' }],
|
|
298
|
+
['reverse', { description: 'Non-existent method (Python influence)', correct: 'Manual loop or custom function' }],
|
|
299
|
+
['copy', { description: 'Non-existent method (Python influence)', correct: 'copy() function' }],
|
|
300
|
+
// Non-existent methods (common hallucinations)
|
|
301
|
+
['contains', { description: 'Non-existent method', correct: 'strings.Contains() for strings' }],
|
|
302
|
+
['isEmpty', { description: 'Non-existent method', correct: 'len(x) == 0' }],
|
|
303
|
+
['length', { description: 'Non-existent method', correct: 'len() function' }],
|
|
304
|
+
['get', { description: 'Non-existent method', correct: 'map[key] or slice[index]' }],
|
|
305
|
+
['set', { description: 'Non-existent method', correct: 'map[key] = value' }],
|
|
306
|
+
['has', { description: 'Non-existent method', correct: '_, ok := map[key]' }],
|
|
307
|
+
['delete', { description: 'Non-existent method', correct: 'delete() function for maps' }],
|
|
308
|
+
['keys', { description: 'Non-existent method', correct: 'Loop over map keys' }],
|
|
309
|
+
['values', { description: 'Non-existent method', correct: 'Loop over map values' }],
|
|
310
|
+
['entries', { description: 'Non-existent method', correct: 'Loop over map key-value pairs' }],
|
|
311
|
+
// Framework-specific (Gin/Echo HTTP methods - case sensitivity)
|
|
312
|
+
['Get', { description: 'Case error (should be uppercase)', correct: '.GET() for Gin/Echo routes' }],
|
|
313
|
+
['Post', { description: 'Case error (should be uppercase)', correct: '.POST() for Gin/Echo routes' }],
|
|
314
|
+
['Put', { description: 'Case error (should be uppercase)', correct: '.PUT() for Gin/Echo routes' }],
|
|
315
|
+
['Delete', { description: 'Case error (should be uppercase)', correct: '.DELETE() for Gin/Echo routes' }],
|
|
316
|
+
]);
|
|
317
|
+
const lines = code.split('\n');
|
|
318
|
+
lines.forEach((line, index) => {
|
|
319
|
+
const lineNumber = index + 1;
|
|
320
|
+
const trimmed = line.trim();
|
|
321
|
+
// Skip empty lines, comments, and package/import statements
|
|
322
|
+
if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('/*') ||
|
|
323
|
+
trimmed.startsWith('package ') || trimmed.startsWith('import ')) {
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
// Remove inline comments for accurate detection
|
|
327
|
+
const lineWithoutComments = trimmed.split('//')[0];
|
|
328
|
+
// Detect method hallucinations: .method(
|
|
329
|
+
const methodMatches = lineWithoutComments.matchAll(/\.(\w+)\s*\(/g);
|
|
330
|
+
for (const match of methodMatches) {
|
|
331
|
+
const method = match[1];
|
|
332
|
+
const pattern = hallucinationMap.get(method);
|
|
333
|
+
if (pattern) {
|
|
334
|
+
// Check if this error already exists for this line (avoid duplicates)
|
|
335
|
+
const existingError = lineErrors.find(e => e.line === lineNumber && e.error.includes(`.${method}(`));
|
|
336
|
+
if (!existingError) {
|
|
337
|
+
lineErrors.push({
|
|
338
|
+
line: lineNumber,
|
|
339
|
+
error: `AI Hallucination: .${method}() - ${pattern.description}`,
|
|
340
|
+
suggestion: `Correct usage: ${pattern.correct}`,
|
|
341
|
+
severity: 'error'
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
// Detect property hallucinations: .property (no parentheses)
|
|
347
|
+
// Only check for specific properties that are commonly hallucinated
|
|
348
|
+
const propertyHallucinations = ['length', 'size'];
|
|
349
|
+
for (const prop of propertyHallucinations) {
|
|
350
|
+
const propertyRegex = new RegExp(`\\.${prop}(?!\\s*\\()`, 'g');
|
|
351
|
+
if (propertyRegex.test(lineWithoutComments)) {
|
|
352
|
+
const existingError = lineErrors.find(e => e.line === lineNumber && e.error.includes(`.${prop}`));
|
|
353
|
+
if (!existingError) {
|
|
354
|
+
lineErrors.push({
|
|
355
|
+
line: lineNumber,
|
|
356
|
+
error: `AI Hallucination: .${prop} - Property access (should use len() function)`,
|
|
357
|
+
suggestion: 'Correct usage: len(collection)',
|
|
358
|
+
severity: 'error'
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
}
|
|
252
365
|
/**
|
|
253
366
|
* Detect if code is likely production code based on file path
|
|
254
367
|
* Feature 1 Phase 1: Environment context for smart triage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"go-analyzer.js","sourceRoot":"","sources":["../../../../../../src/lib/analyzers/go-analyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"go-analyzer.js","sourceRoot":"","sources":["../../../../../../src/lib/analyzers/go-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PII Detection for Infrastructure as Code (IaC)
|
|
3
|
+
*
|
|
4
|
+
* Scans Terraform (and future Kubernetes/CloudFormation) files for hardcoded
|
|
5
|
+
* Personally Identifiable Information (PII) that violates GDPR/HIPAA compliance.
|
|
6
|
+
*
|
|
7
|
+
* Strategic Value: Closes competitive gap with Precogs.ai, applies to all IaC languages.
|
|
8
|
+
*/
|
|
9
|
+
import { SecurityVulnerability } from '../types';
|
|
10
|
+
import type { TerraformResource, TerraformBlock } from '../terraform/types';
|
|
11
|
+
/**
|
|
12
|
+
* Check Terraform resources for PII in attributes
|
|
13
|
+
*/
|
|
14
|
+
export declare function checkResourcePII(resource: TerraformResource): SecurityVulnerability[];
|
|
15
|
+
/**
|
|
16
|
+
* Check Terraform variables for PII in default values
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkVariablePII(variable: TerraformBlock): SecurityVulnerability[];
|
|
19
|
+
/**
|
|
20
|
+
* Check Terraform locals for PII in values
|
|
21
|
+
*/
|
|
22
|
+
export declare function checkLocalsPII(locals: TerraformBlock): SecurityVulnerability[];
|
|
23
|
+
/**
|
|
24
|
+
* Check Terraform outputs for PII exposure
|
|
25
|
+
*/
|
|
26
|
+
export declare function checkOutputPII(output: TerraformBlock): SecurityVulnerability[];
|
|
27
|
+
//# sourceMappingURL=pii-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii-detector.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/analyzers/iac/pii-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAgF5E;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,qBAAqB,EAAE,CAgDrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,qBAAqB,EAAE,CAuBlF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,qBAAqB,EAAE,CAyB9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,qBAAqB,EAAE,CAuB9E"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PII Detection for Infrastructure as Code (IaC)
|
|
4
|
+
*
|
|
5
|
+
* Scans Terraform (and future Kubernetes/CloudFormation) files for hardcoded
|
|
6
|
+
* Personally Identifiable Information (PII) that violates GDPR/HIPAA compliance.
|
|
7
|
+
*
|
|
8
|
+
* Strategic Value: Closes competitive gap with Precogs.ai, applies to all IaC languages.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.checkResourcePII = checkResourcePII;
|
|
12
|
+
exports.checkVariablePII = checkVariablePII;
|
|
13
|
+
exports.checkLocalsPII = checkLocalsPII;
|
|
14
|
+
exports.checkOutputPII = checkOutputPII;
|
|
15
|
+
const pii_patterns_1 = require("./pii-patterns");
|
|
16
|
+
/**
|
|
17
|
+
* Scan text content for PII patterns
|
|
18
|
+
* @param text - Text to scan (attribute value, tag, variable default, etc.)
|
|
19
|
+
* @param context - Context info (resource name, attribute path, line number)
|
|
20
|
+
* @returns Array of vulnerabilities found
|
|
21
|
+
*/
|
|
22
|
+
function scanTextForPII(text, context) {
|
|
23
|
+
const vulnerabilities = [];
|
|
24
|
+
// Check each PII pattern
|
|
25
|
+
for (const [type, pattern] of Object.entries(pii_patterns_1.PII_PATTERNS)) {
|
|
26
|
+
const matches = text.matchAll(pattern.regex);
|
|
27
|
+
for (const match of matches) {
|
|
28
|
+
const matchedText = match[0];
|
|
29
|
+
// Check if match should be excluded
|
|
30
|
+
if ((0, pii_patterns_1.shouldExcludeMatch)(matchedText, pattern)) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// Validate if pattern has custom validation function
|
|
34
|
+
if (pattern.validate && !pattern.validate(matchedText)) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
vulnerabilities.push((0, pii_patterns_1.createPIIVulnerability)(type, pattern, matchedText, context));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return vulnerabilities;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Recursively scan nested objects for PII
|
|
44
|
+
*/
|
|
45
|
+
function scanNestedObject(obj, context) {
|
|
46
|
+
const vulnerabilities = [];
|
|
47
|
+
if (typeof obj === 'string') {
|
|
48
|
+
vulnerabilities.push(...scanTextForPII(obj, context));
|
|
49
|
+
}
|
|
50
|
+
else if (Array.isArray(obj)) {
|
|
51
|
+
obj.forEach((item, index) => {
|
|
52
|
+
vulnerabilities.push(...scanNestedObject(item, {
|
|
53
|
+
...context,
|
|
54
|
+
attributePath: `${context.attributePath}[${index}]`,
|
|
55
|
+
}));
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
else if (obj && typeof obj === 'object') {
|
|
59
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
60
|
+
vulnerabilities.push(...scanNestedObject(value, {
|
|
61
|
+
...context,
|
|
62
|
+
attributePath: `${context.attributePath}.${key}`,
|
|
63
|
+
}));
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return vulnerabilities;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check Terraform resources for PII in attributes
|
|
70
|
+
*/
|
|
71
|
+
function checkResourcePII(resource) {
|
|
72
|
+
const vulnerabilities = [];
|
|
73
|
+
// Scan ALL attributes recursively (not just predefined list)
|
|
74
|
+
// This catches PII in any attribute location
|
|
75
|
+
for (const [key, value] of Object.entries(resource.attributes)) {
|
|
76
|
+
if (typeof value === 'string') {
|
|
77
|
+
const found = scanTextForPII(value, {
|
|
78
|
+
resourceName: resource.resourceName,
|
|
79
|
+
attributePath: key,
|
|
80
|
+
line: resource.startLine,
|
|
81
|
+
});
|
|
82
|
+
vulnerabilities.push(...found);
|
|
83
|
+
}
|
|
84
|
+
else if (value && typeof value === 'object') {
|
|
85
|
+
// Scan nested objects (tags, environment vars, metadata)
|
|
86
|
+
const found = scanNestedObject(value, {
|
|
87
|
+
resourceName: resource.resourceName,
|
|
88
|
+
attributePath: key,
|
|
89
|
+
line: resource.startLine,
|
|
90
|
+
});
|
|
91
|
+
vulnerabilities.push(...found);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Also scan nested blocks
|
|
95
|
+
if (resource.blocks) {
|
|
96
|
+
for (const block of resource.blocks) {
|
|
97
|
+
for (const [key, value] of Object.entries(block.attributes)) {
|
|
98
|
+
if (typeof value === 'string') {
|
|
99
|
+
const found = scanTextForPII(value, {
|
|
100
|
+
resourceName: resource.resourceName,
|
|
101
|
+
attributePath: `${block.type}.${key}`,
|
|
102
|
+
line: block.startLine,
|
|
103
|
+
});
|
|
104
|
+
vulnerabilities.push(...found);
|
|
105
|
+
}
|
|
106
|
+
else if (value && typeof value === 'object') {
|
|
107
|
+
const found = scanNestedObject(value, {
|
|
108
|
+
resourceName: resource.resourceName,
|
|
109
|
+
attributePath: `${block.type}.${key}`,
|
|
110
|
+
line: block.startLine,
|
|
111
|
+
});
|
|
112
|
+
vulnerabilities.push(...found);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return vulnerabilities;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Check Terraform variables for PII in default values
|
|
121
|
+
*/
|
|
122
|
+
function checkVariablePII(variable) {
|
|
123
|
+
if (variable.type !== 'variable')
|
|
124
|
+
return [];
|
|
125
|
+
const defaultValue = variable.attributes.default;
|
|
126
|
+
if (!defaultValue)
|
|
127
|
+
return [];
|
|
128
|
+
const variableName = variable.labels[0] || 'unknown';
|
|
129
|
+
if (typeof defaultValue === 'string') {
|
|
130
|
+
return scanTextForPII(defaultValue, {
|
|
131
|
+
resourceName: 'variable',
|
|
132
|
+
attributePath: `${variableName}.default`,
|
|
133
|
+
line: variable.startLine,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
else if (typeof defaultValue === 'object') {
|
|
137
|
+
return scanNestedObject(defaultValue, {
|
|
138
|
+
resourceName: 'variable',
|
|
139
|
+
attributePath: `${variableName}.default`,
|
|
140
|
+
line: variable.startLine,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
return [];
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Check Terraform locals for PII in values
|
|
147
|
+
*/
|
|
148
|
+
function checkLocalsPII(locals) {
|
|
149
|
+
if (locals.type !== 'locals')
|
|
150
|
+
return [];
|
|
151
|
+
const vulnerabilities = [];
|
|
152
|
+
// Scan all local variable definitions
|
|
153
|
+
for (const [key, value] of Object.entries(locals.attributes)) {
|
|
154
|
+
if (typeof value === 'string') {
|
|
155
|
+
const found = scanTextForPII(value, {
|
|
156
|
+
resourceName: 'locals',
|
|
157
|
+
attributePath: key,
|
|
158
|
+
line: locals.startLine,
|
|
159
|
+
});
|
|
160
|
+
vulnerabilities.push(...found);
|
|
161
|
+
}
|
|
162
|
+
else if (typeof value === 'object') {
|
|
163
|
+
const found = scanNestedObject(value, {
|
|
164
|
+
resourceName: 'locals',
|
|
165
|
+
attributePath: key,
|
|
166
|
+
line: locals.startLine,
|
|
167
|
+
});
|
|
168
|
+
vulnerabilities.push(...found);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return vulnerabilities;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Check Terraform outputs for PII exposure
|
|
175
|
+
*/
|
|
176
|
+
function checkOutputPII(output) {
|
|
177
|
+
if (output.type !== 'output')
|
|
178
|
+
return [];
|
|
179
|
+
const value = output.attributes.value;
|
|
180
|
+
if (!value)
|
|
181
|
+
return [];
|
|
182
|
+
const outputName = output.labels[0] || 'unknown';
|
|
183
|
+
if (typeof value === 'string') {
|
|
184
|
+
return scanTextForPII(value, {
|
|
185
|
+
resourceName: 'output',
|
|
186
|
+
attributePath: `${outputName}.value`,
|
|
187
|
+
line: output.startLine,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
else if (typeof value === 'object') {
|
|
191
|
+
return scanNestedObject(value, {
|
|
192
|
+
resourceName: 'output',
|
|
193
|
+
attributePath: `${outputName}.value`,
|
|
194
|
+
line: output.startLine,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
return [];
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=pii-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii-detector.js","sourceRoot":"","sources":["../../../../../../../src/lib/analyzers/iac/pii-detector.ts"],"names":[],"mappings":"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"}
|