mcp-wordpress 2.2.0 → 2.3.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.
Files changed (36) hide show
  1. package/dist/security/AISecurityScanner.d.ts +175 -0
  2. package/dist/security/AISecurityScanner.d.ts.map +1 -0
  3. package/dist/security/AISecurityScanner.js +645 -0
  4. package/dist/security/AISecurityScanner.js.map +1 -0
  5. package/dist/security/AutomatedRemediation.d.ts +145 -0
  6. package/dist/security/AutomatedRemediation.d.ts.map +1 -0
  7. package/dist/security/AutomatedRemediation.js +535 -0
  8. package/dist/security/AutomatedRemediation.js.map +1 -0
  9. package/dist/security/SecurityCIPipeline.d.ts +213 -0
  10. package/dist/security/SecurityCIPipeline.d.ts.map +1 -0
  11. package/dist/security/SecurityCIPipeline.js +684 -0
  12. package/dist/security/SecurityCIPipeline.js.map +1 -0
  13. package/dist/security/SecurityConfigManager.d.ts +294 -0
  14. package/dist/security/SecurityConfigManager.d.ts.map +1 -0
  15. package/dist/security/SecurityConfigManager.js +553 -0
  16. package/dist/security/SecurityConfigManager.js.map +1 -0
  17. package/dist/security/SecurityMonitoring.d.ts +245 -0
  18. package/dist/security/SecurityMonitoring.d.ts.map +1 -0
  19. package/dist/security/SecurityMonitoring.js +596 -0
  20. package/dist/security/SecurityMonitoring.js.map +1 -0
  21. package/dist/security/SecurityReviewer.d.ts +168 -0
  22. package/dist/security/SecurityReviewer.d.ts.map +1 -0
  23. package/dist/security/SecurityReviewer.js +683 -0
  24. package/dist/security/SecurityReviewer.js.map +1 -0
  25. package/dist/security/index.d.ts +182 -0
  26. package/dist/security/index.d.ts.map +1 -0
  27. package/dist/security/index.js +189 -0
  28. package/dist/security/index.js.map +1 -0
  29. package/package.json +8 -3
  30. package/src/security/AISecurityScanner.ts +780 -0
  31. package/src/security/AutomatedRemediation.ts +665 -0
  32. package/src/security/SecurityCIPipeline.ts +969 -0
  33. package/src/security/SecurityConfigManager.ts +829 -0
  34. package/src/security/SecurityMonitoring.ts +841 -0
  35. package/src/security/SecurityReviewer.ts +855 -0
  36. package/src/security/index.ts +249 -0
