avana-cli 2.11.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 (100) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/LICENSE +21 -0
  3. package/README.md +584 -0
  4. package/dist/cli.d.ts +7 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +153 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/install.d.ts +6 -0
  9. package/dist/commands/install.d.ts.map +1 -0
  10. package/dist/commands/install.js +101 -0
  11. package/dist/commands/install.js.map +1 -0
  12. package/dist/commands/scan.d.ts +19 -0
  13. package/dist/commands/scan.d.ts.map +1 -0
  14. package/dist/commands/scan.js +383 -0
  15. package/dist/commands/scan.js.map +1 -0
  16. package/dist/commands/uninstall.d.ts +6 -0
  17. package/dist/commands/uninstall.d.ts.map +1 -0
  18. package/dist/commands/uninstall.js +80 -0
  19. package/dist/commands/uninstall.js.map +1 -0
  20. package/dist/index.d.ts +97 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +475 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/rules/additional-patterns.d.ts +12 -0
  25. package/dist/rules/additional-patterns.d.ts.map +1 -0
  26. package/dist/rules/additional-patterns.js +170 -0
  27. package/dist/rules/additional-patterns.js.map +1 -0
  28. package/dist/rules/code-patterns.d.ts +26 -0
  29. package/dist/rules/code-patterns.d.ts.map +1 -0
  30. package/dist/rules/code-patterns.js +220 -0
  31. package/dist/rules/code-patterns.js.map +1 -0
  32. package/dist/rules/secret-patterns.d.ts +28 -0
  33. package/dist/rules/secret-patterns.d.ts.map +1 -0
  34. package/dist/rules/secret-patterns.js +1729 -0
  35. package/dist/rules/secret-patterns.js.map +1 -0
  36. package/dist/scanners/secret-scanner.d.ts +34 -0
  37. package/dist/scanners/secret-scanner.d.ts.map +1 -0
  38. package/dist/scanners/secret-scanner.js +281 -0
  39. package/dist/scanners/secret-scanner.js.map +1 -0
  40. package/dist/types/index.d.ts +116 -0
  41. package/dist/types/index.d.ts.map +1 -0
  42. package/dist/types/index.js +7 -0
  43. package/dist/types/index.js.map +1 -0
  44. package/dist/utils/error-handler.d.ts +126 -0
  45. package/dist/utils/error-handler.d.ts.map +1 -0
  46. package/dist/utils/error-handler.js +222 -0
  47. package/dist/utils/error-handler.js.map +1 -0
  48. package/dist/utils/exit-codes.d.ts +52 -0
  49. package/dist/utils/exit-codes.d.ts.map +1 -0
  50. package/dist/utils/exit-codes.js +89 -0
  51. package/dist/utils/exit-codes.js.map +1 -0
  52. package/dist/utils/file-stream-scanner.d.ts +31 -0
  53. package/dist/utils/file-stream-scanner.d.ts.map +1 -0
  54. package/dist/utils/file-stream-scanner.js +159 -0
  55. package/dist/utils/file-stream-scanner.js.map +1 -0
  56. package/dist/utils/file-type-detector.d.ts +45 -0
  57. package/dist/utils/file-type-detector.d.ts.map +1 -0
  58. package/dist/utils/file-type-detector.js +237 -0
  59. package/dist/utils/file-type-detector.js.map +1 -0
  60. package/dist/utils/ignore-pattern-manager.d.ts +61 -0
  61. package/dist/utils/ignore-pattern-manager.d.ts.map +1 -0
  62. package/dist/utils/ignore-pattern-manager.js +204 -0
  63. package/dist/utils/ignore-pattern-manager.js.map +1 -0
  64. package/dist/utils/json-output-formatter.d.ts +232 -0
  65. package/dist/utils/json-output-formatter.d.ts.map +1 -0
  66. package/dist/utils/json-output-formatter.js +367 -0
  67. package/dist/utils/json-output-formatter.js.map +1 -0
  68. package/dist/utils/logger.d.ts +181 -0
  69. package/dist/utils/logger.d.ts.map +1 -0
  70. package/dist/utils/logger.js +414 -0
  71. package/dist/utils/logger.js.map +1 -0
  72. package/dist/utils/markdown-output-formatter.d.ts +65 -0
  73. package/dist/utils/markdown-output-formatter.d.ts.map +1 -0
  74. package/dist/utils/markdown-output-formatter.js +316 -0
  75. package/dist/utils/markdown-output-formatter.js.map +1 -0
  76. package/dist/utils/memory-manager.d.ts +77 -0
  77. package/dist/utils/memory-manager.d.ts.map +1 -0
  78. package/dist/utils/memory-manager.js +157 -0
  79. package/dist/utils/memory-manager.js.map +1 -0
  80. package/dist/utils/parallel-scanner-worker.d.ts +19 -0
  81. package/dist/utils/parallel-scanner-worker.d.ts.map +1 -0
  82. package/dist/utils/parallel-scanner-worker.js +51 -0
  83. package/dist/utils/parallel-scanner-worker.js.map +1 -0
  84. package/dist/utils/parallel-scanner.d.ts +82 -0
  85. package/dist/utils/parallel-scanner.d.ts.map +1 -0
  86. package/dist/utils/parallel-scanner.js +229 -0
  87. package/dist/utils/parallel-scanner.js.map +1 -0
  88. package/dist/utils/pattern-validator.d.ts +108 -0
  89. package/dist/utils/pattern-validator.d.ts.map +1 -0
  90. package/dist/utils/pattern-validator.js +315 -0
  91. package/dist/utils/pattern-validator.js.map +1 -0
  92. package/dist/utils/progress-reporter.d.ts +68 -0
  93. package/dist/utils/progress-reporter.d.ts.map +1 -0
  94. package/dist/utils/progress-reporter.js +194 -0
  95. package/dist/utils/progress-reporter.js.map +1 -0
  96. package/dist/utils/result-cache.d.ts +99 -0
  97. package/dist/utils/result-cache.d.ts.map +1 -0
  98. package/dist/utils/result-cache.js +335 -0
  99. package/dist/utils/result-cache.js.map +1 -0
  100. package/package.json +80 -0
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /**
3
+ * Avana - Additional Secret Patterns
4
+ * Extended patterns for less common but still important services
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ADDITIONAL_SECRET_PATTERNS = void 0;
8
+ exports.getAdditionalSecretPatterns = getAdditionalSecretPatterns;
9
+ /**
10
+ * Additional secret patterns for specialized services
11
+ * NOTE: Only includes high-confidence patterns with specific prefixes or context
12
+ */
13
+ exports.ADDITIONAL_SECRET_PATTERNS = [
14
+ // ============================================
15
+ // Analytics & Monitoring
16
+ // ============================================
17
+ {
18
+ id: 'new-relic-key',
19
+ name: 'New Relic License Key',
20
+ pattern: /NRAK-[A-Z0-9]{27}/g,
21
+ severity: 'high',
22
+ description: 'New Relic license key detected',
23
+ suggestion: 'Move to environment variable: NEW_RELIC_LICENSE_KEY',
24
+ },
25
+ {
26
+ id: 'sentry-dsn',
27
+ name: 'Sentry DSN',
28
+ pattern: /https:\/\/[a-f0-9]{32}@[a-z0-9]+\.ingest\.sentry\.io\/[0-9]+/g,
29
+ severity: 'medium',
30
+ description: 'Sentry DSN detected',
31
+ suggestion: 'Move to environment variable: SENTRY_DSN',
32
+ },
33
+ // ============================================
34
+ // CI/CD & DevOps
35
+ // ============================================
36
+ {
37
+ id: 'docker-hub-token',
38
+ name: 'Docker Hub Token',
39
+ pattern: /dckr_pat_[a-zA-Z0-9_-]{36}/g,
40
+ severity: 'critical',
41
+ description: 'Docker Hub access token detected',
42
+ suggestion: 'Revoke token and use Docker secrets',
43
+ },
44
+ {
45
+ id: 'npm-token',
46
+ name: 'NPM Token',
47
+ pattern: /npm_[a-zA-Z0-9]{36}/g,
48
+ severity: 'critical',
49
+ description: 'NPM access token detected',
50
+ suggestion: 'Revoke token and use .npmrc with environment variable',
51
+ },
52
+ // ============================================
53
+ // Social Media & Marketing
54
+ // ============================================
55
+ {
56
+ id: 'facebook-access-token',
57
+ name: 'Facebook Access Token',
58
+ pattern: /EAACEdEose0cBA[0-9A-Za-z]+/g,
59
+ severity: 'high',
60
+ description: 'Facebook access token detected',
61
+ suggestion: 'Revoke token and move to environment variable',
62
+ },
63
+ {
64
+ id: 'twitter-bearer-token',
65
+ name: 'Twitter Bearer Token',
66
+ pattern: /AAAAAAAAAAAAAAAAAAAAAA[a-zA-Z0-9%]+/g,
67
+ severity: 'critical',
68
+ description: 'Twitter Bearer token detected',
69
+ suggestion: 'Revoke token and move to environment variable',
70
+ },
71
+ // ============================================
72
+ // Storage & CDN
73
+ // ============================================
74
+ {
75
+ id: 'digitalocean-token',
76
+ name: 'DigitalOcean Token',
77
+ pattern: /dop_v1_[a-f0-9]{64}/g,
78
+ severity: 'critical',
79
+ description: 'DigitalOcean access token detected',
80
+ suggestion: 'Revoke token and move to environment variable',
81
+ },
82
+ {
83
+ id: 'heroku-api-key',
84
+ name: 'Heroku API Key',
85
+ pattern: /[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/g,
86
+ severity: 'critical',
87
+ description: 'Heroku API key detected',
88
+ suggestion: 'Revoke key and use Heroku config vars',
89
+ },
90
+ // ============================================
91
+ // Search & Database Services
92
+ // ============================================
93
+ {
94
+ id: 'elasticsearch-password',
95
+ name: 'Elasticsearch Password',
96
+ pattern: /elastic:[^@]+@/gi,
97
+ severity: 'critical',
98
+ description: 'Elasticsearch credentials detected',
99
+ suggestion: 'Move to environment variable: ELASTICSEARCH_URL',
100
+ },
101
+ // ============================================
102
+ // Authentication Services
103
+ // ============================================
104
+ {
105
+ id: 'okta-api-token',
106
+ name: 'Okta API Token',
107
+ pattern: /00[a-zA-Z0-9_-]{40}/g,
108
+ severity: 'critical',
109
+ description: 'Okta API token detected',
110
+ suggestion: 'Revoke token and move to environment variable',
111
+ },
112
+ {
113
+ id: 'firebase-api-key',
114
+ name: 'Firebase API Key',
115
+ pattern: /AIza[0-9A-Za-z\-_]{35}/g,
116
+ severity: 'high',
117
+ description: 'Firebase API key detected',
118
+ suggestion: 'Move to environment variable and restrict API key',
119
+ },
120
+ // ============================================
121
+ // Cryptocurrency & Blockchain
122
+ // ============================================
123
+ {
124
+ id: 'ethereum-private-key',
125
+ name: 'Ethereum Private Key',
126
+ pattern: /0x[a-fA-F0-9]{64}/g,
127
+ severity: 'critical',
128
+ description: 'Ethereum private key detected',
129
+ suggestion: 'Remove immediately and use hardware wallet',
130
+ },
131
+ // ============================================
132
+ // Miscellaneous Services
133
+ // ============================================
134
+ {
135
+ id: 'shopify-token',
136
+ name: 'Shopify Access Token',
137
+ pattern: /shpat_[a-fA-F0-9]{32}/g,
138
+ severity: 'critical',
139
+ description: 'Shopify access token detected',
140
+ suggestion: 'Revoke token and move to environment variable',
141
+ },
142
+ {
143
+ id: 'shopify-shared-secret',
144
+ name: 'Shopify Shared Secret',
145
+ pattern: /shpss_[a-fA-F0-9]{32}/g,
146
+ severity: 'critical',
147
+ description: 'Shopify shared secret detected',
148
+ suggestion: 'Move to environment variable: SHOPIFY_SHARED_SECRET',
149
+ },
150
+ {
151
+ id: 'airtable-api-key',
152
+ name: 'Airtable API Key',
153
+ pattern: /key[a-zA-Z0-9]{14}/g,
154
+ severity: 'high',
155
+ description: 'Airtable API key detected',
156
+ suggestion: 'Move to environment variable: AIRTABLE_API_KEY',
157
+ },
158
+ {
159
+ id: 'notion-token',
160
+ name: 'Notion Integration Token',
161
+ pattern: /secret_[a-zA-Z0-9]{43}/g,
162
+ severity: 'high',
163
+ description: 'Notion integration token detected',
164
+ suggestion: 'Move to environment variable: NOTION_TOKEN',
165
+ },
166
+ ];
167
+ function getAdditionalSecretPatterns() {
168
+ return exports.ADDITIONAL_SECRET_PATTERNS;
169
+ }
170
+ //# sourceMappingURL=additional-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"additional-patterns.js","sourceRoot":"","sources":["../../src/rules/additional-patterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Avana - Insecure Code Patterns
3
+ * Patterns for detecting security vulnerabilities in code
4
+ */
5
+ import type { SecretPattern } from '../types';
6
+ /**
7
+ * Insecure code patterns that could lead to security vulnerabilities
8
+ */
9
+ export declare const CODE_PATTERNS: SecretPattern[];
10
+ /**
11
+ * Get all code patterns
12
+ */
13
+ export declare function getAllCodePatterns(): SecretPattern[];
14
+ /**
15
+ * Get code patterns by severity
16
+ */
17
+ export declare function getCodePatternsBySeverity(severity: 'critical' | 'high' | 'medium' | 'low'): SecretPattern[];
18
+ /**
19
+ * Get code pattern by ID
20
+ */
21
+ export declare function getCodePatternById(id: string): SecretPattern | undefined;
22
+ /**
23
+ * Get pattern count
24
+ */
25
+ export declare function getCodePatternCount(): number;
26
+ //# sourceMappingURL=code-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-patterns.d.ts","sourceRoot":"","sources":["../../src/rules/code-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,EA4LxC,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,EAAE,CAEpD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,aAAa,EAAE,CAE3G;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAExE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ /**
3
+ * Avana - Insecure Code Patterns
4
+ * Patterns for detecting security vulnerabilities in code
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CODE_PATTERNS = void 0;
8
+ exports.getAllCodePatterns = getAllCodePatterns;
9
+ exports.getCodePatternsBySeverity = getCodePatternsBySeverity;
10
+ exports.getCodePatternById = getCodePatternById;
11
+ exports.getCodePatternCount = getCodePatternCount;
12
+ /**
13
+ * Insecure code patterns that could lead to security vulnerabilities
14
+ */
15
+ exports.CODE_PATTERNS = [
16
+ // ============================================
17
+ // Code Execution Vulnerabilities
18
+ // ============================================
19
+ {
20
+ id: 'eval-usage',
21
+ name: 'Eval Usage',
22
+ pattern: /\beval\s*\(/g,
23
+ severity: 'high',
24
+ description: 'eval() can execute arbitrary code and is a security risk',
25
+ suggestion: 'Use safer alternatives like JSON.parse() or Function constructor with validation',
26
+ },
27
+ {
28
+ id: 'function-constructor',
29
+ name: 'Function Constructor with String',
30
+ pattern: /new\s+Function\s*\(\s*['"`][^'"`]*['"`]\s*\)/g,
31
+ severity: 'high',
32
+ description: 'Function constructor with string can execute arbitrary code',
33
+ suggestion: 'Avoid dynamic code execution or use safer alternatives',
34
+ },
35
+ // ============================================
36
+ // SQL Injection Vulnerabilities
37
+ // ============================================
38
+ {
39
+ id: 'sql-concatenation',
40
+ name: 'SQL String Concatenation',
41
+ pattern: /(SELECT|INSERT|UPDATE|DELETE|DROP|CREATE).*\+.*FROM|VALUES/gi,
42
+ severity: 'critical',
43
+ description: 'SQL string concatenation can lead to SQL injection',
44
+ suggestion: 'Use parameterized queries or prepared statements',
45
+ },
46
+ {
47
+ id: 'sql-template-literal',
48
+ name: 'SQL Template Literal',
49
+ pattern: /`(SELECT|INSERT|UPDATE|DELETE|DROP|CREATE).*\$\{.*\}.*`/gi,
50
+ severity: 'critical',
51
+ description: 'SQL template literals with variables can lead to SQL injection',
52
+ suggestion: 'Use parameterized queries instead of template literals',
53
+ },
54
+ // ============================================
55
+ // Command Injection Vulnerabilities
56
+ // ============================================
57
+ {
58
+ id: 'child-process-exec',
59
+ name: 'Child Process Exec with User Input',
60
+ pattern: /exec\s*\(\s*[^)]*\$\{|exec\s*\(\s*[^)]*\+/g,
61
+ severity: 'critical',
62
+ description: 'exec() with user input can lead to command injection',
63
+ suggestion: 'Use execFile() with array arguments or validate input strictly',
64
+ },
65
+ {
66
+ id: 'shell-true',
67
+ name: 'Shell True in Spawn',
68
+ pattern: /spawn\s*\([^)]*shell\s*:\s*true/gi,
69
+ severity: 'high',
70
+ description: 'Using shell:true in spawn can lead to command injection',
71
+ suggestion: 'Avoid shell:true or validate all inputs strictly',
72
+ },
73
+ // ============================================
74
+ // Cryptography Issues
75
+ // ============================================
76
+ {
77
+ id: 'weak-crypto-md5',
78
+ name: 'Weak Cryptography (MD5)',
79
+ pattern: /crypto\.createHash\s*\(\s*['"]md5['"]\s*\)/g,
80
+ severity: 'high',
81
+ description: 'MD5 is cryptographically broken and should not be used',
82
+ suggestion: 'Use SHA-256 or stronger: crypto.createHash("sha256")',
83
+ },
84
+ {
85
+ id: 'weak-crypto-sha1',
86
+ name: 'Weak Cryptography (SHA1)',
87
+ pattern: /crypto\.createHash\s*\(\s*['"]sha1['"]\s*\)/g,
88
+ severity: 'high',
89
+ description: 'SHA1 is deprecated and vulnerable to collision attacks',
90
+ suggestion: 'Use SHA-256 or stronger: crypto.createHash("sha256")',
91
+ },
92
+ {
93
+ id: 'insecure-random',
94
+ name: 'Insecure Random Number Generation',
95
+ pattern: /Math\.random\s*\(\s*\)/g,
96
+ severity: 'medium',
97
+ description: 'Math.random() is not cryptographically secure',
98
+ suggestion: 'Use crypto.randomBytes() for security-sensitive operations',
99
+ },
100
+ // ============================================
101
+ // Path Traversal Vulnerabilities
102
+ // ============================================
103
+ {
104
+ id: 'path-traversal',
105
+ name: 'Path Traversal',
106
+ pattern: /\.\.[\/\\]/g,
107
+ severity: 'high',
108
+ description: 'Path traversal pattern detected - could allow unauthorized file access',
109
+ suggestion: 'Validate and sanitize file paths, use path.resolve() and check if result is within allowed directory',
110
+ },
111
+ {
112
+ id: 'unsafe-file-read',
113
+ name: 'Unsafe File Read',
114
+ pattern: /fs\.(readFile|readFileSync)\s*\([^)]*\$\{|fs\.(readFile|readFileSync)\s*\([^)]*\+/g,
115
+ severity: 'high',
116
+ description: 'Reading files with user-controlled paths can lead to path traversal',
117
+ suggestion: 'Validate file paths and ensure they are within allowed directories',
118
+ },
119
+ // ============================================
120
+ // Deserialization Vulnerabilities
121
+ // ============================================
122
+ {
123
+ id: 'unsafe-yaml-load',
124
+ name: 'Unsafe YAML Load',
125
+ pattern: /yaml\.load\s*\(/g,
126
+ severity: 'critical',
127
+ description: 'yaml.load() can execute arbitrary code',
128
+ suggestion: 'Use yaml.safeLoad() instead',
129
+ },
130
+ {
131
+ id: 'unsafe-pickle',
132
+ name: 'Unsafe Pickle (Python)',
133
+ pattern: /pickle\.loads?\s*\(/g,
134
+ severity: 'critical',
135
+ description: 'pickle.load() can execute arbitrary code',
136
+ suggestion: 'Use JSON or validate pickle data source',
137
+ },
138
+ // ============================================
139
+ // XSS and Injection Vulnerabilities
140
+ // ============================================
141
+ {
142
+ id: 'innerhtml-assignment',
143
+ name: 'innerHTML Assignment',
144
+ pattern: /\.innerHTML\s*=\s*[^;]*\$\{|\.innerHTML\s*=\s*[^;]*\+/g,
145
+ severity: 'high',
146
+ description: 'Setting innerHTML with user input can lead to XSS',
147
+ suggestion: 'Use textContent or sanitize HTML with DOMPurify',
148
+ },
149
+ {
150
+ id: 'dangerously-set-html',
151
+ name: 'Dangerously Set HTML (React)',
152
+ pattern: /dangerouslySetInnerHTML/g,
153
+ severity: 'medium',
154
+ description: 'dangerouslySetInnerHTML can lead to XSS if not sanitized',
155
+ suggestion: 'Sanitize HTML content with DOMPurify before using',
156
+ },
157
+ // ============================================
158
+ // Configuration Issues
159
+ // ============================================
160
+ {
161
+ id: 'hardcoded-localhost',
162
+ name: 'Hardcoded Localhost URL',
163
+ pattern: /['"]https?:\/\/localhost:\d+/g,
164
+ severity: 'low',
165
+ description: 'Hardcoded localhost URLs may cause issues in production',
166
+ suggestion: 'Use environment variables for API endpoints',
167
+ },
168
+ {
169
+ id: 'cors-wildcard',
170
+ name: 'CORS Wildcard',
171
+ pattern: /Access-Control-Allow-Origin['"]?\s*:\s*['"]?\*/g,
172
+ severity: 'medium',
173
+ description: 'CORS wildcard (*) allows any origin to access resources',
174
+ suggestion: 'Specify allowed origins explicitly',
175
+ },
176
+ // ============================================
177
+ // Authentication/Authorization Issues
178
+ // ============================================
179
+ {
180
+ id: 'weak-jwt-secret',
181
+ name: 'Weak JWT Secret',
182
+ pattern: /jwt\.sign\s*\([^)]*['"]secret['"]/gi,
183
+ severity: 'critical',
184
+ description: 'Weak JWT secret detected',
185
+ suggestion: 'Use a strong, randomly generated secret from environment variables',
186
+ },
187
+ {
188
+ id: 'missing-auth-check',
189
+ name: 'Missing Authentication Check',
190
+ pattern: /app\.(get|post|put|delete|patch)\s*\([^)]*\)\s*,\s*(?!.*auth|.*authenticate|.*isAuthenticated)/gi,
191
+ severity: 'medium',
192
+ description: 'Route handler without authentication middleware',
193
+ suggestion: 'Add authentication middleware to protect routes',
194
+ },
195
+ ];
196
+ /**
197
+ * Get all code patterns
198
+ */
199
+ function getAllCodePatterns() {
200
+ return exports.CODE_PATTERNS;
201
+ }
202
+ /**
203
+ * Get code patterns by severity
204
+ */
205
+ function getCodePatternsBySeverity(severity) {
206
+ return exports.CODE_PATTERNS.filter(p => p.severity === severity);
207
+ }
208
+ /**
209
+ * Get code pattern by ID
210
+ */
211
+ function getCodePatternById(id) {
212
+ return exports.CODE_PATTERNS.find(p => p.id === id);
213
+ }
214
+ /**
215
+ * Get pattern count
216
+ */
217
+ function getCodePatternCount() {
218
+ return exports.CODE_PATTERNS.length;
219
+ }
220
+ //# sourceMappingURL=code-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-patterns.js","sourceRoot":"","sources":["../../src/rules/code-patterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Avana - Secret Patterns
3
+ * Comprehensive database of 100+ patterns for detecting secrets in code
4
+ */
5
+ import type { SecretPattern } from '../types';
6
+ /**
7
+ * Comprehensive list of secret patterns to detect
8
+ * Covers major cloud providers, payment processors, communication tools, Web3/blockchain networks,
9
+ * DeFi protocols, NFT platforms, blockchain analytics services, and more
10
+ */
11
+ export declare const SECRET_PATTERNS: SecretPattern[];
12
+ /**
13
+ * Get all secret patterns
14
+ */
15
+ export declare function getAllSecretPatterns(): SecretPattern[];
16
+ /**
17
+ * Get secret patterns by severity
18
+ */
19
+ export declare function getSecretPatternsBySeverity(severity: 'critical' | 'high' | 'medium' | 'low'): SecretPattern[];
20
+ /**
21
+ * Get secret pattern by ID
22
+ */
23
+ export declare function getSecretPatternById(id: string): SecretPattern | undefined;
24
+ /**
25
+ * Get pattern count
26
+ */
27
+ export declare function getPatternCount(): number;
28
+ //# sourceMappingURL=secret-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-patterns.d.ts","sourceRoot":"","sources":["../../src/rules/secret-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EAwrD1C,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,EAAE,CAEtD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,aAAa,EAAE,CAE7G;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE1E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC"}