@zerothreatai/vulnerability-registry 4.0.0 → 5.0.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 (58) hide show
  1. package/dist/categories/authentication.js +17 -17
  2. package/dist/categories/configuration.js +80 -80
  3. package/dist/categories/injection.js +34 -34
  4. package/dist/categories/sensitive-paths.js +84 -84
  5. package/dist/categories/ssrf.js +11 -11
  6. package/dist/categories/xss.js +15 -15
  7. package/dist-cjs/categories/authentication.js +17 -17
  8. package/dist-cjs/categories/configuration.js +80 -80
  9. package/dist-cjs/categories/injection.js +34 -34
  10. package/dist-cjs/categories/sensitive-paths.js +84 -84
  11. package/dist-cjs/categories/ssrf.js +11 -11
  12. package/dist-cjs/categories/xss.js +15 -15
  13. package/package.json +35 -32
  14. package/scripts/assign-ids.ts +105 -0
  15. package/scripts/check-duplicate-ids.ts +45 -0
  16. package/src/categories/authentication.ts +17 -17
  17. package/src/categories/configuration.ts +80 -80
  18. package/src/categories/injection.ts +34 -34
  19. package/src/categories/sensitive-paths.ts +84 -84
  20. package/src/categories/ssrf.ts +11 -11
  21. package/src/categories/xss.ts +15 -15
  22. package/src/id-registry.json +1235 -0
  23. package/src/categories/authentication.d.ts +0 -8
  24. package/src/categories/authentication.d.ts.map +0 -1
  25. package/src/categories/authentication.js +0 -392
  26. package/src/categories/authentication.js.map +0 -1
  27. package/src/categories/configuration.d.ts +0 -8
  28. package/src/categories/configuration.d.ts.map +0 -1
  29. package/src/categories/configuration.js +0 -1782
  30. package/src/categories/configuration.js.map +0 -1
  31. package/src/categories/injection.d.ts +0 -8
  32. package/src/categories/injection.d.ts.map +0 -1
  33. package/src/categories/injection.js +0 -781
  34. package/src/categories/injection.js.map +0 -1
  35. package/src/categories/sensitive-paths.d.ts +0 -9
  36. package/src/categories/sensitive-paths.d.ts.map +0 -1
  37. package/src/categories/sensitive-paths.js +0 -1872
  38. package/src/categories/sensitive-paths.js.map +0 -1
  39. package/src/categories/ssrf.d.ts +0 -8
  40. package/src/categories/ssrf.d.ts.map +0 -1
  41. package/src/categories/ssrf.js +0 -258
  42. package/src/categories/ssrf.js.map +0 -1
  43. package/src/categories/xss.d.ts +0 -7
  44. package/src/categories/xss.d.ts.map +0 -1
  45. package/src/categories/xss.js +0 -340
  46. package/src/categories/xss.js.map +0 -1
  47. package/src/error-codes.d.ts +0 -280
  48. package/src/error-codes.d.ts.map +0 -1
  49. package/src/error-codes.js +0 -350
  50. package/src/error-codes.js.map +0 -1
  51. package/src/index.d.ts +0 -60
  52. package/src/index.d.ts.map +0 -1
  53. package/src/index.js +0 -92
  54. package/src/index.js.map +0 -1
  55. package/src/types.d.ts +0 -88
  56. package/src/types.d.ts.map +0 -1
  57. package/src/types.js +0 -6
  58. package/src/types.js.map +0 -1