@@ -0,0 +1,645 @@
1
+ /**
2
+ * AI-Powered Security Scanner
3
+ * Provides intelligent vulnerability detection and automated remediation
4
+ */
5
+ import * as fs from "fs/promises";
6
+ import * as path from "path";
7
+ import { SecurityUtils } from "./SecurityConfig";
8
+ import { SecurityValidationError } from "./InputValidator";
9
+ /**
10
+ * AI-powered security analysis patterns
11
+ */
12
+ const SECURITY_PATTERNS = {
13
+ // SQL Injection patterns
14
+ sqlInjection: [
15
+ /['"\-\-;]|\/\*|\*\//g,
16
+ /(union|select|insert|update|delete|drop|create|alter)\s+/gi,
17
+ /\b(or|and)\s+['"]?\d+['"]?\s*=\s*['"]?\d+['"]?/gi,
18
+ /\b(char|ascii|substring|length|concat)\s*\(/gi,
19
+ ],
20
+ // XSS patterns
21
+ xss: [
22
+ /<script[^>]*>.*?<\/script>/gis,
23
+ /javascript\s*:/gi,
24
+ /on\w+\s*=\s*['"][^'"]*['"]?/gi,
25
+ /eval\s*\(/gi,
26
+ /expression\s*\(/gi,
27
+ /<iframe[^>]*>/gi,
28
+ ],
29
+ // Path Traversal
30
+ pathTraversal: [/\.\.[\/\\]/g, /[\/\\]\.\.$/g, /%2e%2e/gi, /%252e%252e/gi, /\x2e\x2e/g],
31
+ // Command Injection
32
+ commandInjection: [/[;&|`$]/g, /\b(rm|cat|ls|ps|kill|sudo|su)\s/gi, /\$\([^)]*\)/g, /`[^`]*`/g],
33
+ // Credential Exposure
34
+ credentials: [
35
+ /password\s*[:=]\s*['"][^'"]{8,}/gi,
36
+ /api[_-]?key\s*[:=]\s*['"][^'"]{16,}/gi,
37
+ /token\s*[:=]\s*['"][^'"]{20,}/gi,
38
+ /secret\s*[:=]\s*['"][^'"]{16,}/gi,
39
+ /private[_-]?key/gi,
40
+ ],
41
+ // LDAP Injection
42
+ ldapInjection: [/[()&|!]/g, /\*[^*]*\*/g, /\\\d{2}/g],
43
+ // NoSQL Injection
44
+ nosqlInjection: [/\$where/gi, /\$ne/gi, /\$gt/gi, /\$regex/gi, /\$exists/gi],
45
+ // CSRF vulnerabilities
46
+ csrf: [/GET\s+.*(?:delete|remove|update|create)/gi, /action\s*=\s*['"][^'"]*(?:delete|admin|config)/gi],
47
+ // Information Disclosure
48
+ infoDisclosure: [/error\s*[:=]\s*true/gi, /debug\s*[:=]\s*true/gi, /trace\s*[:=]\s*true/gi, /stack\s*trace/gi],
49
+ };
50
+ /**
51
+ * AI Security Scanner with machine learning capabilities
52
+ */
53
+ export class AISecurityScanner {
54
+ vulnerabilities = [];
55
+ scanHistory = [];
56
+ remediationHistory = [];
57
+ /**
58
+ * Perform comprehensive security scan
59
+ */
60
+ async performScan(options = {}) {
61
+ const scanId = SecurityUtils.generateSecureToken(16);
62
+ const startTime = Date.now();
63
+ console.log(`[Security Scanner] Starting AI-powered security scan ${scanId}`);
64
+ try {
65
+ this.vulnerabilities = [];
66
+ // Perform different types of scans
67
+ await this.scanCodebase(options.targets);
68
+ if (options.includeRuntime) {
69
+ await this.scanRuntimeEnvironment();
70
+ }
71
+ if (options.includeFileSystem) {
72
+ await this.scanFileSystem();
73
+ }
74
+ await this.scanConfigurations();
75
+ await this.scanDependencies();
76
+ await this.performAIAnalysis();
77
+ const duration = Date.now() - startTime;
78
+ const result = this.generateScanResult(scanId, duration);
79
+ this.scanHistory.push(result);
80
+ console.log(`[Security Scanner] Scan completed: ${result.summary.total} vulnerabilities found`);
81
+ return result;
82
+ }
83
+ catch (error) {
84
+ console.error("[Security Scanner] Scan failed:", error);
85
+ throw new SecurityValidationError("Security scan failed", [{ message: String(error) }]);
86
+ }
87
+ }
88
+ /**
89
+ * Scan codebase for vulnerabilities
90
+ */
91
+ async scanCodebase(targets) {
92
+ const defaultTargets = ["src/", "tests/", "scripts/"];
93
+ const scanTargets = targets || defaultTargets;
94
+ for (const target of scanTargets) {
95
+ await this.scanDirectory(target);
96
+ }
97
+ }
98
+ /**
99
+ * Recursively scan directory for security issues
100
+ */
101
+ async scanDirectory(dirPath) {
102
+ try {
103
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
104
+ for (const entry of entries) {
105
+ const fullPath = path.join(dirPath, entry.name);
106
+ if (entry.isDirectory() && !entry.name.startsWith(".") && entry.name !== "node_modules") {
107
+ await this.scanDirectory(fullPath);
108
+ }
109
+ else if (entry.isFile() && this.shouldScanFile(entry.name)) {
110
+ await this.scanFile(fullPath);
111
+ }
112
+ }
113
+ }
114
+ catch (error) {
115
+ // Directory might not exist or be accessible
116
+ console.warn(`[Security Scanner] Cannot scan directory ${dirPath}:`, error);
117
+ }
118
+ }
119
+ /**
120
+ * Check if file should be scanned
121
+ */
122
+ shouldScanFile(filename) {
123
+ const scanExtensions = [".ts", ".js", ".json", ".yml", ".yaml", ".env", ".config"];
124
+ const ext = path.extname(filename).toLowerCase();
125
+ return scanExtensions.includes(ext) || filename.startsWith(".");
126
+ }
127
+ /**
128
+ * Scan individual file for vulnerabilities
129
+ */
130
+ async scanFile(filePath) {
131
+ try {
132
+ const content = await fs.readFile(filePath, "utf-8");
133
+ const lines = content.split("\n");
134
+ // Scan for different vulnerability types
135
+ this.scanForSQLInjection(filePath, content, lines);
136
+ this.scanForXSS(filePath, content, lines);
137
+ this.scanForPathTraversal(filePath, content, lines);
138
+ this.scanForCommandInjection(filePath, content, lines);
139
+ this.scanForCredentialExposure(filePath, content, lines);
140
+ this.scanForLDAPInjection(filePath, content, lines);
141
+ this.scanForNoSQLInjection(filePath, content, lines);
142
+ this.scanForCSRF(filePath, content, lines);
143
+ this.scanForInfoDisclosure(filePath, content, lines);
144
+ this.scanForInsecureConfiguration(filePath, content, lines);
145
+ }
146
+ catch (error) {
147
+ console.warn(`[Security Scanner] Cannot scan file ${filePath}:`, error);
148
+ }
149
+ }
150
+ /**
151
+ * Scan for SQL injection vulnerabilities
152
+ */
153
+ scanForSQLInjection(filePath, content, lines) {
154
+ SECURITY_PATTERNS.sqlInjection.forEach((pattern, index) => {
155
+ const matches = Array.from(content.matchAll(pattern));
156
+ matches.forEach((match) => {
157
+ const lineNumber = this.getLineNumber(content, match.index || 0);
158
+ this.addVulnerability({
159
+ id: `sql-${Date.now()}-${index}`,
160
+ severity: "high",
161
+ type: "SQL Injection",
162
+ description: `Potential SQL injection vulnerability detected: ${match[0]}`,
163
+ location: {
164
+ file: filePath,
165
+ line: lineNumber,
166
+ context: lines[lineNumber - 1]?.trim(),
167
+ },
168
+ remediation: {
169
+ suggested: "Use parameterized queries or prepared statements",
170
+ automated: true,
171
+ confidence: 0.8,
172
+ },
173
+ metadata: {
174
+ cweId: "CWE-89",
175
+ cvssScore: 8.1,
176
+ exploitability: "high",
177
+ detected: new Date(),
178
+ },
179
+ });
180
+ });
181
+ });
182
+ }
183
+ /**
184
+ * Scan for XSS vulnerabilities
185
+ */
186
+ scanForXSS(filePath, content, lines) {
187
+ SECURITY_PATTERNS.xss.forEach((pattern, index) => {
188
+ const matches = Array.from(content.matchAll(pattern));
189
+ matches.forEach((match) => {
190
+ const lineNumber = this.getLineNumber(content, match.index || 0);
191
+ this.addVulnerability({
192
+ id: `xss-${Date.now()}-${index}`,
193
+ severity: "high",
194
+ type: "Cross-Site Scripting (XSS)",
195
+ description: `Potential XSS vulnerability detected: ${match[0]}`,
196
+ location: {
197
+ file: filePath,
198
+ line: lineNumber,
199
+ context: lines[lineNumber - 1]?.trim(),
200
+ },
201
+ remediation: {
202
+ suggested: "Sanitize user input and encode output",
203
+ automated: true,
204
+ confidence: 0.7,
205
+ },
206
+ metadata: {
207
+ cweId: "CWE-79",
208
+ cvssScore: 7.5,
209
+ exploitability: "medium",
210
+ detected: new Date(),
211
+ },
212
+ });
213
+ });
214
+ });
215
+ }
216
+ /**
217
+ * Scan for path traversal vulnerabilities
218
+ */
219
+ scanForPathTraversal(filePath, content, lines) {
220
+ SECURITY_PATTERNS.pathTraversal.forEach((pattern, index) => {
221
+ const matches = Array.from(content.matchAll(pattern));
222
+ matches.forEach((match) => {
223
+ const lineNumber = this.getLineNumber(content, match.index || 0);
224
+ this.addVulnerability({
225
+ id: `path-${Date.now()}-${index}`,
226
+ severity: "medium",
227
+ type: "Path Traversal",
228
+ description: `Potential path traversal vulnerability detected: ${match[0]}`,
229
+ location: {
230
+ file: filePath,
231
+ line: lineNumber,
232
+ context: lines[lineNumber - 1]?.trim(),
233
+ },
234
+ remediation: {
235
+ suggested: "Validate and sanitize file paths",
236
+ automated: true,
237
+ confidence: 0.9,
238
+ },
239
+ metadata: {
240
+ cweId: "CWE-22",
241
+ cvssScore: 6.5,
242
+ exploitability: "medium",
243
+ detected: new Date(),
244
+ },
245
+ });
246
+ });
247
+ });
248
+ }
249
+ /**
250
+ * Scan for command injection vulnerabilities
251
+ */
252
+ scanForCommandInjection(filePath, content, lines) {
253
+ SECURITY_PATTERNS.commandInjection.forEach((pattern, index) => {
254
+ const matches = Array.from(content.matchAll(pattern));
255
+ matches.forEach((match) => {
256
+ const lineNumber = this.getLineNumber(content, match.index || 0);
257
+ this.addVulnerability({
258
+ id: `cmd-${Date.now()}-${index}`,
259
+ severity: "critical",
260
+ type: "Command Injection",
261
+ description: `Potential command injection vulnerability detected: ${match[0]}`,
262
+ location: {
263
+ file: filePath,
264
+ line: lineNumber,
265
+ context: lines[lineNumber - 1]?.trim(),
266
+ },
267
+ remediation: {
268
+ suggested: "Use safe APIs and validate input",
269
+ automated: false,
270
+ confidence: 0.6,
271
+ },
272
+ metadata: {
273
+ cweId: "CWE-78",
274
+ cvssScore: 9.0,
275
+ exploitability: "high",
276
+ detected: new Date(),
277
+ },
278
+ });
279
+ });
280
+ });
281
+ }
282
+ /**
283
+ * Scan for credential exposure
284
+ */
285
+ scanForCredentialExposure(filePath, content, lines) {
286
+ SECURITY_PATTERNS.credentials.forEach((pattern, index) => {
287
+ const matches = Array.from(content.matchAll(pattern));
288
+ matches.forEach((match) => {
289
+ const lineNumber = this.getLineNumber(content, match.index || 0);
290
+ this.addVulnerability({
291
+ id: `cred-${Date.now()}-${index}`,
292
+ severity: "critical",
293
+ type: "Credential Exposure",
294
+ description: `Potential hardcoded credential detected`,
295
+ location: {
296
+ file: filePath,
297
+ line: lineNumber,
298
+ context: "[REDACTED FOR SECURITY]",
299
+ },
300
+ remediation: {
301
+ suggested: "Move credentials to environment variables or secure vault",
302
+ automated: true,
303
+ confidence: 0.85,
304
+ },
305
+ metadata: {
306
+ cweId: "CWE-798",
307
+ cvssScore: 9.8,
308
+ exploitability: "high",
309
+ detected: new Date(),
310
+ },
311
+ });
312
+ });
313
+ });
314
+ }
315
+ /**
316
+ * Scan for LDAP injection vulnerabilities
317
+ */
318
+ scanForLDAPInjection(filePath, content, lines) {
319
+ SECURITY_PATTERNS.ldapInjection.forEach((pattern, index) => {
320
+ const matches = Array.from(content.matchAll(pattern));
321
+ matches.forEach((match) => {
322
+ const lineNumber = this.getLineNumber(content, match.index || 0);
323
+ this.addVulnerability({
324
+ id: `ldap-${Date.now()}-${index}`,
325
+ severity: "medium",
326
+ type: "LDAP Injection",
327
+ description: `Potential LDAP injection vulnerability detected: ${match[0]}`,
328
+ location: {
329
+ file: filePath,
330
+ line: lineNumber,
331
+ context: lines[lineNumber - 1]?.trim(),
332
+ },
333
+ remediation: {
334
+ suggested: "Escape LDAP special characters",
335
+ automated: true,
336
+ confidence: 0.7,
337
+ },
338
+ metadata: {
339
+ cweId: "CWE-90",
340
+ cvssScore: 6.8,
341
+ exploitability: "medium",
342
+ detected: new Date(),
343
+ },
344
+ });
345
+ });
346
+ });
347
+ }
348
+ /**
349
+ * Scan for NoSQL injection vulnerabilities
350
+ */
351
+ scanForNoSQLInjection(filePath, content, lines) {
352
+ SECURITY_PATTERNS.nosqlInjection.forEach((pattern, index) => {
353
+ const matches = Array.from(content.matchAll(pattern));
354
+ matches.forEach((match) => {
355
+ const lineNumber = this.getLineNumber(content, match.index || 0);
356
+ this.addVulnerability({
357
+ id: `nosql-${Date.now()}-${index}`,
358
+ severity: "high",
359
+ type: "NoSQL Injection",
360
+ description: `Potential NoSQL injection vulnerability detected: ${match[0]}`,
361
+ location: {
362
+ file: filePath,
363
+ line: lineNumber,
364
+ context: lines[lineNumber - 1]?.trim(),
365
+ },
366
+ remediation: {
367
+ suggested: "Validate and sanitize NoSQL queries",
368
+ automated: true,
369
+ confidence: 0.75,
370
+ },
371
+ metadata: {
372
+ cweId: "CWE-943",
373
+ cvssScore: 7.8,
374
+ exploitability: "medium",
375
+ detected: new Date(),
376
+ },
377
+ });
378
+ });
379
+ });
380
+ }
381
+ /**
382
+ * Scan for CSRF vulnerabilities
383
+ */
384
+ scanForCSRF(filePath, content, lines) {
385
+ SECURITY_PATTERNS.csrf.forEach((pattern, index) => {
386
+ const matches = Array.from(content.matchAll(pattern));
387
+ matches.forEach((match) => {
388
+ const lineNumber = this.getLineNumber(content, match.index || 0);
389
+ this.addVulnerability({
390
+ id: `csrf-${Date.now()}-${index}`,
391
+ severity: "medium",
392
+ type: "Cross-Site Request Forgery (CSRF)",
393
+ description: `Potential CSRF vulnerability detected: ${match[0]}`,
394
+ location: {
395
+ file: filePath,
396
+ line: lineNumber,
397
+ context: lines[lineNumber - 1]?.trim(),
398
+ },
399
+ remediation: {
400
+ suggested: "Implement CSRF tokens and verify HTTP methods",
401
+ automated: false,
402
+ confidence: 0.6,
403
+ },
404
+ metadata: {
405
+ cweId: "CWE-352",
406
+ cvssScore: 6.5,
407
+ exploitability: "medium",
408
+ detected: new Date(),
409
+ },
410
+ });
411
+ });
412
+ });
413
+ }
414
+ /**
415
+ * Scan for information disclosure vulnerabilities
416
+ */
417
+ scanForInfoDisclosure(filePath, content, lines) {
418
+ SECURITY_PATTERNS.infoDisclosure.forEach((pattern, index) => {
419
+ const matches = Array.from(content.matchAll(pattern));
420
+ matches.forEach((match) => {
421
+ const lineNumber = this.getLineNumber(content, match.index || 0);
422
+ this.addVulnerability({
423
+ id: `info-${Date.now()}-${index}`,
424
+ severity: "low",
425
+ type: "Information Disclosure",
426
+ description: `Potential information disclosure detected: ${match[0]}`,
427
+ location: {
428
+ file: filePath,
429
+ line: lineNumber,
430
+ context: lines[lineNumber - 1]?.trim(),
431
+ },
432
+ remediation: {
433
+ suggested: "Disable debug information in production",
434
+ automated: true,
435
+ confidence: 0.8,
436
+ },
437
+ metadata: {
438
+ cweId: "CWE-200",
439
+ cvssScore: 4.3,
440
+ exploitability: "low",
441
+ detected: new Date(),
442
+ },
443
+ });
444
+ });
445
+ });
446
+ }
447
+ /**
448
+ * Scan for insecure configuration
449
+ */
450
+ scanForInsecureConfiguration(filePath, content, lines) {
451
+ const insecurePatterns = [
452
+ { pattern: /ssl\s*[:=]\s*false/gi, desc: "SSL disabled" },
453
+ { pattern: /verify\s*[:=]\s*false/gi, desc: "Certificate verification disabled" },
454
+ { pattern: /secure\s*[:=]\s*false/gi, desc: "Insecure configuration" },
455
+ { pattern: /http:\/\//gi, desc: "HTTP instead of HTTPS" },
456
+ ];
457
+ insecurePatterns.forEach((item, index) => {
458
+ const matches = Array.from(content.matchAll(item.pattern));
459
+ matches.forEach((match) => {
460
+ const lineNumber = this.getLineNumber(content, match.index || 0);
461
+ this.addVulnerability({
462
+ id: `config-${Date.now()}-${index}`,
463
+ severity: "medium",
464
+ type: "Insecure Configuration",
465
+ description: `${item.desc}: ${match[0]}`,
466
+ location: {
467
+ file: filePath,
468
+ line: lineNumber,
469
+ context: lines[lineNumber - 1]?.trim(),
470
+ },
471
+ remediation: {
472
+ suggested: "Enable secure configuration options",
473
+ automated: true,
474
+ confidence: 0.9,
475
+ },
476
+ metadata: {
477
+ cweId: "CWE-16",
478
+ cvssScore: 5.0,
479
+ exploitability: "medium",
480
+ detected: new Date(),
481
+ },
482
+ });
483
+ });
484
+ });
485
+ }
486
+ /**
487
+ * Scan runtime environment for security issues
488
+ */
489
+ async scanRuntimeEnvironment() {
490
+ // Check environment variables for exposed secrets
491
+ for (const [key, value] of Object.entries(process.env)) {
492
+ if (this.containsSensitiveData(key, value || "")) {
493
+ this.addVulnerability({
494
+ id: `env-${Date.now()}-${key}`,
495
+ severity: "high",
496
+ type: "Environment Variable Exposure",
497
+ description: `Sensitive data in environment variable: ${key}`,
498
+ location: {
499
+ context: "Runtime Environment",
500
+ },
501
+ remediation: {
502
+ suggested: "Use secure secret management",
503
+ automated: false,
504
+ confidence: 0.9,
505
+ },
506
+ metadata: {
507
+ cweId: "CWE-200",
508
+ cvssScore: 7.5,
509
+ exploitability: "medium",
510
+ detected: new Date(),
511
+ },
512
+ });
513
+ }
514
+ }
515
+ }
516
+ /**
517
+ * Scan file system for security issues
518
+ */
519
+ async scanFileSystem() {
520
+ const sensitiveFiles = [
521
+ ".env",
522
+ ".env.local",
523
+ ".env.production",
524
+ "config.json",
525
+ "secrets.json",
526
+ "private.key",
527
+ "id_rsa",
528
+ ];
529
+ for (const fileName of sensitiveFiles) {
530
+ try {
531
+ await fs.access(fileName);
532
+ this.addVulnerability({
533
+ id: `fs-${Date.now()}-${fileName}`,
534
+ severity: "medium",
535
+ type: "Sensitive File Exposure",
536
+ description: `Sensitive file found: ${fileName}`,
537
+ location: {
538
+ file: fileName,
539
+ },
540
+ remediation: {
541
+ suggested: "Ensure file permissions are restrictive and file is in .gitignore",
542
+ automated: true,
543
+ confidence: 0.8,
544
+ },
545
+ metadata: {
546
+ cweId: "CWE-200",
547
+ cvssScore: 6.0,
548
+ exploitability: "low",
549
+ detected: new Date(),
550
+ },
551
+ });
552
+ }
553
+ catch {
554
+ // File doesn't exist, which is good
555
+ }
556
+ }
557
+ }
558
+ /**
559
+ * Scan configurations for security issues
560
+ */
561
+ async scanConfigurations() {
562
+ // This would scan various config files for insecure settings
563
+ console.log("[Security Scanner] Scanning configurations...");
564
+ }
565
+ /**
566
+ * Scan dependencies for known vulnerabilities
567
+ */
568
+ async scanDependencies() {
569
+ // This would integrate with npm audit or similar tools
570
+ console.log("[Security Scanner] Scanning dependencies...");
571
+ }
572
+ /**
573
+ * Perform AI-powered analysis for complex patterns
574
+ */
575
+ async performAIAnalysis() {
576
+ // Advanced AI analysis would go here
577
+ console.log("[Security Scanner] Performing AI analysis...");
578
+ }
579
+ /**
580
+ * Add vulnerability to the list
581
+ */
582
+ addVulnerability(vulnerability) {
583
+ this.vulnerabilities.push(vulnerability);
584
+ }
585
+ /**
586
+ * Get line number from string index
587
+ */
588
+ getLineNumber(content, index) {
589
+ return content.substring(0, index).split("\n").length;
590
+ }
591
+ /**
592
+ * Check if string contains sensitive data
593
+ */
594
+ containsSensitiveData(key, value) {
595
+ const sensitiveKeys = ["password", "secret", "key", "token", "auth"];
596
+ const keyLower = key.toLowerCase();
597
+ return (sensitiveKeys.some((sensitive) => keyLower.includes(sensitive)) &&
598
+ value.length > 8 &&
599
+ !/^(true|false|null|undefined|\d+)$/i.test(value));
600
+ }
601
+ /**
602
+ * Generate scan result summary
603
+ */
604
+ generateScanResult(scanId, duration) {
605
+ const summary = this.vulnerabilities.reduce((acc, vuln) => {
606
+ acc.total++;
607
+ acc[vuln.severity]++;
608
+ return acc;
609
+ }, { total: 0, critical: 0, high: 0, medium: 0, low: 0 });
610
+ const remediationAvailable = this.vulnerabilities.filter((v) => v.remediation.automated).length;
611
+ return {
612
+ scanId,
613
+ timestamp: new Date(),
614
+ duration,
615
+ vulnerabilities: [...this.vulnerabilities],
616
+ summary,
617
+ remediationAvailable,
618
+ compliance: {
619
+ owasp: summary.critical === 0 && summary.high < 3,
620
+ cwe: summary.total < 10,
621
+ gdpr: this.vulnerabilities.filter((v) => v.type.includes("Disclosure")).length === 0,
622
+ },
623
+ };
624
+ }
625
+ /**
626
+ * Get scan history
627
+ */
628
+ getScanHistory() {
629
+ return [...this.scanHistory];
630
+ }
631
+ /**
632
+ * Get latest scan result
633
+ */
634
+ getLatestScan() {
635
+ return this.scanHistory.length > 0 ? this.scanHistory[this.scanHistory.length - 1] : null;
636
+ }
637
+ /**
638
+ * Clear scan history
639
+ */
640
+ clearHistory() {
641
+ this.scanHistory = [];
642
+ this.remediationHistory = [];
643
+ }
644
+ }
645
+ //# sourceMappingURL=AISecurityScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AISecurityScanner.js","sourceRoot":"","sources":["../../src/security/AISecurityScanner.ts"],"names":[],"mappings":"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"}