@zerothreatai/vulnerability-registry 2.0.0 → 4.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 -0
- package/dist/categories/configuration.js +501 -0
- package/dist/categories/injection.js +34 -0
- package/dist/categories/sensitive-paths.js +84 -0
- package/dist/categories/ssrf.js +11 -0
- package/dist/categories/xss.js +15 -0
- package/dist/category.d.ts +6 -0
- package/dist/category.js +15 -0
- package/dist/error-codes.d.ts +20 -0
- package/dist/error-codes.js +20 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.js +5 -1
- package/dist/scanner.d.ts +6 -0
- package/dist/scanner.js +22 -0
- package/dist/types.d.ts +2 -0
- package/dist-cjs/categories/authentication.js +17 -0
- package/dist-cjs/categories/configuration.js +501 -0
- package/dist-cjs/categories/injection.js +34 -0
- package/dist-cjs/categories/sensitive-paths.js +84 -0
- package/dist-cjs/categories/ssrf.js +11 -0
- package/dist-cjs/categories/xss.js +15 -0
- package/dist-cjs/category.js +18 -0
- package/dist-cjs/error-codes.js +20 -0
- package/dist-cjs/index.js +7 -1
- package/dist-cjs/scanner.js +25 -0
- package/package.json +1 -1
- package/src/categories/authentication.js +54 -40
- package/src/categories/authentication.ts +134 -117
- package/src/categories/configuration.js +990 -114
- package/src/categories/configuration.ts +1625 -1104
- package/src/categories/injection.js +105 -74
- package/src/categories/injection.ts +129 -95
- package/src/categories/sensitive-paths.js +255 -174
- package/src/categories/sensitive-paths.ts +84 -0
- package/src/categories/ssrf.js +36 -28
- package/src/categories/ssrf.ts +11 -0
- package/src/categories/xss.js +47 -35
- package/src/categories/xss.ts +15 -0
- package/src/category.ts +16 -0
- package/src/error-codes.d.ts +38 -0
- package/src/error-codes.js +41 -6
- package/src/error-codes.ts +25 -5
- package/src/index.js +33 -48
- package/src/index.ts +20 -14
- package/src/scanner.ts +23 -0
- package/src/types.d.ts +2 -0
- package/src/types.js +1 -2
- package/src/types.ts +4 -2
- package/zerothreatai-vulnerability-registry-4npm .0.0.tgz +0 -0
|
@@ -14,6 +14,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
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.',
|
|
16
16
|
severity: 'critical',
|
|
17
|
+
levelId: 1,
|
|
17
18
|
category: 'ssrf',
|
|
18
19
|
scanner: 'ssrf',
|
|
19
20
|
cvss: {
|
|
@@ -35,6 +36,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
35
36
|
title: 'Server-Side Request Forgery - Internal Service Access',
|
|
36
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.',
|
|
37
38
|
severity: 'high',
|
|
39
|
+
levelId: 2,
|
|
38
40
|
category: 'ssrf',
|
|
39
41
|
scanner: 'ssrf',
|
|
40
42
|
cvss: {
|
|
@@ -56,6 +58,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
56
58
|
title: 'Server-Side Request Forgery - Protocol Smuggling',
|
|
57
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.',
|
|
58
60
|
severity: 'high',
|
|
61
|
+
levelId: 2,
|
|
59
62
|
category: 'ssrf',
|
|
60
63
|
scanner: 'ssrf',
|
|
61
64
|
cvss: {
|
|
@@ -77,6 +80,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
77
80
|
title: 'Server-Side Request Forgery - Blind OOB',
|
|
78
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.',
|
|
79
82
|
severity: 'medium',
|
|
83
|
+
levelId: 3,
|
|
80
84
|
category: 'ssrf',
|
|
81
85
|
scanner: 'ssrf',
|
|
82
86
|
cvss: {
|
|
@@ -101,6 +105,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
101
105
|
title: 'Open Redirect - HTTP Header Injection',
|
|
102
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.',
|
|
103
107
|
severity: 'medium',
|
|
108
|
+
levelId: 3,
|
|
104
109
|
category: 'business_logic',
|
|
105
110
|
scanner: 'redirect-route',
|
|
106
111
|
cvss: {
|
|
@@ -122,6 +127,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
122
127
|
title: 'Open Redirect - JavaScript Navigation',
|
|
123
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.',
|
|
124
129
|
severity: 'medium',
|
|
130
|
+
levelId: 3,
|
|
125
131
|
category: 'business_logic',
|
|
126
132
|
scanner: 'redirect-route',
|
|
127
133
|
cvss: {
|
|
@@ -146,6 +152,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
146
152
|
title: 'Host Header Injection - Cache Poisoning',
|
|
147
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.',
|
|
148
154
|
severity: 'high',
|
|
155
|
+
levelId: 2,
|
|
149
156
|
category: 'configuration',
|
|
150
157
|
scanner: 'host-header',
|
|
151
158
|
cvss: {
|
|
@@ -167,6 +174,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
167
174
|
title: 'Host Header Injection - Password Reset Poisoning',
|
|
168
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.',
|
|
169
176
|
severity: 'high',
|
|
177
|
+
levelId: 2,
|
|
170
178
|
category: 'configuration',
|
|
171
179
|
scanner: 'host-header',
|
|
172
180
|
cvss: {
|
|
@@ -188,6 +196,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
188
196
|
title: 'Server-Side Request Forgery - Filter Bypass',
|
|
189
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.',
|
|
190
198
|
severity: 'high',
|
|
199
|
+
levelId: 2,
|
|
191
200
|
category: 'ssrf',
|
|
192
201
|
scanner: 'ssrf',
|
|
193
202
|
cvss: {
|
|
@@ -209,6 +218,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
209
218
|
title: 'Open Redirect - Meta Refresh',
|
|
210
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.',
|
|
211
220
|
severity: 'low',
|
|
221
|
+
levelId: 4,
|
|
212
222
|
category: 'business_logic',
|
|
213
223
|
scanner: 'redirect-route',
|
|
214
224
|
cvss: {
|
|
@@ -230,6 +240,7 @@ exports.SSRF_VULNERABILITIES = {
|
|
|
230
240
|
title: 'Host Header Injection - Open Redirect',
|
|
231
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.',
|
|
232
242
|
severity: 'medium',
|
|
243
|
+
levelId: 3,
|
|
233
244
|
category: 'configuration',
|
|
234
245
|
scanner: 'host-header',
|
|
235
246
|
cvss: {
|
|
@@ -14,6 +14,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
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.',
|
|
16
16
|
severity: 'medium',
|
|
17
|
+
levelId: 3,
|
|
17
18
|
category: 'xss',
|
|
18
19
|
scanner: 'xss',
|
|
19
20
|
cvss: {
|
|
@@ -35,6 +36,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
35
36
|
title: 'Cross-Site Scripting - Stored',
|
|
36
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.',
|
|
37
38
|
severity: 'high',
|
|
39
|
+
levelId: 2,
|
|
38
40
|
category: 'xss',
|
|
39
41
|
scanner: 'xss',
|
|
40
42
|
cvss: {
|
|
@@ -56,6 +58,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
56
58
|
title: 'Cross-Site Scripting - DOM Based',
|
|
57
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.',
|
|
58
60
|
severity: 'medium',
|
|
61
|
+
levelId: 3,
|
|
59
62
|
category: 'xss',
|
|
60
63
|
scanner: 'xss',
|
|
61
64
|
cvss: {
|
|
@@ -77,6 +80,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
77
80
|
title: 'Cross-Site Scripting - SVG Injection',
|
|
78
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.',
|
|
79
82
|
severity: 'high',
|
|
83
|
+
levelId: 2,
|
|
80
84
|
category: 'xss',
|
|
81
85
|
scanner: 'xss',
|
|
82
86
|
cvss: {
|
|
@@ -98,6 +102,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
98
102
|
title: 'Cross-Site Scripting - Angular Template Injection',
|
|
99
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.',
|
|
100
104
|
severity: 'high',
|
|
105
|
+
levelId: 2,
|
|
101
106
|
category: 'xss',
|
|
102
107
|
scanner: 'xss',
|
|
103
108
|
cvss: {
|
|
@@ -120,6 +125,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
120
125
|
title: 'Cross-Site Scripting - CSP Bypass',
|
|
121
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.',
|
|
122
127
|
severity: 'high',
|
|
128
|
+
levelId: 2,
|
|
123
129
|
category: 'xss',
|
|
124
130
|
scanner: 'xss',
|
|
125
131
|
cvss: {
|
|
@@ -141,6 +147,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
141
147
|
title: 'Cross-Site Scripting - JavaScript Context',
|
|
142
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.',
|
|
143
149
|
severity: 'high',
|
|
150
|
+
levelId: 2,
|
|
144
151
|
category: 'xss',
|
|
145
152
|
scanner: 'xss',
|
|
146
153
|
cvss: {
|
|
@@ -162,6 +169,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
162
169
|
title: 'Cross-Site Scripting - Event Handler Injection',
|
|
163
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.',
|
|
164
171
|
severity: 'high',
|
|
172
|
+
levelId: 2,
|
|
165
173
|
category: 'xss',
|
|
166
174
|
scanner: 'xss',
|
|
167
175
|
cvss: {
|
|
@@ -183,6 +191,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
183
191
|
title: 'Cross-Site Scripting - Script Tag Injection',
|
|
184
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.',
|
|
185
193
|
severity: 'high',
|
|
194
|
+
levelId: 2,
|
|
186
195
|
category: 'xss',
|
|
187
196
|
scanner: 'xss',
|
|
188
197
|
cvss: {
|
|
@@ -204,6 +213,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
204
213
|
title: 'Cross-Site Scripting - HTML Injection',
|
|
205
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.',
|
|
206
215
|
severity: 'medium',
|
|
216
|
+
levelId: 3,
|
|
207
217
|
category: 'xss',
|
|
208
218
|
scanner: 'xss',
|
|
209
219
|
cvss: {
|
|
@@ -225,6 +235,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
225
235
|
title: 'Cross-Site Scripting - Attribute Injection',
|
|
226
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.',
|
|
227
237
|
severity: 'medium',
|
|
238
|
+
levelId: 3,
|
|
228
239
|
category: 'xss',
|
|
229
240
|
scanner: 'xss',
|
|
230
241
|
cvss: {
|
|
@@ -246,6 +257,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
246
257
|
title: 'Cross-Site Scripting - CSS Injection',
|
|
247
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.',
|
|
248
259
|
severity: 'medium',
|
|
260
|
+
levelId: 3,
|
|
249
261
|
category: 'xss',
|
|
250
262
|
scanner: 'xss',
|
|
251
263
|
cvss: {
|
|
@@ -267,6 +279,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
267
279
|
title: 'Cross-Site Scripting - Template Literal Injection',
|
|
268
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.',
|
|
269
281
|
severity: 'high',
|
|
282
|
+
levelId: 2,
|
|
270
283
|
category: 'xss',
|
|
271
284
|
scanner: 'xss',
|
|
272
285
|
cvss: {
|
|
@@ -288,6 +301,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
288
301
|
title: 'Cross-Site Scripting - Mutation XSS',
|
|
289
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.',
|
|
290
303
|
severity: 'high',
|
|
304
|
+
levelId: 2,
|
|
291
305
|
category: 'xss',
|
|
292
306
|
scanner: 'xss',
|
|
293
307
|
cvss: {
|
|
@@ -309,6 +323,7 @@ exports.XSS_VULNERABILITIES = {
|
|
|
309
323
|
title: 'Cross-Site Scripting - Vue.js Template Injection',
|
|
310
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.',
|
|
311
325
|
severity: 'high',
|
|
326
|
+
levelId: 2,
|
|
312
327
|
category: 'xss',
|
|
313
328
|
scanner: 'xss',
|
|
314
329
|
cvss: {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Category registry - human-friendly titles for categories.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CATEGORY_REGISTRY = void 0;
|
|
7
|
+
exports.CATEGORY_REGISTRY = {
|
|
8
|
+
"injection": { title: "Injection" },
|
|
9
|
+
"xss": { title: "Cross-Site Scripting" },
|
|
10
|
+
"authentication": { title: "Authentication" },
|
|
11
|
+
"access_control": { title: "Access Control" },
|
|
12
|
+
"configuration": { title: "Configuration" },
|
|
13
|
+
"information_disclosure": { title: "Information Disclosure" },
|
|
14
|
+
"cryptographic": { title: "Cryptographic" },
|
|
15
|
+
"business_logic": { title: "Business Logic" },
|
|
16
|
+
"ssrf": { title: "Server-Side Request Forgery" },
|
|
17
|
+
"file_inclusion": { title: "File Inclusion" },
|
|
18
|
+
};
|
package/dist-cjs/error-codes.js
CHANGED
|
@@ -175,6 +175,26 @@ var VulnerabilityCode;
|
|
|
175
175
|
// ========================================
|
|
176
176
|
// DIRECTORY BROWSING (DIRBROWSE_*)
|
|
177
177
|
// ========================================
|
|
178
|
+
VulnerabilityCode["DIRBROWSE_GENERIC"] = "DIRBROWSE_GENERIC";
|
|
179
|
+
VulnerabilityCode["DIRBROWSE_GENERIC_SENSITIVE"] = "DIRBROWSE_GENERIC_SENSITIVE";
|
|
180
|
+
VulnerabilityCode["DIRBROWSE_APACHE"] = "DIRBROWSE_APACHE";
|
|
181
|
+
VulnerabilityCode["DIRBROWSE_APACHE_SENSITIVE"] = "DIRBROWSE_APACHE_SENSITIVE";
|
|
182
|
+
VulnerabilityCode["DIRBROWSE_NGINX"] = "DIRBROWSE_NGINX";
|
|
183
|
+
VulnerabilityCode["DIRBROWSE_NGINX_SENSITIVE"] = "DIRBROWSE_NGINX_SENSITIVE";
|
|
184
|
+
VulnerabilityCode["DIRBROWSE_IIS"] = "DIRBROWSE_IIS";
|
|
185
|
+
VulnerabilityCode["DIRBROWSE_IIS_SENSITIVE"] = "DIRBROWSE_IIS_SENSITIVE";
|
|
186
|
+
VulnerabilityCode["DIRBROWSE_TOMCAT"] = "DIRBROWSE_TOMCAT";
|
|
187
|
+
VulnerabilityCode["DIRBROWSE_TOMCAT_SENSITIVE"] = "DIRBROWSE_TOMCAT_SENSITIVE";
|
|
188
|
+
VulnerabilityCode["DIRBROWSE_CADDY"] = "DIRBROWSE_CADDY";
|
|
189
|
+
VulnerabilityCode["DIRBROWSE_CADDY_SENSITIVE"] = "DIRBROWSE_CADDY_SENSITIVE";
|
|
190
|
+
VulnerabilityCode["DIRBROWSE_WEBDAV"] = "DIRBROWSE_WEBDAV";
|
|
191
|
+
VulnerabilityCode["DIRBROWSE_WEBDAV_SENSITIVE"] = "DIRBROWSE_WEBDAV_SENSITIVE";
|
|
192
|
+
VulnerabilityCode["DIRBROWSE_S3"] = "DIRBROWSE_S3";
|
|
193
|
+
VulnerabilityCode["DIRBROWSE_S3_SENSITIVE"] = "DIRBROWSE_S3_SENSITIVE";
|
|
194
|
+
VulnerabilityCode["DIRBROWSE_GCS"] = "DIRBROWSE_GCS";
|
|
195
|
+
VulnerabilityCode["DIRBROWSE_GCS_SENSITIVE"] = "DIRBROWSE_GCS_SENSITIVE";
|
|
196
|
+
VulnerabilityCode["DIRBROWSE_AZURE_BLOB"] = "DIRBROWSE_AZURE_BLOB";
|
|
197
|
+
VulnerabilityCode["DIRBROWSE_AZURE_BLOB_SENSITIVE"] = "DIRBROWSE_AZURE_BLOB_SENSITIVE";
|
|
178
198
|
VulnerabilityCode["DIRBROWSE_ENABLED"] = "DIRBROWSE_ENABLED";
|
|
179
199
|
VulnerabilityCode["DIRBROWSE_SENSITIVE"] = "DIRBROWSE_SENSITIVE";
|
|
180
200
|
// ========================================
|
package/dist-cjs/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Exports all vulnerability codes, definitions, and lookup utilities
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.SENSITIVE_PATH_VULNERABILITIES = exports.CONFIG_VULNERABILITIES = exports.AUTH_VULNERABILITIES = exports.SSRF_VULNERABILITIES = exports.XSS_VULNERABILITIES = exports.INJECTION_VULNERABILITIES = exports.VulnerabilityCode = exports.VULNERABILITY_REGISTRY = void 0;
|
|
8
|
+
exports.SCANNER_REGISTRY = exports.CATEGORY_REGISTRY = exports.SENSITIVE_PATH_VULNERABILITIES = exports.CONFIG_VULNERABILITIES = exports.AUTH_VULNERABILITIES = exports.SSRF_VULNERABILITIES = exports.XSS_VULNERABILITIES = exports.INJECTION_VULNERABILITIES = exports.VulnerabilityCode = exports.VULNERABILITY_REGISTRY = void 0;
|
|
9
9
|
exports.getVulnerabilityDefinition = getVulnerabilityDefinition;
|
|
10
10
|
exports.getVulnerabilitiesByScanner = getVulnerabilitiesByScanner;
|
|
11
11
|
exports.getVulnerabilitiesByCategory = getVulnerabilitiesByCategory;
|
|
@@ -27,6 +27,10 @@ const configuration_js_1 = require("./categories/configuration.js");
|
|
|
27
27
|
Object.defineProperty(exports, "CONFIG_VULNERABILITIES", { enumerable: true, get: function () { return configuration_js_1.CONFIG_VULNERABILITIES; } });
|
|
28
28
|
const sensitive_paths_js_1 = require("./categories/sensitive-paths.js");
|
|
29
29
|
Object.defineProperty(exports, "SENSITIVE_PATH_VULNERABILITIES", { enumerable: true, get: function () { return sensitive_paths_js_1.SENSITIVE_PATH_VULNERABILITIES; } });
|
|
30
|
+
const category_js_1 = require("./category.js");
|
|
31
|
+
Object.defineProperty(exports, "CATEGORY_REGISTRY", { enumerable: true, get: function () { return category_js_1.CATEGORY_REGISTRY; } });
|
|
32
|
+
const scanner_js_1 = require("./scanner.js");
|
|
33
|
+
Object.defineProperty(exports, "SCANNER_REGISTRY", { enumerable: true, get: function () { return scanner_js_1.SCANNER_REGISTRY; } });
|
|
30
34
|
/**
|
|
31
35
|
* Complete vulnerability registry combining all categories
|
|
32
36
|
*/
|
|
@@ -104,4 +108,6 @@ exports.default = {
|
|
|
104
108
|
getAllVulnerabilityCodes,
|
|
105
109
|
getVulnerabilityCount,
|
|
106
110
|
createFinding,
|
|
111
|
+
CATEGORY_REGISTRY: category_js_1.CATEGORY_REGISTRY,
|
|
112
|
+
SCANNER_REGISTRY: scanner_js_1.SCANNER_REGISTRY,
|
|
107
113
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Scanner registry - human-friendly titles for scanners.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SCANNER_REGISTRY = void 0;
|
|
7
|
+
exports.SCANNER_REGISTRY = {
|
|
8
|
+
"broken-access": { title: "Broken Access" },
|
|
9
|
+
"command-injection": { title: "Command Injection" },
|
|
10
|
+
"deserialization": { title: "Deserialization" },
|
|
11
|
+
"directory-browsing": { title: "Directory Browsing" },
|
|
12
|
+
"host-header": { title: "Host Header" },
|
|
13
|
+
"jwt": { title: "JSON WEB TOKEN" },
|
|
14
|
+
"local-file-inclusion": { title: "Local File Inclusion" },
|
|
15
|
+
"model-state": { title: "Model State" },
|
|
16
|
+
"redirect-route": { title: "Redirect Route" },
|
|
17
|
+
"security-headers": { title: "Security Headers" },
|
|
18
|
+
"sensitive-path-scout": { title: "Sensitive Path Scout" },
|
|
19
|
+
"sql-injection": { title: "SQL Injection" },
|
|
20
|
+
"ssrf": { title: "SSRF" },
|
|
21
|
+
"ssti": { title: "SSTI" },
|
|
22
|
+
"xpath-injection": { title: "XPath Injection" },
|
|
23
|
+
"xss": { title: "XSS" },
|
|
24
|
+
"xxe": { title: "XXE" },
|
|
25
|
+
};
|
package/package.json
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Vulnerability Registry - Authentication & Access Control
|
|
4
3
|
*
|
|
5
4
|
* Definitions for JWT, Broken Access Control, and related issues
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const error_codes_js_1 = require("../error-codes.js");
|
|
10
|
-
exports.AUTH_VULNERABILITIES = {
|
|
6
|
+
import { VulnerabilityCode } from '../error-codes.js';
|
|
7
|
+
export const AUTH_VULNERABILITIES = {
|
|
11
8
|
// ========================================
|
|
12
9
|
// JWT VULNERABILITIES
|
|
13
10
|
// ========================================
|
|
14
|
-
[
|
|
11
|
+
[VulnerabilityCode.JWT_NONE_ALGORITHM]: {
|
|
15
12
|
id: 57,
|
|
16
|
-
code:
|
|
13
|
+
code: VulnerabilityCode.JWT_NONE_ALGORITHM,
|
|
17
14
|
title: 'JWT Vulnerability - None Algorithm Attack',
|
|
18
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.',
|
|
19
16
|
severity: 'critical',
|
|
17
|
+
levelId: 1,
|
|
20
18
|
category: 'authentication',
|
|
21
19
|
scanner: 'jwt',
|
|
22
20
|
cvss: {
|
|
@@ -32,12 +30,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
32
30
|
],
|
|
33
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.',
|
|
34
32
|
},
|
|
35
|
-
[
|
|
33
|
+
[VulnerabilityCode.JWT_WEAK_SECRET]: {
|
|
36
34
|
id: 58,
|
|
37
|
-
code:
|
|
35
|
+
code: VulnerabilityCode.JWT_WEAK_SECRET,
|
|
38
36
|
title: 'JWT Vulnerability - Weak Secret Key',
|
|
39
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.',
|
|
40
38
|
severity: 'high',
|
|
39
|
+
levelId: 2,
|
|
41
40
|
category: 'authentication',
|
|
42
41
|
scanner: 'jwt',
|
|
43
42
|
cvss: {
|
|
@@ -53,12 +52,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
53
52
|
],
|
|
54
53
|
remediation: 'Use cryptographically strong random secrets of at least 256 bits. Consider using asymmetric algorithms (RS256, ES256) instead of HMAC. Rotate secrets periodically.',
|
|
55
54
|
},
|
|
56
|
-
[
|
|
55
|
+
[VulnerabilityCode.JWT_KEY_CONFUSION]: {
|
|
57
56
|
id: 59,
|
|
58
|
-
code:
|
|
57
|
+
code: VulnerabilityCode.JWT_KEY_CONFUSION,
|
|
59
58
|
title: 'JWT Vulnerability - Algorithm Confusion Attack',
|
|
60
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.',
|
|
61
60
|
severity: 'critical',
|
|
61
|
+
levelId: 1,
|
|
62
62
|
category: 'authentication',
|
|
63
63
|
scanner: 'jwt',
|
|
64
64
|
cvss: {
|
|
@@ -77,12 +77,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
77
77
|
// ========================================
|
|
78
78
|
// BROKEN ACCESS CONTROL
|
|
79
79
|
// ========================================
|
|
80
|
-
[
|
|
80
|
+
[VulnerabilityCode.BAC_ANONYMOUS_ACCESS]: {
|
|
81
81
|
id: 60,
|
|
82
|
-
code:
|
|
82
|
+
code: VulnerabilityCode.BAC_ANONYMOUS_ACCESS,
|
|
83
83
|
title: 'Broken Access Control - Anonymous Access',
|
|
84
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
85
|
severity: 'high',
|
|
86
|
+
levelId: 2,
|
|
86
87
|
category: 'access_control',
|
|
87
88
|
scanner: 'broken-access',
|
|
88
89
|
cvss: {
|
|
@@ -98,12 +99,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
98
99
|
],
|
|
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.',
|
|
100
101
|
},
|
|
101
|
-
[
|
|
102
|
+
[VulnerabilityCode.BAC_IDOR]: {
|
|
102
103
|
id: 61,
|
|
103
|
-
code:
|
|
104
|
+
code: VulnerabilityCode.BAC_IDOR,
|
|
104
105
|
title: 'Broken Access Control - Insecure Direct Object Reference',
|
|
105
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.',
|
|
106
107
|
severity: 'high',
|
|
108
|
+
levelId: 2,
|
|
107
109
|
category: 'access_control',
|
|
108
110
|
scanner: 'broken-access',
|
|
109
111
|
cvss: {
|
|
@@ -119,12 +121,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
119
121
|
],
|
|
120
122
|
remediation: 'Implement proper authorization checks verifying resource ownership. Use unpredictable identifiers (UUIDs). Apply consistent access control policies across all endpoints.',
|
|
121
123
|
},
|
|
122
|
-
[
|
|
124
|
+
[VulnerabilityCode.BAC_VERTICAL_PRIVILEGE]: {
|
|
123
125
|
id: 62,
|
|
124
|
-
code:
|
|
126
|
+
code: VulnerabilityCode.BAC_VERTICAL_PRIVILEGE,
|
|
125
127
|
title: 'Broken Access Control - Vertical Privilege Escalation',
|
|
126
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.',
|
|
127
129
|
severity: 'critical',
|
|
130
|
+
levelId: 1,
|
|
128
131
|
category: 'access_control',
|
|
129
132
|
scanner: 'broken-access',
|
|
130
133
|
cvss: {
|
|
@@ -143,12 +146,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
143
146
|
// ========================================
|
|
144
147
|
// MASS ASSIGNMENT
|
|
145
148
|
// ========================================
|
|
146
|
-
[
|
|
149
|
+
[VulnerabilityCode.MASSASSIGN_ROLE_ESCALATION]: {
|
|
147
150
|
id: 63,
|
|
148
|
-
code:
|
|
151
|
+
code: VulnerabilityCode.MASSASSIGN_ROLE_ESCALATION,
|
|
149
152
|
title: 'Mass Assignment - Role Escalation',
|
|
150
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.',
|
|
151
154
|
severity: 'high',
|
|
155
|
+
levelId: 2,
|
|
152
156
|
category: 'access_control',
|
|
153
157
|
scanner: 'model-state',
|
|
154
158
|
cvss: {
|
|
@@ -164,12 +168,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
164
168
|
],
|
|
165
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.',
|
|
166
170
|
},
|
|
167
|
-
[
|
|
171
|
+
[VulnerabilityCode.MASSASSIGN_PROTOTYPE_POLLUTION]: {
|
|
168
172
|
id: 64,
|
|
169
|
-
code:
|
|
173
|
+
code: VulnerabilityCode.MASSASSIGN_PROTOTYPE_POLLUTION,
|
|
170
174
|
title: 'Mass Assignment - Prototype Pollution',
|
|
171
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.',
|
|
172
176
|
severity: 'high',
|
|
177
|
+
levelId: 2,
|
|
173
178
|
category: 'access_control',
|
|
174
179
|
scanner: 'model-state',
|
|
175
180
|
cvss: {
|
|
@@ -185,12 +190,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
185
190
|
],
|
|
186
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.',
|
|
187
192
|
},
|
|
188
|
-
[
|
|
193
|
+
[VulnerabilityCode.JWT_EXPIRED_TOKEN]: {
|
|
189
194
|
id: 65,
|
|
190
|
-
code:
|
|
195
|
+
code: VulnerabilityCode.JWT_EXPIRED_TOKEN,
|
|
191
196
|
title: 'JWT Vulnerability - Expired Token Accepted',
|
|
192
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.',
|
|
193
198
|
severity: 'medium',
|
|
199
|
+
levelId: 3,
|
|
194
200
|
category: 'authentication',
|
|
195
201
|
scanner: 'jwt',
|
|
196
202
|
cvss: {
|
|
@@ -206,12 +212,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
206
212
|
],
|
|
207
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.',
|
|
208
214
|
},
|
|
209
|
-
[
|
|
215
|
+
[VulnerabilityCode.JWT_MISSING_CLAIMS]: {
|
|
210
216
|
id: 66,
|
|
211
|
-
code:
|
|
217
|
+
code: VulnerabilityCode.JWT_MISSING_CLAIMS,
|
|
212
218
|
title: 'JWT Vulnerability - Missing Required Claims',
|
|
213
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.',
|
|
214
220
|
severity: 'medium',
|
|
221
|
+
levelId: 3,
|
|
215
222
|
category: 'authentication',
|
|
216
223
|
scanner: 'jwt',
|
|
217
224
|
cvss: {
|
|
@@ -227,12 +234,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
227
234
|
],
|
|
228
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.',
|
|
229
236
|
},
|
|
230
|
-
[
|
|
237
|
+
[VulnerabilityCode.BAC_HORIZONTAL_PRIVILEGE]: {
|
|
231
238
|
id: 67,
|
|
232
|
-
code:
|
|
239
|
+
code: VulnerabilityCode.BAC_HORIZONTAL_PRIVILEGE,
|
|
233
240
|
title: 'Broken Access Control - Horizontal Privilege Escalation',
|
|
234
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.',
|
|
235
242
|
severity: 'high',
|
|
243
|
+
levelId: 2,
|
|
236
244
|
category: 'access_control',
|
|
237
245
|
scanner: 'broken-access',
|
|
238
246
|
cvss: {
|
|
@@ -248,12 +256,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
248
256
|
],
|
|
249
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.',
|
|
250
258
|
},
|
|
251
|
-
[
|
|
259
|
+
[VulnerabilityCode.MASSASSIGN_HIDDEN_FIELD]: {
|
|
252
260
|
id: 68,
|
|
253
|
-
code:
|
|
261
|
+
code: VulnerabilityCode.MASSASSIGN_HIDDEN_FIELD,
|
|
254
262
|
title: 'Mass Assignment - Hidden Field Manipulation',
|
|
255
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.',
|
|
256
264
|
severity: 'medium',
|
|
265
|
+
levelId: 3,
|
|
257
266
|
category: 'access_control',
|
|
258
267
|
scanner: 'model-state',
|
|
259
268
|
cvss: {
|
|
@@ -269,12 +278,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
269
278
|
],
|
|
270
279
|
remediation: 'Never trust client-provided values for server-computed fields. Use explicit DTOs with allowlisted fields. Recompute amounts, timestamps, and IDs server-side.',
|
|
271
280
|
},
|
|
272
|
-
[
|
|
281
|
+
[VulnerabilityCode.JWT_CLAIM_TAMPERING]: {
|
|
273
282
|
id: 131,
|
|
274
|
-
code:
|
|
283
|
+
code: VulnerabilityCode.JWT_CLAIM_TAMPERING,
|
|
275
284
|
title: 'JWT - Claim Tampering',
|
|
276
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.',
|
|
277
286
|
severity: 'high',
|
|
287
|
+
levelId: 2,
|
|
278
288
|
category: 'authentication',
|
|
279
289
|
scanner: 'jwt',
|
|
280
290
|
cvss: {
|
|
@@ -290,12 +300,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
290
300
|
],
|
|
291
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.',
|
|
292
302
|
},
|
|
293
|
-
[
|
|
303
|
+
[VulnerabilityCode.JWT_KID_INJECTION]: {
|
|
294
304
|
id: 132,
|
|
295
|
-
code:
|
|
305
|
+
code: VulnerabilityCode.JWT_KID_INJECTION,
|
|
296
306
|
title: 'JWT - KID Header Injection',
|
|
297
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.',
|
|
298
308
|
severity: 'high',
|
|
309
|
+
levelId: 2,
|
|
299
310
|
category: 'authentication',
|
|
300
311
|
scanner: 'jwt',
|
|
301
312
|
cvss: {
|
|
@@ -311,12 +322,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
311
322
|
],
|
|
312
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.',
|
|
313
324
|
},
|
|
314
|
-
[
|
|
325
|
+
[VulnerabilityCode.JWT_JKU_INJECTION]: {
|
|
315
326
|
id: 133,
|
|
316
|
-
code:
|
|
327
|
+
code: VulnerabilityCode.JWT_JKU_INJECTION,
|
|
317
328
|
title: 'JWT - JKU Header Injection',
|
|
318
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.',
|
|
319
330
|
severity: 'high',
|
|
331
|
+
levelId: 2,
|
|
320
332
|
category: 'authentication',
|
|
321
333
|
scanner: 'jwt',
|
|
322
334
|
cvss: {
|
|
@@ -332,12 +344,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
332
344
|
],
|
|
333
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.',
|
|
334
346
|
},
|
|
335
|
-
[
|
|
347
|
+
[VulnerabilityCode.JWT_EMBEDDED_JWK]: {
|
|
336
348
|
id: 134,
|
|
337
|
-
code:
|
|
349
|
+
code: VulnerabilityCode.JWT_EMBEDDED_JWK,
|
|
338
350
|
title: 'JWT - Embedded JWK Injection',
|
|
339
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.',
|
|
340
352
|
severity: 'high',
|
|
353
|
+
levelId: 2,
|
|
341
354
|
category: 'authentication',
|
|
342
355
|
scanner: 'jwt',
|
|
343
356
|
cvss: {
|
|
@@ -353,12 +366,13 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
353
366
|
],
|
|
354
367
|
remediation: 'Reject embedded JWKs from tokens unless explicitly required and validated against a trusted key set. Use pinned keys and strict header validation.',
|
|
355
368
|
},
|
|
356
|
-
[
|
|
369
|
+
[VulnerabilityCode.JWT_X5C_INJECTION]: {
|
|
357
370
|
id: 135,
|
|
358
|
-
code:
|
|
371
|
+
code: VulnerabilityCode.JWT_X5C_INJECTION,
|
|
359
372
|
title: 'JWT - X5C Header Injection',
|
|
360
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.',
|
|
361
374
|
severity: 'high',
|
|
375
|
+
levelId: 2,
|
|
362
376
|
category: 'authentication',
|
|
363
377
|
scanner: 'jwt',
|
|
364
378
|
cvss: {
|
|
@@ -375,4 +389,4 @@ exports.AUTH_VULNERABILITIES = {
|
|
|
375
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.',
|
|
376
390
|
},
|
|
377
391
|
};
|
|
378
|
-
|
|
392
|
+
export default AUTH_VULNERABILITIES;
|