@@ -1,8 +0,0 @@
1
- /**
2
- * Vulnerability Registry - Authentication & Access Control
3
- *
4
- * Definitions for JWT, Broken Access Control, and related issues
5
- */
6
- import type { VulnerabilityDefinition } from '../types.js';
7
- export declare const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition>;
8
- export default AUTH_VULNERABILITIES;
@@ -1 +0,0 @@
1
- {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["authentication.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CA+XxE,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -1,392 +0,0 @@
1
- /**
2
- * Vulnerability Registry - Authentication & Access Control
3
- *
4
- * Definitions for JWT, Broken Access Control, and related issues
5
- */
6
- import { VulnerabilityCode } from '../error-codes.js';
7
- export const AUTH_VULNERABILITIES = {
8
- // ========================================
9
- // JWT VULNERABILITIES
10
- // ========================================
11
- [VulnerabilityCode.JWT_NONE_ALGORITHM]: {
12
- id: 57,
13
- code: VulnerabilityCode.JWT_NONE_ALGORITHM,
14
- title: 'JWT Vulnerability - None Algorithm Attack',
15
- description: 'Critical JWT vulnerability where the server accepts tokens with "alg": "none" in the header, allowing attackers to forge valid tokens without knowing the secret key by simply removing the signature and modifying claims to impersonate any user including administrators.',
16
- severity: 'critical',
17
- levelId: 1,
18
- category: 'authentication',
19
- scanner: 'jwt',
20
- cvss: {
21
- score: 9.1,
22
- vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N',
23
- severity: 'CRITICAL',
24
- },
25
- cwe: [
26
- { id: 'CWE-347', name: 'Improper Verification of Cryptographic Signature', url: 'https://cwe.mitre.org/data/definitions/347.html' },
27
- ],
28
- owasp: [
29
- { id: 'A02:2021', name: 'Cryptographic Failures', url: 'https://owasp.org/Top10/A02_2021-Cryptographic_Failures/' },
30
- ],
31
- remediation: 'Explicitly specify allowed algorithms during JWT verification and reject "none". Use libraries that do not support "none" algorithm. Always validate the algorithm header against expected values.',
32
- },
33
- [VulnerabilityCode.JWT_WEAK_SECRET]: {
34
- id: 58,
35
- code: VulnerabilityCode.JWT_WEAK_SECRET,
36
- title: 'JWT Vulnerability - Weak Secret Key',
37
- description: 'JWT implementation using a weak or common secret key for HMAC signature verification that can be brute-forced or found in common secret dictionaries, allowing attackers to forge arbitrary valid tokens and bypass authentication to access any user account.',
38
- severity: 'high',
39
- levelId: 2,
40
- category: 'authentication',
41
- scanner: 'jwt',
42
- cvss: {
43
- score: 8.6,
44
- vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N',
45
- severity: 'HIGH',
46
- },
47
- cwe: [
48
- { id: 'CWE-521', name: 'Weak Password Requirements', url: 'https://cwe.mitre.org/data/definitions/521.html' },
49
- ],
50
- owasp: [
51
- { id: 'A02:2021', name: 'Cryptographic Failures', url: 'https://owasp.org/Top10/A02_2021-Cryptographic_Failures/' },
52
- ],
53
- remediation: 'Use cryptographically strong random secrets of at least 256 bits. Consider using asymmetric algorithms (RS256, ES256) instead of HMAC. Rotate secrets periodically.',
54
- },
55
- [VulnerabilityCode.JWT_KEY_CONFUSION]: {
56
- id: 59,
57
- code: VulnerabilityCode.JWT_KEY_CONFUSION,
58
- title: 'JWT Vulnerability - Algorithm Confusion Attack',
59
- description: 'JWT key confusion vulnerability where the server public key can be used as an HMAC secret by switching the algorithm from RS256 to HS256, allowing attackers to forge valid tokens using the publicly available key to generate valid HMAC signatures.',
60
- severity: 'critical',
61
- levelId: 1,
62
- category: 'authentication',
63
- scanner: 'jwt',
64
- cvss: {
65
- score: 9.1,
66
- vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N',
67
- severity: 'CRITICAL',
68
- },
69
- cwe: [
70
- { id: 'CWE-347', name: 'Improper Verification of Cryptographic Signature', url: 'https://cwe.mitre.org/data/definitions/347.html' },
71
- ],
72
- owasp: [
73
- { id: 'A02:2021', name: 'Cryptographic Failures', url: 'https://owasp.org/Top10/A02_2021-Cryptographic_Failures/' },
74
- ],
75
- remediation: 'Explicitly set expected algorithm(s) during verification. Do not accept algorithm from token header. Use separate keys for symmetric and asymmetric algorithms.',
76
- },
77
- // ========================================
78
- // BROKEN ACCESS CONTROL
79
- // ========================================
80
- [VulnerabilityCode.BAC_ANONYMOUS_ACCESS]: {
81
- id: 60,
82
- code: VulnerabilityCode.BAC_ANONYMOUS_ACCESS,
83
- title: 'Broken Access Control - Anonymous Access',
84
- description: 'Critical broken access control vulnerability where authenticated endpoints can be accessed without any authentication by simply removing auth headers or cookies, exposing sensitive functionality and data to unauthenticated attackers without any credential requirement.',
85
- severity: 'high',
86
- levelId: 2,
87
- category: 'access_control',
88
- scanner: 'broken-access',
89
- cvss: {
90
- score: 7.5,
91
- vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N',
92
- severity: 'HIGH',
93
- },
94
- cwe: [
95
- { id: 'CWE-862', name: 'Missing Authorization', url: 'https://cwe.mitre.org/data/definitions/862.html' },
96
- ],
97
- owasp: [
98
- { id: 'A01:2021', name: 'Broken Access Control', url: 'https://owasp.org/Top10/A01_2021-Broken_Access_Control/' },
99
- ],
100
- remediation: 'Enforce authentication checks on all protected endpoints. Implement deny-by-default access control. Verify authentication state server-side before processing any request.',
101
- },
102
- [VulnerabilityCode.BAC_IDOR]: {
103
- id: 61,
104
- code: VulnerabilityCode.BAC_IDOR,
105
- title: 'Broken Access Control - Insecure Direct Object Reference',
106
- description: 'IDOR vulnerability where users can access or modify resources belonging to other users by manipulating predictable identifiers like sequential IDs in URLs or request parameters, without proper authorization checks verifying resource ownership.',
107
- severity: 'high',
108
- levelId: 2,
109
- category: 'access_control',
110
- scanner: 'broken-access',
111
- cvss: {
112
- score: 8.1,
113
- vector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N',
114
- severity: 'HIGH',
115
- },
116
- cwe: [
117
- { id: 'CWE-639', name: 'Authorization Bypass Through User-Controlled Key', url: 'https://cwe.mitre.org/data/definitions/639.html' },
118
- ],
119
- owasp: [
120
- { id: 'A01:2021', name: 'Broken Access Control', url: 'https://owasp.org/Top10/A01_2021-Broken_Access_Control/' },
121
- ],
122
- remediation: 'Implement proper authorization checks verifying resource ownership. Use unpredictable identifiers (UUIDs). Apply consistent access control policies across all endpoints.',
123
- },
124
- [VulnerabilityCode.BAC_VERTICAL_PRIVILEGE]: {
125
- id: 62,
126
- code: VulnerabilityCode.BAC_VERTICAL_PRIVILEGE,
127
- title: 'Broken Access Control - Vertical Privilege Escalation',
128
- description: 'Vertical privilege escalation vulnerability allowing regular users to access or perform administrative functions by directly accessing admin endpoints or manipulating role/permission parameters, bypassing role-based access controls to gain elevated privileges.',
129
- severity: 'critical',
130
- levelId: 1,
131
- category: 'access_control',
132
- scanner: 'broken-access',
133
- cvss: {
134
- score: 8.8,
135
- vector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H',
136
- severity: 'HIGH',
137
- },
138
- cwe: [
139
- { id: 'CWE-269', name: 'Improper Privilege Management', url: 'https://cwe.mitre.org/data/definitions/269.html' },
140
- ],
141
- owasp: [
142
- { id: 'A01:2021', name: 'Broken Access Control', url: 'https://owasp.org/Top10/A01_2021-Broken_Access_Control/' },
143
- ],
144
- remediation: 'Implement role-based access control with server-side enforcement. Never trust client-provided role or permission claims. Use centralized authorization service with consistent policies.',
145
- },
146
- // ========================================
147
- // MASS ASSIGNMENT
148
- // ========================================
149
- [VulnerabilityCode.MASSASSIGN_ROLE_ESCALATION]: {
150
- id: 63,
151
- code: VulnerabilityCode.MASSASSIGN_ROLE_ESCALATION,
152
- title: 'Mass Assignment - Role Escalation',
153
- description: 'Mass assignment vulnerability allowing attackers to escalate privileges by including additional parameters like "role", "isAdmin", or "permissions" in requests that the application binds to user objects without proper allowlist filtering of settable fields.',
154
- severity: 'high',
155
- levelId: 2,
156
- category: 'access_control',
157
- scanner: 'model-state',
158
- cvss: {
159
- score: 8.1,
160
- vector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N',
161
- severity: 'HIGH',
162
- },
163
- cwe: [
164
- { id: 'CWE-915', name: 'Mass Assignment', url: 'https://cwe.mitre.org/data/definitions/915.html' },
165
- ],
166
- owasp: [
167
- { id: 'A08:2021', name: 'Software and Data Integrity Failures', url: 'https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/' },
168
- ],
169
- remediation: 'Use allowlist of permitted fields for each endpoint. Implement separate DTOs for input binding. Never auto-bind request data to domain objects without explicit field selection.',
170
- },
171
- [VulnerabilityCode.MASSASSIGN_PROTOTYPE_POLLUTION]: {
172
- id: 64,
173
- code: VulnerabilityCode.MASSASSIGN_PROTOTYPE_POLLUTION,
174
- title: 'Mass Assignment - Prototype Pollution',
175
- description: 'JavaScript prototype pollution vulnerability through mass assignment where attackers inject __proto__ or constructor.prototype properties that modify the Object prototype globally, potentially leading to denial of service, security bypass, or remote code execution.',
176
- severity: 'high',
177
- levelId: 2,
178
- category: 'access_control',
179
- scanner: 'model-state',
180
- cvss: {
181
- score: 7.5,
182
- vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L',
183
- severity: 'HIGH',
184
- },
185
- cwe: [
186
- { id: 'CWE-1321', name: 'Prototype Pollution', url: 'https://cwe.mitre.org/data/definitions/1321.html' },
187
- ],
188
- owasp: [
189
- { id: 'A08:2021', name: 'Software and Data Integrity Failures', url: 'https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/' },
190
- ],
191
- remediation: 'Freeze Object.prototype. Use Object.create(null) for objects used as maps. Filter __proto__ and constructor properties from user input. Use --frozen-intrinsics Node.js flag.',
192
- },
193
- [VulnerabilityCode.JWT_EXPIRED_TOKEN]: {
194
- id: 65,
195
- code: VulnerabilityCode.JWT_EXPIRED_TOKEN,
196
- title: 'JWT Vulnerability - Expired Token Accepted',
197
- description: 'JWT implementation does not properly validate token expiration (exp claim), accepting expired tokens that should be rejected. This allows attackers with previously captured tokens to reuse them indefinitely, maintaining unauthorized access without credential updates.',
198
- severity: 'medium',
199
- levelId: 3,
200
- category: 'authentication',
201
- scanner: 'jwt',
202
- cvss: {
203
- score: 5.3,
204
- vector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N',
205
- severity: 'MEDIUM',
206
- },
207
- cwe: [
208
- { id: 'CWE-613', name: 'Insufficient Session Expiration', url: 'https://cwe.mitre.org/data/definitions/613.html' },
209
- ],
210
- owasp: [
211
- { id: 'A07:2021', name: 'Identification and Authentication Failures', url: 'https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/' },
212
- ],
213
- remediation: 'Always validate exp claim during token verification. Set appropriate token lifetimes. Implement token refresh mechanisms. Use server-side session invalidation for immediate revocation.',
214
- },
215
- [VulnerabilityCode.JWT_MISSING_CLAIMS]: {
216
- id: 66,
217
- code: VulnerabilityCode.JWT_MISSING_CLAIMS,
218
- title: 'JWT Vulnerability - Missing Required Claims',
219
- description: 'JWT tokens are missing critical security claims like exp (expiration), iat (issued at), nbf (not before), or iss (issuer), reducing the security guarantees of the token system and potentially allowing token reuse, replay attacks, or cross-tenant access.',
220
- severity: 'medium',
221
- levelId: 3,
222
- category: 'authentication',
223
- scanner: 'jwt',
224
- cvss: {
225
- score: 5.3,
226
- vector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N',
227
- severity: 'MEDIUM',
228
- },
229
- cwe: [
230
- { id: 'CWE-345', name: 'Insufficient Verification of Data Authenticity', url: 'https://cwe.mitre.org/data/definitions/345.html' },
231
- ],
232
- owasp: [
233
- { id: 'A02:2021', name: 'Cryptographic Failures', url: 'https://owasp.org/Top10/A02_2021-Cryptographic_Failures/' },
234
- ],
235
- remediation: 'Include and validate all standard claims: exp, iat, nbf, iss, aud, sub. Define required claims for your application. Reject tokens missing mandatory claims.',
236
- },
237
- [VulnerabilityCode.BAC_HORIZONTAL_PRIVILEGE]: {
238
- id: 67,
239
- code: VulnerabilityCode.BAC_HORIZONTAL_PRIVILEGE,
240
- title: 'Broken Access Control - Horizontal Privilege Escalation',
241
- description: 'Horizontal privilege escalation vulnerability where authenticated users can access data or perform actions belonging to other users at the same privilege level by manipulating user identifiers, object references, or session parameters without ownership verification.',
242
- severity: 'high',
243
- levelId: 2,
244
- category: 'access_control',
245
- scanner: 'broken-access',
246
- cvss: {
247
- score: 7.5,
248
- vector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N',
249
- severity: 'HIGH',
250
- },
251
- cwe: [
252
- { id: 'CWE-639', name: 'Authorization Bypass Through User-Controlled Key', url: 'https://cwe.mitre.org/data/definitions/639.html' },
253
- ],
254
- owasp: [
255
- { id: 'A01:2021', name: 'Broken Access Control', url: 'https://owasp.org/Top10/A01_2021-Broken_Access_Control/' },
256
- ],
257
- remediation: 'Implement record-level authorization checks. Verify resource ownership against the authenticated user session. Use indirect references that map to actual resources server-side.',
258
- },
259
- [VulnerabilityCode.MASSASSIGN_HIDDEN_FIELD]: {
260
- id: 68,
261
- code: VulnerabilityCode.MASSASSIGN_HIDDEN_FIELD,
262
- title: 'Mass Assignment - Hidden Field Manipulation',
263
- description: 'Mass assignment vulnerability where attackers can modify hidden form fields or server-side computed values like price, discount, userId, or timestamp by including them in request bodies, bypassing UI restrictions to manipulate business logic or data integrity.',
264
- severity: 'medium',
265
- levelId: 3,
266
- category: 'access_control',
267
- scanner: 'model-state',
268
- cvss: {
269
- score: 6.5,
270
- vector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N',
271
- severity: 'MEDIUM',
272
- },
273
- cwe: [
274
- { id: 'CWE-915', name: 'Mass Assignment', url: 'https://cwe.mitre.org/data/definitions/915.html' },
275
- ],
276
- owasp: [
277
- { id: 'A08:2021', name: 'Software and Data Integrity Failures', url: 'https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/' },
278
- ],
279
- remediation: 'Never trust client-provided values for server-computed fields. Use explicit DTOs with allowlisted fields. Recompute amounts, timestamps, and IDs server-side.',
280
- },
281
- [VulnerabilityCode.JWT_CLAIM_TAMPERING]: {
282
- id: 131,
283
- code: VulnerabilityCode.JWT_CLAIM_TAMPERING,
284
- title: 'JWT - Claim Tampering',
285
- description: 'JWT claim tampering vulnerability where attackers can modify token claims such as roles, user IDs, or permissions and the server accepts the tampered token, enabling privilege escalation or unauthorized access.',
286
- severity: 'high',
287
- levelId: 2,
288
- category: 'authentication',
289
- scanner: 'jwt',
290
- cvss: {
291
- score: 8.1,
292
- vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N',
293
- severity: 'HIGH',
294
- },
295
- cwe: [
296
- { id: 'CWE-345', name: 'Insufficient Verification of Data Authenticity', url: 'https://cwe.mitre.org/data/definitions/345.html' },
297
- ],
298
- owasp: [
299
- { id: 'A07:2021', name: 'Identification and Authentication Failures', url: 'https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/' },
300
- ],
301
- remediation: 'Validate JWT signatures using strong algorithms and trusted keys. Reject unsigned or weakly signed tokens. Enforce claim validation and server-side authorization checks.',
302
- },
303
- [VulnerabilityCode.JWT_KID_INJECTION]: {
304
- id: 132,
305
- code: VulnerabilityCode.JWT_KID_INJECTION,
306
- title: 'JWT - KID Header Injection',
307
- description: 'JWT key identifier (kid) injection vulnerability where attackers manipulate the kid header to influence key selection or file paths, potentially bypassing signature verification or loading attacker-controlled keys.',
308
- severity: 'high',
309
- levelId: 2,
310
- category: 'authentication',
311
- scanner: 'jwt',
312
- cvss: {
313
- score: 7.5,
314
- vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N',
315
- severity: 'HIGH',
316
- },
317
- cwe: [
318
- { id: 'CWE-73', name: 'External Control of File Name or Path', url: 'https://cwe.mitre.org/data/definitions/73.html' },
319
- ],
320
- owasp: [
321
- { id: 'A07:2021', name: 'Identification and Authentication Failures', url: 'https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/' },
322
- ],
323
- remediation: 'Avoid direct use of kid as a file path or URL. Use a strict allowlist of key IDs and map to known keys in configuration. Reject unexpected or oversized kid values.',
324
- },
325
- [VulnerabilityCode.JWT_JKU_INJECTION]: {
326
- id: 133,
327
- code: VulnerabilityCode.JWT_JKU_INJECTION,
328
- title: 'JWT - JKU Header Injection',
329
- description: 'JWT JKU (JWK Set URL) header injection vulnerability where attackers can control the URL used to fetch signing keys, allowing them to supply their own keys and forge valid tokens.',
330
- severity: 'high',
331
- levelId: 2,
332
- category: 'authentication',
333
- scanner: 'jwt',
334
- cvss: {
335
- score: 8.1,
336
- vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N',
337
- severity: 'HIGH',
338
- },
339
- cwe: [
340
- { id: 'CWE-346', name: 'Origin Validation Error', url: 'https://cwe.mitre.org/data/definitions/346.html' },
341
- ],
342
- owasp: [
343
- { id: 'A07:2021', name: 'Identification and Authentication Failures', url: 'https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/' },
344
- ],
345
- remediation: 'Ignore untrusted JKU values or restrict to a strict allowlist of trusted JWKS endpoints. Pin keys or use local key material where possible.',
346
- },
347
- [VulnerabilityCode.JWT_EMBEDDED_JWK]: {
348
- id: 134,
349
- code: VulnerabilityCode.JWT_EMBEDDED_JWK,
350
- title: 'JWT - Embedded JWK Injection',
351
- description: 'JWT embedded JWK vulnerability where attackers include their own JWK in the token header and the server accepts it as a trusted signing key, enabling forged tokens and authentication bypass.',
352
- severity: 'high',
353
- levelId: 2,
354
- category: 'authentication',
355
- scanner: 'jwt',
356
- cvss: {
357
- score: 8.1,
358
- vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N',
359
- severity: 'HIGH',
360
- },
361
- cwe: [
362
- { id: 'CWE-347', name: 'Improper Verification of Cryptographic Signature', url: 'https://cwe.mitre.org/data/definitions/347.html' },
363
- ],
364
- owasp: [
365
- { id: 'A07:2021', name: 'Identification and Authentication Failures', url: 'https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/' },
366
- ],
367
- remediation: 'Reject embedded JWKs from tokens unless explicitly required and validated against a trusted key set. Use pinned keys and strict header validation.',
368
- },
369
- [VulnerabilityCode.JWT_X5C_INJECTION]: {
370
- id: 135,
371
- code: VulnerabilityCode.JWT_X5C_INJECTION,
372
- title: 'JWT - X5C Header Injection',
373
- description: 'JWT x5c header injection vulnerability where attackers provide an untrusted certificate chain, allowing them to influence key selection or bypass signature validation if certificate trust is not strictly enforced.',
374
- severity: 'high',
375
- levelId: 2,
376
- category: 'authentication',
377
- scanner: 'jwt',
378
- cvss: {
379
- score: 7.5,
380
- vector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N',
381
- severity: 'HIGH',
382
- },
383
- cwe: [
384
- { id: 'CWE-295', name: 'Improper Certificate Validation', url: 'https://cwe.mitre.org/data/definitions/295.html' },
385
- ],
386
- owasp: [
387
- { id: 'A07:2021', name: 'Identification and Authentication Failures', url: 'https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/' },
388
- ],
389
- remediation: 'Ignore untrusted x5c headers or validate certificate chains against a trusted root store with strict policy. Prefer pinned public keys or JWKS allowlists.',
390
- },
391
- };
392
- export default AUTH_VULNERABILITIES;
@@ -1 +0,0 @@
1
- {"version":3,"file":"authentication.js","sourceRoot":"","sources":["authentication.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Vulnerability Registry - Configuration & Headers
3
- *
4
- * Definitions for Security Headers, Directory Browsing, and related issues
5
- */
6
- import type { VulnerabilityDefinition } from '../types.js';
7
- export declare const CONFIG_VULNERABILITIES: Record<string, VulnerabilityDefinition>;
8
- export default CONFIG_VULNERABILITIES;
@@ -1 +0,0 @@
1
- {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["configuration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAw6B1E,CAAC;AAEF,eAAe,sBAAsB,CAAC"}