@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.
- package/dist/categories/authentication.js +17 -17
- package/dist/categories/configuration.js +80 -80
- package/dist/categories/injection.js +34 -34
- package/dist/categories/sensitive-paths.js +84 -84
- package/dist/categories/ssrf.js +11 -11
- package/dist/categories/xss.js +15 -15
- package/dist-cjs/categories/authentication.js +17 -17
- package/dist-cjs/categories/configuration.js +80 -80
- package/dist-cjs/categories/injection.js +34 -34
- package/dist-cjs/categories/sensitive-paths.js +84 -84
- package/dist-cjs/categories/ssrf.js +11 -11
- package/dist-cjs/categories/xss.js +15 -15
- package/package.json +35 -32
- package/scripts/assign-ids.ts +105 -0
- package/scripts/check-duplicate-ids.ts +45 -0
- package/src/categories/authentication.ts +17 -17
- package/src/categories/configuration.ts +80 -80
- package/src/categories/injection.ts +34 -34
- package/src/categories/sensitive-paths.ts +84 -84
- package/src/categories/ssrf.ts +11 -11
- package/src/categories/xss.ts +15 -15
- package/src/id-registry.json +1235 -0
- package/src/categories/authentication.d.ts +0 -8
- package/src/categories/authentication.d.ts.map +0 -1
- package/src/categories/authentication.js +0 -392
- package/src/categories/authentication.js.map +0 -1
- package/src/categories/configuration.d.ts +0 -8
- package/src/categories/configuration.d.ts.map +0 -1
- package/src/categories/configuration.js +0 -1782
- package/src/categories/configuration.js.map +0 -1
- package/src/categories/injection.d.ts +0 -8
- package/src/categories/injection.d.ts.map +0 -1
- package/src/categories/injection.js +0 -781
- package/src/categories/injection.js.map +0 -1
- package/src/categories/sensitive-paths.d.ts +0 -9
- package/src/categories/sensitive-paths.d.ts.map +0 -1
- package/src/categories/sensitive-paths.js +0 -1872
- package/src/categories/sensitive-paths.js.map +0 -1
- package/src/categories/ssrf.d.ts +0 -8
- package/src/categories/ssrf.d.ts.map +0 -1
- package/src/categories/ssrf.js +0 -258
- package/src/categories/ssrf.js.map +0 -1
- package/src/categories/xss.d.ts +0 -7
- package/src/categories/xss.d.ts.map +0 -1
- package/src/categories/xss.js +0 -340
- package/src/categories/xss.js.map +0 -1
- package/src/error-codes.d.ts +0 -280
- package/src/error-codes.d.ts.map +0 -1
- package/src/error-codes.js +0 -350
- package/src/error-codes.js.map +0 -1
- package/src/index.d.ts +0 -60
- package/src/index.d.ts.map +0 -1
- package/src/index.js +0 -92
- package/src/index.js.map +0 -1
- package/src/types.d.ts +0 -88
- package/src/types.d.ts.map +0 -1
- package/src/types.js +0 -6
- package/src/types.js.map +0 -1
|
@@ -9,7 +9,7 @@ exports.SSRF_VULNERABILITIES = void 0;
|
|
|
9
9
|
const error_codes_js_1 = require("../error-codes.js");
|
|
10
10
|
exports.SSRF_VULNERABILITIES = {
|
|
11
11
|
[error_codes_js_1.VulnerabilityCode.SSRF_CLOUD_METADATA]: {
|
|
12
|
-
id:
|
|
12
|
+
id: 450,
|
|
13
13
|
code: error_codes_js_1.VulnerabilityCode.SSRF_CLOUD_METADATA,
|
|
14
14
|
title: 'Server-Side Request Forgery - Cloud Metadata Access',
|
|
15
15
|
description: 'Critical SSRF vulnerability enabling access to cloud provider metadata services (AWS IMDSv1, GCP, Azure) which expose sensitive information including IAM credentials, API tokens, and instance configuration that can lead to full cloud account compromise and lateral movement.',
|
|
@@ -31,7 +31,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
31
31
|
remediation: 'Block access to cloud metadata IP ranges (169.254.169.254). Implement IMDSv2 which requires tokens. Use allowlist for external URLs. Validate and sanitize all URL inputs.',
|
|
32
32
|
},
|
|
33
33
|
[error_codes_js_1.VulnerabilityCode.SSRF_INTERNAL_SERVICE]: {
|
|
34
|
-
id:
|
|
34
|
+
id: 451,
|
|
35
35
|
code: error_codes_js_1.VulnerabilityCode.SSRF_INTERNAL_SERVICE,
|
|
36
36
|
title: 'Server-Side Request Forgery - Internal Service Access',
|
|
37
37
|
description: 'SSRF vulnerability allowing attackers to access internal network services that should not be reachable from the internet, including databases, admin panels, cache servers, and other infrastructure components protected only by network segmentation without authentication.',
|
|
@@ -53,7 +53,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
53
53
|
remediation: 'Implement URL allowlist for permitted external resources. Block requests to private IP ranges and localhost. Use network segmentation with proper authentication for internal services.',
|
|
54
54
|
},
|
|
55
55
|
[error_codes_js_1.VulnerabilityCode.SSRF_PROTOCOL_SMUGGLING]: {
|
|
56
|
-
id:
|
|
56
|
+
id: 452,
|
|
57
57
|
code: error_codes_js_1.VulnerabilityCode.SSRF_PROTOCOL_SMUGGLING,
|
|
58
58
|
title: 'Server-Side Request Forgery - Protocol Smuggling',
|
|
59
59
|
description: 'SSRF vulnerability exploiting non-HTTP protocol handlers like file://, gopher://, dict://, or ftp:// to read local files, interact with internal services using raw TCP, or perform attacks that would not be possible through HTTP requests alone, significantly expanding impact scope.',
|
|
@@ -75,7 +75,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
75
75
|
remediation: 'Enforce HTTP/HTTPS only for outbound requests. Disable or block dangerous protocol handlers at the application and network level. Validate URL schemes against strict allowlist.',
|
|
76
76
|
},
|
|
77
77
|
[error_codes_js_1.VulnerabilityCode.SSRF_BLIND_OOB]: {
|
|
78
|
-
id:
|
|
78
|
+
id: 453,
|
|
79
79
|
code: error_codes_js_1.VulnerabilityCode.SSRF_BLIND_OOB,
|
|
80
80
|
title: 'Server-Side Request Forgery - Blind OOB',
|
|
81
81
|
description: 'Blind SSRF vulnerability confirmed through out-of-band DNS or HTTP callbacks indicating the server makes requests to attacker-controlled destinations even though responses are not reflected, enabling internal network scanning and data exfiltration through DNS or timing side channels.',
|
|
@@ -100,7 +100,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
100
100
|
// OPEN REDIRECT
|
|
101
101
|
// ========================================
|
|
102
102
|
[error_codes_js_1.VulnerabilityCode.REDIRECT_HEADER_INJECTION]: {
|
|
103
|
-
id:
|
|
103
|
+
id: 454,
|
|
104
104
|
code: error_codes_js_1.VulnerabilityCode.REDIRECT_HEADER_INJECTION,
|
|
105
105
|
title: 'Open Redirect - HTTP Header Injection',
|
|
106
106
|
description: 'Open redirect vulnerability through Location header manipulation allowing attackers to redirect victims to malicious websites after authenticating or interacting with the legitimate application, facilitating phishing attacks that abuse user trust in the original domain.',
|
|
@@ -122,7 +122,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
122
122
|
remediation: 'Use allowlist of permitted redirect destinations. Avoid using user input for redirect URLs. If redirects are required, use indirect references or validate against known safe patterns.',
|
|
123
123
|
},
|
|
124
124
|
[error_codes_js_1.VulnerabilityCode.REDIRECT_JS_NAVIGATION]: {
|
|
125
|
-
id:
|
|
125
|
+
id: 455,
|
|
126
126
|
code: error_codes_js_1.VulnerabilityCode.REDIRECT_JS_NAVIGATION,
|
|
127
127
|
title: 'Open Redirect - JavaScript Navigation',
|
|
128
128
|
description: 'Client-side open redirect vulnerability through JavaScript navigation methods like window.location or location.href being set to user-controlled values, allowing attackers to redirect users to malicious sites through specially crafted URLs that bypass server-side validation.',
|
|
@@ -147,7 +147,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
147
147
|
// HOST HEADER INJECTION
|
|
148
148
|
// ========================================
|
|
149
149
|
[error_codes_js_1.VulnerabilityCode.HOST_CACHE_POISONING]: {
|
|
150
|
-
id:
|
|
150
|
+
id: 456,
|
|
151
151
|
code: error_codes_js_1.VulnerabilityCode.HOST_CACHE_POISONING,
|
|
152
152
|
title: 'Host Header Injection - Cache Poisoning',
|
|
153
153
|
description: 'Host header injection vulnerability where manipulated Host headers are reflected in cached responses, allowing attackers to poison web caches and CDNs with malicious content that is then served to all users, potentially enabling widespread defacement or malware distribution.',
|
|
@@ -169,7 +169,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
169
169
|
remediation: 'Configure web servers to reject requests with unexpected Host headers. Include Host header in cache keys. Use canonical URLs for all generated links.',
|
|
170
170
|
},
|
|
171
171
|
[error_codes_js_1.VulnerabilityCode.HOST_PASSWORD_RESET]: {
|
|
172
|
-
id:
|
|
172
|
+
id: 457,
|
|
173
173
|
code: error_codes_js_1.VulnerabilityCode.HOST_PASSWORD_RESET,
|
|
174
174
|
title: 'Host Header Injection - Password Reset Poisoning',
|
|
175
175
|
description: 'Critical host header injection vulnerability in password reset functionality where the injected Host header is used to generate password reset URLs, allowing attackers to receive password reset tokens when victims click the manipulated links in legitimate reset emails.',
|
|
@@ -191,7 +191,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
191
191
|
remediation: 'Use hardcoded canonical domain for generated URLs. Never trust Host header for security-sensitive functionality. Validate Host header against configured allowed hosts.',
|
|
192
192
|
},
|
|
193
193
|
[error_codes_js_1.VulnerabilityCode.SSRF_FILTER_BYPASS]: {
|
|
194
|
-
id:
|
|
194
|
+
id: 458,
|
|
195
195
|
code: error_codes_js_1.VulnerabilityCode.SSRF_FILTER_BYPASS,
|
|
196
196
|
title: 'Server-Side Request Forgery - Filter Bypass',
|
|
197
197
|
description: 'SSRF vulnerability that bypasses security filters through encoding tricks (URL encoding, IPv6 representation, decimal IP notation), DNS rebinding, or using alternative representations of blocked addresses to reach internal resources despite URL validation controls.',
|
|
@@ -213,7 +213,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
213
213
|
remediation: 'Implement defense-in-depth with multiple validation layers. Resolve DNS before validation. Use strict URL parsing libraries. Block all private IP ranges including encoded forms.',
|
|
214
214
|
},
|
|
215
215
|
[error_codes_js_1.VulnerabilityCode.REDIRECT_META_REFRESH]: {
|
|
216
|
-
id:
|
|
216
|
+
id: 459,
|
|
217
217
|
code: error_codes_js_1.VulnerabilityCode.REDIRECT_META_REFRESH,
|
|
218
218
|
title: 'Open Redirect - Meta Refresh',
|
|
219
219
|
description: 'Open redirect vulnerability through HTML meta refresh tags where user input controls the redirect target URL, enabling phishing attacks by sending victims to malicious sites after a brief delay on the legitimate domain, bypassing some security controls.',
|
|
@@ -235,7 +235,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
235
235
|
remediation: 'Validate meta refresh URLs against allowlist. Avoid using user input in meta refresh tags. Prefer server-side redirects with proper validation over client-side meta refresh.',
|
|
236
236
|
},
|
|
237
237
|
[error_codes_js_1.VulnerabilityCode.HOST_REDIRECT]: {
|
|
238
|
-
id:
|
|
238
|
+
id: 460,
|
|
239
239
|
code: error_codes_js_1.VulnerabilityCode.HOST_REDIRECT,
|
|
240
240
|
title: 'Host Header Injection - Open Redirect',
|
|
241
241
|
description: 'Host header injection leading to open redirect where the application uses the Host header to generate redirect URLs, allowing attackers to redirect users to malicious domains by manipulating the Host header in their requests.',
|
|
@@ -9,7 +9,7 @@ exports.XSS_VULNERABILITIES = void 0;
|
|
|
9
9
|
const error_codes_js_1 = require("../error-codes.js");
|
|
10
10
|
exports.XSS_VULNERABILITIES = {
|
|
11
11
|
[error_codes_js_1.VulnerabilityCode.XSS_REFLECTED]: {
|
|
12
|
-
id:
|
|
12
|
+
id: 400,
|
|
13
13
|
code: error_codes_js_1.VulnerabilityCode.XSS_REFLECTED,
|
|
14
14
|
title: 'Cross-Site Scripting - Reflected',
|
|
15
15
|
description: 'Reflected XSS vulnerability where user input is immediately returned by the server in the response without proper encoding, allowing attackers to inject malicious scripts that execute in the victim browser when they click a crafted link or submit a manipulated form.',
|
|
@@ -31,7 +31,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
31
31
|
remediation: 'HTML-encode all user input before rendering in HTML. Implement Content Security Policy (CSP). Use context-aware output encoding based on output location (HTML, JS, CSS, URL).',
|
|
32
32
|
},
|
|
33
33
|
[error_codes_js_1.VulnerabilityCode.XSS_STORED]: {
|
|
34
|
-
id:
|
|
34
|
+
id: 401,
|
|
35
35
|
code: error_codes_js_1.VulnerabilityCode.XSS_STORED,
|
|
36
36
|
title: 'Cross-Site Scripting - Stored',
|
|
37
37
|
description: 'Critical stored XSS vulnerability where malicious scripts are permanently saved in the application database and served to all users who view the affected content, enabling widespread session hijacking, credential theft, and malware distribution without requiring victim interaction beyond normal usage.',
|
|
@@ -53,7 +53,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
53
53
|
remediation: 'Sanitize all user input before storage. HTML-encode all dynamic content in responses. Implement strict Content Security Policy. Use HTTP-only and Secure flags for session cookies.',
|
|
54
54
|
},
|
|
55
55
|
[error_codes_js_1.VulnerabilityCode.XSS_DOM_BASED]: {
|
|
56
|
-
id:
|
|
56
|
+
id: 402,
|
|
57
57
|
code: error_codes_js_1.VulnerabilityCode.XSS_DOM_BASED,
|
|
58
58
|
title: 'Cross-Site Scripting - DOM Based',
|
|
59
59
|
description: 'DOM-based XSS vulnerability where the attack payload is processed entirely in the client-side JavaScript code without being sent to the server, typically through dangerous sinks like innerHTML, document.write(), or eval() that process URL fragments or user-controlled DOM elements.',
|
|
@@ -75,7 +75,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
75
75
|
remediation: 'Avoid using dangerous DOM sinks like innerHTML and document.write(). Use textContent instead of innerHTML. Sanitize any DOM manipulation with user input. Implement Trusted Types if supported.',
|
|
76
76
|
},
|
|
77
77
|
[error_codes_js_1.VulnerabilityCode.XSS_SVG_INJECTION]: {
|
|
78
|
-
id:
|
|
78
|
+
id: 403,
|
|
79
79
|
code: error_codes_js_1.VulnerabilityCode.XSS_SVG_INJECTION,
|
|
80
80
|
title: 'Cross-Site Scripting - SVG Injection',
|
|
81
81
|
description: 'SVG-based XSS vulnerability where malicious JavaScript is embedded within SVG image files using script elements or event handlers like onload, which execute when the browser renders the SVG file as an image or inline element, bypassing image upload security controls.',
|
|
@@ -97,7 +97,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
97
97
|
remediation: 'Sanitize uploaded SVG files to remove script elements and event handlers. Serve user-uploaded SVGs from a separate domain. Set Content-Disposition: attachment for SVG downloads. Use Content-Security-Policy.',
|
|
98
98
|
},
|
|
99
99
|
[error_codes_js_1.VulnerabilityCode.XSS_CSTI_ANGULAR]: {
|
|
100
|
-
id:
|
|
100
|
+
id: 404,
|
|
101
101
|
code: error_codes_js_1.VulnerabilityCode.XSS_CSTI_ANGULAR,
|
|
102
102
|
title: 'Cross-Site Scripting - Angular Template Injection',
|
|
103
103
|
description: 'AngularJS client-side template injection vulnerability where user input containing Angular expressions like {{constructor.constructor("alert(1)")()}} is evaluated by the Angular template engine, leading to arbitrary JavaScript execution in the user browser context.',
|
|
@@ -120,7 +120,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
120
120
|
remediation: 'Upgrade from AngularJS to modern Angular which is not vulnerable to template injection. Use ng-non-bindable directive for user content. Encode special characters {{}} in user input. Apply strict CSP.',
|
|
121
121
|
},
|
|
122
122
|
[error_codes_js_1.VulnerabilityCode.XSS_CSP_BYPASS]: {
|
|
123
|
-
id:
|
|
123
|
+
id: 405,
|
|
124
124
|
code: error_codes_js_1.VulnerabilityCode.XSS_CSP_BYPASS,
|
|
125
125
|
title: 'Cross-Site Scripting - CSP Bypass',
|
|
126
126
|
description: 'XSS vulnerability that bypasses Content Security Policy protections through techniques like JSONP endpoints on whitelisted domains, base tag injection, Angular.js libraries on CDN, or other CSP bypass gadgets that allow script execution despite CSP controls being in place.',
|
|
@@ -142,7 +142,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
142
142
|
remediation: 'Review CSP for JSONP endpoints and Angular.js CDN inclusions. Use nonce-based CSP instead of allowlist domains. Add base-uri restriction. Fix the underlying XSS vulnerability.',
|
|
143
143
|
},
|
|
144
144
|
[error_codes_js_1.VulnerabilityCode.XSS_JS_CONTEXT]: {
|
|
145
|
-
id:
|
|
145
|
+
id: 406,
|
|
146
146
|
code: error_codes_js_1.VulnerabilityCode.XSS_JS_CONTEXT,
|
|
147
147
|
title: 'Cross-Site Scripting - JavaScript Context',
|
|
148
148
|
description: 'XSS vulnerability where user input is injected directly into JavaScript code blocks, allowing attackers to break out of string contexts and execute arbitrary JavaScript by injecting quote characters and script code, or modify application logic by injecting new statements.',
|
|
@@ -164,7 +164,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
164
164
|
remediation: 'Avoid inserting user data into JavaScript code. Use JSON.stringify() with proper encoding for data passed to JavaScript. Pass data through data attributes and access via DOM APIs instead.',
|
|
165
165
|
},
|
|
166
166
|
[error_codes_js_1.VulnerabilityCode.XSS_EVENT_HANDLER]: {
|
|
167
|
-
id:
|
|
167
|
+
id: 407,
|
|
168
168
|
code: error_codes_js_1.VulnerabilityCode.XSS_EVENT_HANDLER,
|
|
169
169
|
title: 'Cross-Site Scripting - Event Handler Injection',
|
|
170
170
|
description: 'XSS vulnerability through injection into HTML event handler attributes like onclick, onerror, onload, or onmouseover, allowing attackers to execute JavaScript when users interact with or simply view the affected page elements without requiring script tags.',
|
|
@@ -186,7 +186,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
186
186
|
remediation: 'Use proper HTML encoding for all user input in attributes. Avoid placing user input in event handler attributes. Use Content Security Policy with unsafe-inline disabled.',
|
|
187
187
|
},
|
|
188
188
|
[error_codes_js_1.VulnerabilityCode.XSS_SCRIPT_INJECTION]: {
|
|
189
|
-
id:
|
|
189
|
+
id: 408,
|
|
190
190
|
code: error_codes_js_1.VulnerabilityCode.XSS_SCRIPT_INJECTION,
|
|
191
191
|
title: 'Cross-Site Scripting - Script Tag Injection',
|
|
192
192
|
description: 'XSS vulnerability where attackers can inject complete script tags into the HTML response, enabling arbitrary JavaScript execution. This is often the most straightforward XSS exploitation when input is not properly sanitized before rendering.',
|
|
@@ -208,7 +208,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
208
208
|
remediation: 'Encode < and > characters in user input. Implement Content Security Policy. Use HTML sanitization libraries that remove script tags. Apply context-aware output encoding.',
|
|
209
209
|
},
|
|
210
210
|
[error_codes_js_1.VulnerabilityCode.XSS_HTML_INJECTION]: {
|
|
211
|
-
id:
|
|
211
|
+
id: 409,
|
|
212
212
|
code: error_codes_js_1.VulnerabilityCode.XSS_HTML_INJECTION,
|
|
213
213
|
title: 'Cross-Site Scripting - HTML Injection',
|
|
214
214
|
description: 'HTML injection vulnerability where attackers can inject arbitrary HTML elements that modify page structure, enabling phishing attacks through fake login forms, content spoofing, or combination with CSS to overlay malicious content over legitimate page elements.',
|
|
@@ -230,7 +230,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
230
230
|
remediation: 'HTML-encode all user input. Use allowlist-based HTML sanitization if rich text is required. Implement Content Security Policy to restrict form actions and frame sources.',
|
|
231
231
|
},
|
|
232
232
|
[error_codes_js_1.VulnerabilityCode.XSS_ATTRIBUTE_INJECTION]: {
|
|
233
|
-
id:
|
|
233
|
+
id: 410,
|
|
234
234
|
code: error_codes_js_1.VulnerabilityCode.XSS_ATTRIBUTE_INJECTION,
|
|
235
235
|
title: 'Cross-Site Scripting - Attribute Injection',
|
|
236
236
|
description: 'XSS vulnerability where user input is placed in HTML attributes without proper encoding, allowing attackers to break out of the attribute context and inject new attributes or event handlers by using quote characters and spaces.',
|
|
@@ -252,7 +252,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
252
252
|
remediation: 'HTML-encode quotes (single and double) when placing user input in attributes. Always use quoted attributes. Avoid placing user input in dangerous attributes like href, src, or event handlers.',
|
|
253
253
|
},
|
|
254
254
|
[error_codes_js_1.VulnerabilityCode.XSS_CSS_INJECTION]: {
|
|
255
|
-
id:
|
|
255
|
+
id: 411,
|
|
256
256
|
code: error_codes_js_1.VulnerabilityCode.XSS_CSS_INJECTION,
|
|
257
257
|
title: 'Cross-Site Scripting - CSS Injection',
|
|
258
258
|
description: 'CSS injection vulnerability where attackers can inject malicious CSS rules to exfiltrate data through CSS selectors and background URLs, modify page appearance for phishing, or in older browsers achieve JavaScript execution through CSS expressions.',
|
|
@@ -274,7 +274,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
274
274
|
remediation: 'Sanitize CSS input to remove url() functions and expression() directives. Use CSS-specific encoding. Implement Content Security Policy with style-src restrictions.',
|
|
275
275
|
},
|
|
276
276
|
[error_codes_js_1.VulnerabilityCode.XSS_TEMPLATE_LITERAL]: {
|
|
277
|
-
id:
|
|
277
|
+
id: 412,
|
|
278
278
|
code: error_codes_js_1.VulnerabilityCode.XSS_TEMPLATE_LITERAL,
|
|
279
279
|
title: 'Cross-Site Scripting - Template Literal Injection',
|
|
280
280
|
description: 'XSS vulnerability through JavaScript template literals (backtick strings) where user input can break out of the template context or inject expressions using ${} syntax, executing arbitrary JavaScript in the client browser context.',
|
|
@@ -296,7 +296,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
296
296
|
remediation: 'Avoid placing user input inside template literals. Escape backticks, dollar signs, and braces. Use tagged template functions with proper escaping for user data.',
|
|
297
297
|
},
|
|
298
298
|
[error_codes_js_1.VulnerabilityCode.XSS_MUTATION_BASED]: {
|
|
299
|
-
id:
|
|
299
|
+
id: 413,
|
|
300
300
|
code: error_codes_js_1.VulnerabilityCode.XSS_MUTATION_BASED,
|
|
301
301
|
title: 'Cross-Site Scripting - Mutation XSS',
|
|
302
302
|
description: 'Mutation-based XSS (mXSS) vulnerability exploiting browser HTML parser quirks and DOM mutations where seemingly safe HTML is transformed into executable script through browser parsing behaviors, bypassing traditional sanitization.',
|
|
@@ -318,7 +318,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
318
318
|
remediation: 'Use DOMPurify or similar mXSS-aware sanitizers. Avoid innerHTML with user content. Implement Trusted Types. Stay updated on browser parsing behavior changes.',
|
|
319
319
|
},
|
|
320
320
|
[error_codes_js_1.VulnerabilityCode.XSS_CSTI_VUE]: {
|
|
321
|
-
id:
|
|
321
|
+
id: 414,
|
|
322
322
|
code: error_codes_js_1.VulnerabilityCode.XSS_CSTI_VUE,
|
|
323
323
|
title: 'Cross-Site Scripting - Vue.js Template Injection',
|
|
324
324
|
description: 'Vue.js client-side template injection vulnerability where user input containing Vue expression syntax like {{}} or v-bind directives is evaluated by the Vue template compiler, leading to arbitrary JavaScript execution in the browser context.',
|
package/package.json
CHANGED
|
@@ -1,37 +1,40 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
"name": "@zerothreatai/vulnerability-registry",
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "Centralized vulnerability definitions, CVSS scores, and references for ZeroThreat scanners",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"ids:assign": "tsx scripts/assign-ids.ts",
|
|
10
|
+
"ids:check": "tsx scripts/check-duplicate-ids.ts",
|
|
11
|
+
"build:esm": "tsc -p tsconfig.json",
|
|
12
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
13
|
+
"build": "npm run build:esm && npm run build:cjs",
|
|
14
|
+
"postbuild": "node scripts/write-cjs-package.cjs",
|
|
15
|
+
"prepack": "npm run build",
|
|
16
|
+
"test": "vitest run"
|
|
17
|
+
},
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"import": "./dist/index.js",
|
|
22
|
+
"require": "./dist-cjs/index.js"
|
|
15
23
|
},
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"require": "./dist-cjs/index.js"
|
|
21
|
-
},
|
|
22
|
-
"./types": {
|
|
23
|
-
"types": "./dist/types.d.ts",
|
|
24
|
-
"import": "./dist/types.js",
|
|
25
|
-
"require": "./dist-cjs/types.js"
|
|
26
|
-
},
|
|
27
|
-
"./error-codes": {
|
|
28
|
-
"types": "./dist/error-codes.d.ts",
|
|
29
|
-
"import": "./dist/error-codes.js",
|
|
30
|
-
"require": "./dist-cjs/error-codes.js"
|
|
31
|
-
}
|
|
24
|
+
"./types": {
|
|
25
|
+
"types": "./dist/types.d.ts",
|
|
26
|
+
"import": "./dist/types.js",
|
|
27
|
+
"require": "./dist-cjs/types.js"
|
|
32
28
|
},
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
"./error-codes": {
|
|
30
|
+
"types": "./dist/error-codes.d.ts",
|
|
31
|
+
"import": "./dist/error-codes.js",
|
|
32
|
+
"require": "./dist-cjs/error-codes.js"
|
|
36
33
|
}
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"tsx": "^4.19.2",
|
|
37
|
+
"typescript": "^5.0.0",
|
|
38
|
+
"vitest": "^1.0.0"
|
|
39
|
+
}
|
|
37
40
|
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
const ROOT = path.resolve("D:/new-git-project/agents/shared/vulnerability-registry");
|
|
5
|
+
const CATEGORIES_DIR = path.join(ROOT, "src", "categories");
|
|
6
|
+
const REGISTRY_PATH = path.join(ROOT, "src", "id-registry.json");
|
|
7
|
+
|
|
8
|
+
const RANGES: Record<string, [number, number]> = {
|
|
9
|
+
authentication: [100, 199],
|
|
10
|
+
configuration: [200, 299],
|
|
11
|
+
injection: [300, 399],
|
|
12
|
+
xss: [400, 449],
|
|
13
|
+
ssrf: [450, 499],
|
|
14
|
+
"sensitive-paths": [500, 699],
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const CODE_PATTERN = /\[VulnerabilityCode\.([A-Z0-9_]+)\]\s*:/g;
|
|
18
|
+
const ID_PATTERN = /\bid\s*:\s*(\d+)/;
|
|
19
|
+
|
|
20
|
+
type AssignedEntry = {
|
|
21
|
+
code: string;
|
|
22
|
+
category: string;
|
|
23
|
+
id: number;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
function assignIdsForFile(filePath: string, category: string): { text: string; entries: AssignedEntry[] } {
|
|
27
|
+
const text = fs.readFileSync(filePath, "utf-8");
|
|
28
|
+
const matches = Array.from(text.matchAll(CODE_PATTERN));
|
|
29
|
+
if (matches.length === 0) {
|
|
30
|
+
return { text, entries: [] };
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const [startId, endId] = RANGES[category];
|
|
34
|
+
let nextId = startId;
|
|
35
|
+
const entries: AssignedEntry[] = [];
|
|
36
|
+
const outParts: string[] = [];
|
|
37
|
+
let cursor = 0;
|
|
38
|
+
|
|
39
|
+
for (let i = 0; i < matches.length; i += 1) {
|
|
40
|
+
const match = matches[i];
|
|
41
|
+
const blockStart = match.index! + match[0].length;
|
|
42
|
+
const blockEnd = i + 1 < matches.length ? matches[i + 1].index! : text.length;
|
|
43
|
+
const block = text.slice(blockStart, blockEnd);
|
|
44
|
+
|
|
45
|
+
const idMatch = ID_PATTERN.exec(block);
|
|
46
|
+
if (!idMatch) {
|
|
47
|
+
throw new Error(`Missing id field for ${match[1]} in ${filePath}`);
|
|
48
|
+
}
|
|
49
|
+
if (nextId > endId) {
|
|
50
|
+
throw new Error(`ID range exhausted for category ${category}`);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const newBlock =
|
|
54
|
+
block.slice(0, idMatch.index) +
|
|
55
|
+
`id: ${nextId}` +
|
|
56
|
+
block.slice(idMatch.index + idMatch[0].length);
|
|
57
|
+
|
|
58
|
+
outParts.push(text.slice(cursor, blockStart));
|
|
59
|
+
outParts.push(newBlock);
|
|
60
|
+
cursor = blockEnd;
|
|
61
|
+
|
|
62
|
+
entries.push({
|
|
63
|
+
code: match[1],
|
|
64
|
+
category,
|
|
65
|
+
id: nextId,
|
|
66
|
+
});
|
|
67
|
+
nextId += 1;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
outParts.push(text.slice(cursor));
|
|
71
|
+
return { text: outParts.join(""), entries };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function main(): void {
|
|
75
|
+
const allEntries: AssignedEntry[] = [];
|
|
76
|
+
const files: Array<[string, string]> = [
|
|
77
|
+
["authentication.ts", "authentication"],
|
|
78
|
+
["configuration.ts", "configuration"],
|
|
79
|
+
["injection.ts", "injection"],
|
|
80
|
+
["xss.ts", "xss"],
|
|
81
|
+
["ssrf.ts", "ssrf"],
|
|
82
|
+
["sensitive-paths.ts", "sensitive-paths"],
|
|
83
|
+
];
|
|
84
|
+
|
|
85
|
+
for (const [fileName, category] of files) {
|
|
86
|
+
const filePath = path.join(CATEGORIES_DIR, fileName);
|
|
87
|
+
if (!fs.existsSync(filePath)) {
|
|
88
|
+
throw new Error(`Missing category file: ${filePath}`);
|
|
89
|
+
}
|
|
90
|
+
const { text, entries } = assignIdsForFile(filePath, category);
|
|
91
|
+
fs.writeFileSync(filePath, text);
|
|
92
|
+
allEntries.push(...entries);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const registry = {
|
|
96
|
+
ranges: Object.fromEntries(
|
|
97
|
+
Object.entries(RANGES).map(([key, value]) => [key, Array.from(value)])
|
|
98
|
+
),
|
|
99
|
+
entries: allEntries,
|
|
100
|
+
};
|
|
101
|
+
fs.writeFileSync(REGISTRY_PATH, JSON.stringify(registry, null, 2));
|
|
102
|
+
console.log(`Wrote ${allEntries.length} entries to ${REGISTRY_PATH}`);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
main();
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
const ROOT = path.resolve("D:/new-git-project/agents/shared/vulnerability-registry");
|
|
5
|
+
const REGISTRY_PATH = path.join(ROOT, "src", "id-registry.json");
|
|
6
|
+
|
|
7
|
+
type RegistryEntry = {
|
|
8
|
+
id: number;
|
|
9
|
+
code: string;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
function main(): void {
|
|
13
|
+
if (!fs.existsSync(REGISTRY_PATH)) {
|
|
14
|
+
throw new Error(`Missing registry file: ${REGISTRY_PATH}`);
|
|
15
|
+
}
|
|
16
|
+
const raw = fs.readFileSync(REGISTRY_PATH, "utf-8");
|
|
17
|
+
const data = JSON.parse(raw);
|
|
18
|
+
const entries: RegistryEntry[] = data.entries ?? [];
|
|
19
|
+
|
|
20
|
+
const seen = new Map<number, string>();
|
|
21
|
+
const duplicates = new Map<number, string[]>();
|
|
22
|
+
|
|
23
|
+
for (const entry of entries) {
|
|
24
|
+
if (seen.has(entry.id)) {
|
|
25
|
+
const existing = seen.get(entry.id)!;
|
|
26
|
+
const list = duplicates.get(entry.id) ?? [existing];
|
|
27
|
+
list.push(entry.code);
|
|
28
|
+
duplicates.set(entry.id, list);
|
|
29
|
+
} else {
|
|
30
|
+
seen.set(entry.id, entry.code);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (duplicates.size > 0) {
|
|
35
|
+
const lines: string[] = [];
|
|
36
|
+
for (const [id, codes] of Array.from(duplicates.entries()).sort((a, b) => a[0] - b[0])) {
|
|
37
|
+
lines.push(`${id}: ${codes.join(", ")}`);
|
|
38
|
+
}
|
|
39
|
+
throw new Error(`Duplicate vulnerability IDs found:\n${lines.join("\n")}`);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
console.log("OK: No duplicate vulnerability IDs in id-registry.json");
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
main();
|
|
@@ -12,7 +12,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
12
12
|
// JWT VULNERABILITIES
|
|
13
13
|
// ========================================
|
|
14
14
|
[VulnerabilityCode.JWT_NONE_ALGORITHM]: {
|
|
15
|
-
id:
|
|
15
|
+
id: 100,
|
|
16
16
|
code: VulnerabilityCode.JWT_NONE_ALGORITHM,
|
|
17
17
|
title: 'JWT Vulnerability - None Algorithm Attack',
|
|
18
18
|
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.',
|
|
@@ -35,7 +35,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
35
35
|
},
|
|
36
36
|
|
|
37
37
|
[VulnerabilityCode.JWT_WEAK_SECRET]: {
|
|
38
|
-
id:
|
|
38
|
+
id: 101,
|
|
39
39
|
code: VulnerabilityCode.JWT_WEAK_SECRET,
|
|
40
40
|
title: 'JWT Vulnerability - Weak Secret Key',
|
|
41
41
|
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.',
|
|
@@ -58,7 +58,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
58
58
|
},
|
|
59
59
|
|
|
60
60
|
[VulnerabilityCode.JWT_KEY_CONFUSION]: {
|
|
61
|
-
id:
|
|
61
|
+
id: 102,
|
|
62
62
|
code: VulnerabilityCode.JWT_KEY_CONFUSION,
|
|
63
63
|
title: 'JWT Vulnerability - Algorithm Confusion Attack',
|
|
64
64
|
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.',
|
|
@@ -84,7 +84,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
84
84
|
// BROKEN ACCESS CONTROL
|
|
85
85
|
// ========================================
|
|
86
86
|
[VulnerabilityCode.BAC_ANONYMOUS_ACCESS]: {
|
|
87
|
-
id:
|
|
87
|
+
id: 103,
|
|
88
88
|
code: VulnerabilityCode.BAC_ANONYMOUS_ACCESS,
|
|
89
89
|
title: 'Broken Access Control - Anonymous Access',
|
|
90
90
|
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.',
|
|
@@ -107,7 +107,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
107
107
|
},
|
|
108
108
|
|
|
109
109
|
[VulnerabilityCode.BAC_IDOR]: {
|
|
110
|
-
id:
|
|
110
|
+
id: 104,
|
|
111
111
|
code: VulnerabilityCode.BAC_IDOR,
|
|
112
112
|
title: 'Broken Access Control - Insecure Direct Object Reference',
|
|
113
113
|
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.',
|
|
@@ -130,7 +130,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
130
130
|
},
|
|
131
131
|
|
|
132
132
|
[VulnerabilityCode.BAC_VERTICAL_PRIVILEGE]: {
|
|
133
|
-
id:
|
|
133
|
+
id: 105,
|
|
134
134
|
code: VulnerabilityCode.BAC_VERTICAL_PRIVILEGE,
|
|
135
135
|
title: 'Broken Access Control - Vertical Privilege Escalation',
|
|
136
136
|
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.',
|
|
@@ -156,7 +156,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
156
156
|
// MASS ASSIGNMENT
|
|
157
157
|
// ========================================
|
|
158
158
|
[VulnerabilityCode.MASSASSIGN_ROLE_ESCALATION]: {
|
|
159
|
-
id:
|
|
159
|
+
id: 106,
|
|
160
160
|
code: VulnerabilityCode.MASSASSIGN_ROLE_ESCALATION,
|
|
161
161
|
title: 'Mass Assignment - Role Escalation',
|
|
162
162
|
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.',
|
|
@@ -179,7 +179,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
179
179
|
},
|
|
180
180
|
|
|
181
181
|
[VulnerabilityCode.MASSASSIGN_PROTOTYPE_POLLUTION]: {
|
|
182
|
-
id:
|
|
182
|
+
id: 107,
|
|
183
183
|
code: VulnerabilityCode.MASSASSIGN_PROTOTYPE_POLLUTION,
|
|
184
184
|
title: 'Mass Assignment - Prototype Pollution',
|
|
185
185
|
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.',
|
|
@@ -202,7 +202,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
202
202
|
},
|
|
203
203
|
|
|
204
204
|
[VulnerabilityCode.JWT_EXPIRED_TOKEN]: {
|
|
205
|
-
id:
|
|
205
|
+
id: 108,
|
|
206
206
|
code: VulnerabilityCode.JWT_EXPIRED_TOKEN,
|
|
207
207
|
title: 'JWT Vulnerability - Expired Token Accepted',
|
|
208
208
|
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.',
|
|
@@ -225,7 +225,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
225
225
|
},
|
|
226
226
|
|
|
227
227
|
[VulnerabilityCode.JWT_MISSING_CLAIMS]: {
|
|
228
|
-
id:
|
|
228
|
+
id: 109,
|
|
229
229
|
code: VulnerabilityCode.JWT_MISSING_CLAIMS,
|
|
230
230
|
title: 'JWT Vulnerability - Missing Required Claims',
|
|
231
231
|
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.',
|
|
@@ -248,7 +248,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
248
248
|
},
|
|
249
249
|
|
|
250
250
|
[VulnerabilityCode.BAC_HORIZONTAL_PRIVILEGE]: {
|
|
251
|
-
id:
|
|
251
|
+
id: 110,
|
|
252
252
|
code: VulnerabilityCode.BAC_HORIZONTAL_PRIVILEGE,
|
|
253
253
|
title: 'Broken Access Control - Horizontal Privilege Escalation',
|
|
254
254
|
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.',
|
|
@@ -271,7 +271,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
271
271
|
},
|
|
272
272
|
|
|
273
273
|
[VulnerabilityCode.MASSASSIGN_HIDDEN_FIELD]: {
|
|
274
|
-
id:
|
|
274
|
+
id: 111,
|
|
275
275
|
code: VulnerabilityCode.MASSASSIGN_HIDDEN_FIELD,
|
|
276
276
|
title: 'Mass Assignment - Hidden Field Manipulation',
|
|
277
277
|
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.',
|
|
@@ -294,7 +294,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
294
294
|
},
|
|
295
295
|
|
|
296
296
|
[VulnerabilityCode.JWT_CLAIM_TAMPERING]: {
|
|
297
|
-
id:
|
|
297
|
+
id: 112,
|
|
298
298
|
code: VulnerabilityCode.JWT_CLAIM_TAMPERING,
|
|
299
299
|
title: 'JWT - Claim Tampering',
|
|
300
300
|
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.',
|
|
@@ -317,7 +317,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
317
317
|
},
|
|
318
318
|
|
|
319
319
|
[VulnerabilityCode.JWT_KID_INJECTION]: {
|
|
320
|
-
id:
|
|
320
|
+
id: 113,
|
|
321
321
|
code: VulnerabilityCode.JWT_KID_INJECTION,
|
|
322
322
|
title: 'JWT - KID Header Injection',
|
|
323
323
|
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.',
|
|
@@ -340,7 +340,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
340
340
|
},
|
|
341
341
|
|
|
342
342
|
[VulnerabilityCode.JWT_JKU_INJECTION]: {
|
|
343
|
-
id:
|
|
343
|
+
id: 114,
|
|
344
344
|
code: VulnerabilityCode.JWT_JKU_INJECTION,
|
|
345
345
|
title: 'JWT - JKU Header Injection',
|
|
346
346
|
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.',
|
|
@@ -363,7 +363,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
363
363
|
},
|
|
364
364
|
|
|
365
365
|
[VulnerabilityCode.JWT_EMBEDDED_JWK]: {
|
|
366
|
-
id:
|
|
366
|
+
id: 115,
|
|
367
367
|
code: VulnerabilityCode.JWT_EMBEDDED_JWK,
|
|
368
368
|
title: 'JWT - Embedded JWK Injection',
|
|
369
369
|
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.',
|
|
@@ -386,7 +386,7 @@ export const AUTH_VULNERABILITIES: Record<string, VulnerabilityDefinition> = {
|
|
|
386
386
|
},
|
|
387
387
|
|
|
388
388
|
[VulnerabilityCode.JWT_X5C_INJECTION]: {
|
|
389
|
-
id:
|
|
389
|
+
id: 116,
|
|
390
390
|
code: VulnerabilityCode.JWT_X5C_INJECTION,
|
|
391
391
|
title: 'JWT - X5C Header Injection',
|
|
392
392
|
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.',
|