Skip to content

Commit 72b4b37

Browse files
committed
Final Changes - Adding Changelog + deprecated-node-mappings + ALL JSON Sorting + SCW
1 parent 2c0b372 commit 72b4b37

File tree

7 files changed

+602
-523
lines changed

7 files changed

+602
-523
lines changed

CHANGELOG.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,44 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p
1212

1313
### Changed
1414

15+
## [v1.16](https://github.com/bugcrowd/vulnerability-rating-taxonomy/compare/v1.15.1...v1.16) - 2025-06-23
16+
17+
### Added
18+
19+
- Broken Access Control (BAC) - Bypass of Password Confirmation - Change Password - P4
20+
- Sensitive Data Exposure - GraphQL Introspection Enabled - P5
21+
- AI Application Security - Training Data Poisoning - Backdoor Injection / Bias Manipulation - P1
22+
- AI Application Security - Model Extraction - API Query-Based Model Reconstruction - P1
23+
- AI Application Security - Sensitive Information Disclosure - Cross-Tenant PII Leakage/Exposure - P1
24+
- AI Application Security - Sensitive Information Disclosure - Key Leak - P1
25+
- AI Application Security - Remote Code Execution - Full System Compromise - P1
26+
- AI Application Security - Remote Code Execution - Sandboxed Container Code Execution - P2
27+
- AI Application Security - Prompt Injection - System Prompt Leakage - P2
28+
- AI Application Security - Vector and Embedding Weaknesses - Embedding Exfiltration / Model Extraction - P2
29+
- AI Application Security - Vector and Embedding Weaknesses - Semantic Indexing - P3
30+
- AI Application Security - Denial-of-Service (DoS) - Application-Wide - P2
31+
- AI Application Security - AI Safety - Misinformation / Wrong Factual Data - P4
32+
- AI Application Security - Insufficient Rate Limiting - Query Flooding / API Token Abuse - P4
33+
- AI Application Security - Denial-of-Service (DoS) - Tenant-Scoped - P4
34+
- AI Application Security - Adversarial Example Injection - AI Misclassification Attacks - P4
35+
- AI Application Security - Improper Output Handling - Cross-Site Scripting (XSS) - P3
36+
- AI Application Security - Improper Output Handling - Markdown/HTML Injection - P4
37+
- AI Application Security - Improper Input Handling - ANSI Escape Codes - P5
38+
- AI Application Security - Improper Input Handling - Unicode Confusables - P5
39+
- AI Application Security - Improper Input Handling - RTL Overrides - P5
40+
41+
### Removed
42+
43+
- AI Application Security - Large Language Model (LLM) Security - LLM Output Handling - P1
44+
- AI Application Security - Large Language Model (LLM) Security - Prompt Injection - P1
45+
- AI Application Security - Large Language Model (LLM) Security - Training Data Poisoning - P1
46+
- AI Application Security - Large Language Model (LLM) Security - Excessive Agency/Permission Manipulation - P2
47+
48+
### Other
49+
50+
- Removed CVSS score for VRT entries with 'VARIES' priority, and added default CVSS (0 score) wherever missing.
51+
- Fixed 'deprecated-node-mapping.json' file to reflect the correct format and fill in missing values.
52+
1553
## [v1.15.1](https://github.com/bugcrowd/vulnerability-rating-taxonomy/compare/v1.15...v1.15.1) - 2025-03-11
1654

1755
### Added

deprecated-node-mapping.json

Lines changed: 330 additions & 318 deletions
Large diffs are not rendered by default.

mappings/cvss_v3/cvss_v3.json

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -7,138 +7,138 @@
77
"id": "ai_application_security",
88
"children": [
99
{
10-
"id": "training_data_poisoning",
10+
"id": "adversarial_example_injection",
1111
"children": [
1212
{
13-
"id": "backdoor_injection_bias_manipulation",
14-
"cvss_v3": "AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H"
13+
"id": "ai_misclassification_attacks",
14+
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:L"
1515
}
1616
]
1717
},
1818
{
19-
"id": "model_extraction",
19+
"id": "ai_safety",
2020
"children": [
2121
{
22-
"id": "api_query_based_model_reconstruction",
23-
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
22+
"id": "misinformation_wrong_factual_data",
23+
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:L/A:N"
2424
}
2525
]
2626
},
2727
{
28-
"id": "sensitive_information_disclosure",
28+
"id": "denial_of_service_dos",
2929
"children": [
3030
{
31-
"id": "cross_tenant_pii_leakage_exposure",
32-
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N"
31+
"id": "application_wide",
32+
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H"
3333
},
3434
{
35-
"id": "key_leak",
36-
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
35+
"id": "tenant_scoped",
36+
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:L"
3737
}
3838
]
3939
},
4040
{
41-
"id": "remote_code_execution",
41+
"id": "improper_input_handling",
4242
"children": [
4343
{
44-
"id": "full_system_compromise",
45-
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
44+
"id": "ansi_escape_codes",
45+
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L"
4646
},
4747
{
48-
"id": "sandboxed_container_code_execution",
49-
"cvss_v3": "AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:H/A:H"
48+
"id": "rtl_overrides",
49+
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L"
50+
},
51+
{
52+
"id": "unicode_confusables",
53+
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L"
5054
}
5155
]
5256
},
5357
{
54-
"id": "prompt_injection",
58+
"id": "improper_output_handling",
5559
"children": [
5660
{
57-
"id": "system_prompt_leakage",
58-
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N"
61+
"id": "cross_site_scripting_xss",
62+
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
63+
},
64+
{
65+
"id": "markdown_html_injection",
66+
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
5967
}
6068
]
6169
},
6270
{
63-
"id": "vector_and_embedding_weaknesses",
71+
"id": "insufficient_rate_limiting",
6472
"children": [
6573
{
66-
"id": "embedding_exfiltration_model_extraction",
67-
"cvss_v3": "AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N"
68-
},
69-
{
70-
"id": "semantic_indexing",
71-
"cvss_v3": "AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N"
74+
"id": "query_flooding_api_token_abuse",
75+
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H"
7276
}
7377
]
7478
},
7579
{
76-
"id": "denial_of_service_dos",
80+
"id": "model_extraction",
7781
"children": [
7882
{
79-
"id": "application_wide",
80-
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H"
81-
},
82-
{
83-
"id": "tenant_scoped",
84-
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:L"
83+
"id": "api_query_based_model_reconstruction",
84+
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
8585
}
8686
]
8787
},
8888
{
89-
"id": "improper_output_handling",
89+
"id": "prompt_injection",
9090
"children": [
9191
{
92-
"id": "cross_site_scripting_xss",
93-
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
94-
},
95-
{
96-
"id": "markdown_html_injection",
97-
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
92+
"id": "system_prompt_leakage",
93+
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N"
9894
}
9995
]
10096
},
10197
{
102-
"id": "ai_safety",
98+
"id": "remote_code_execution",
10399
"children": [
104100
{
105-
"id": "misinformation_wrong_factual_data",
106-
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:L/A:N"
101+
"id": "full_system_compromise",
102+
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
103+
},
104+
{
105+
"id": "sandboxed_container_code_execution",
106+
"cvss_v3": "AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:H/A:H"
107107
}
108108
]
109109
},
110110
{
111-
"id": "insufficient_rate_limiting",
111+
"id": "sensitive_information_disclosure",
112112
"children": [
113113
{
114-
"id": "query_flooding_api_token_abuse",
115-
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H"
114+
"id": "cross_tenant_pii_leakage_exposure",
115+
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N"
116+
},
117+
{
118+
"id": "key_leak",
119+
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
116120
}
117121
]
118122
},
119123
{
120-
"id": "adversarial_example_injection",
124+
"id": "training_data_poisoning",
121125
"children": [
122126
{
123-
"id": "ai_misclassification_attacks",
124-
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:L"
127+
"id": "backdoor_injection_bias_manipulation",
128+
"cvss_v3": "AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H"
125129
}
126130
]
127131
},
128132
{
129-
"id": "improper_input_handling",
133+
"id": "vector_and_embedding_weaknesses",
130134
"children": [
131135
{
132-
"id": "ansi_escape_codes",
133-
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L"
134-
},
135-
{
136-
"id": "unicode_confusables",
137-
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L"
136+
"id": "embedding_exfiltration_model_extraction",
137+
"cvss_v3": "AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N"
138138
},
139139
{
140-
"id": "rtl_overrides",
141-
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L"
140+
"id": "semantic_indexing",
141+
"cvss_v3": "AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N"
142142
}
143143
]
144144
}
@@ -348,6 +348,10 @@
348348
{
349349
"id": "broken_access_control",
350350
"children": [
351+
{
352+
"id": "bypass_of_password_confirmation",
353+
"cvss_v3": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N"
354+
},
351355
{
352356
"id": "exposed_sensitive_android_intent",
353357
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N"
@@ -356,10 +360,6 @@
356360
"id": "exposed_sensitive_ios_url_scheme",
357361
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N"
358362
},
359-
{
360-
"id": "bypass_of_password_confirmation",
361-
"cvss_v3": "AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N"
362-
},
363363
{
364364
"id": "privilege_escalation",
365365
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N"
@@ -913,10 +913,6 @@
913913
"id": "sensitive_data_exposure",
914914
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N",
915915
"children": [
916-
{
917-
"id": "graphql_introspection_enabled",
918-
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N"
919-
},
920916
{
921917
"id": "disclosure_of_secrets",
922918
"children": [
@@ -947,6 +943,10 @@
947943
}
948944
]
949945
},
946+
{
947+
"id": "graphql_introspection_enabled",
948+
"cvss_v3": "AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N"
949+
},
950950
{
951951
"id": "json_hijacking",
952952
"cvss_v3": "AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:N"

mappings/cwe/cwe.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -774,12 +774,6 @@
774774
"CWE-934"
775775
],
776776
"children": [
777-
{
778-
"id": "graphql_introspection_enabled",
779-
"cwe": [
780-
"CWE-200"
781-
]
782-
},
783777
{
784778
"id": "disclosure_of_known_public_information",
785779
"cwe": [
@@ -803,6 +797,12 @@
803797
"CWE-200"
804798
]
805799
},
800+
{
801+
"id": "graphql_introspection_enabled",
802+
"cwe": [
803+
"CWE-200"
804+
]
805+
},
806806
{
807807
"id": "non_sensitive_token_in_url",
808808
"cwe": [

mappings/remediation_advice/remediation_advice.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,14 +1208,10 @@
12081208
"https://www.cvedetails.com/vulnerability-list/opginf-1/gain-information.html"
12091209
],
12101210
"children": [
1211-
{
1212-
"id": "graphql_introspection_enabled",
1213-
"remediation_advice": "Disable GraphQL introspection in production environments to prevent attackers from enumerating the API schema."
1214-
},
12151211
{
12161212
"id": "disclosure_of_known_public_information",
12171213
"remediation_advice": "As a best practice, avoid disclosing known public information unnecessarily."
1218-
},
1214+
},
12191215
{
12201216
"id": "disclosure_of_secrets",
12211217
"remediation_advice": "1. Do not store secrets in source code that is publicly accessible such as in a public GitHub repository.\n2. Critically sensitive data should not be transmitted in cleartext. Make sure to only use `HTTPS` whenever transmitting passwords and private API keys.\n3. Set appropriate headers to prevent caching of sensitive data when served to end-user."
@@ -1227,6 +1223,10 @@
12271223
"http://resources.infosecinstitute.com/metadata-and-information-security/"
12281224
]
12291225
},
1226+
{
1227+
"id": "graphql_introspection_enabled",
1228+
"remediation_advice": "Disable GraphQL introspection in production environments to prevent attackers from enumerating the API schema."
1229+
},
12301230
{
12311231
"id": "json_hijacking",
12321232
"remediation_advice": "Follow the JSON specification which requires an object as top level entity. If the top level object is an array, the response will be a valid Java Script code that might be parsed using a `<script>` tag.",
@@ -1324,17 +1324,17 @@
13241324
]
13251325
},
13261326
{
1327-
"id": "cache_poisoning",
1328-
"remediation_advice": "The most robust defense against cache poisoning is to disable caching. This is plainly unrealistic advice for some, but it's likely that some websites that start using a service like Cloudflare for DDoS protection or easy SSL end up vulnerable to cache poisoning simply because caching is enabled by default.\n\nRestricting caching to purely static responses is also effective, provided you're sufficiently wary about what you define as 'static'.\n\nLikewise, avoiding taking input from headers and cookies is an effective way to prevent cache poisoning, but it's hard to know if other layers and frameworks are sneaking in support for extra headers. You might want to audit every page of your application with Param Miner to flush out unkeyed inputs.\n\nOnce you've identified unkeyed inputs in your application, the ideal solution is to outright disable them. Failing that, you could strip the inputs at the cache layer, or add them to the cache key. Some caches let you use the Vary header to key unkeyed inputs, and others let you define custom cache keys but may restrict this feature to 'enterprise' customers.\n\nFinally, regardless of whether your application has a cache, some of your clients may have a cache at their end and as such client-side vulnerabilities like XSS in HTTP headers should never be ignored.",
1327+
"id": "cache_deception",
1328+
"remediation_advice": "The most effective way to prevent cache deception is to carefully control which responses are cached and to avoid caching responses that contain user-specific or sensitive data.\n\nEnsure that authentication-protected pages and any responses containing sensitive information explicitly disable caching via headers such as `Cache-Control: no-store, no-cache, must-revalidate` and `Pragma: no-cache`.\n\nBe particularly cautious with URL structures. Cache deception attacks often rely on tricking the cache into treating dynamic responses as static. A simple mitigation is to ensure that URLs ending in extensions like `.css`, `.js`, `.png`, etc., only serve static content and do not process dynamic requests.\n\nFor additional protection, configure your cache layer to only cache responses from a predefined allowlist of safe URL patterns. This prevents attackers from injecting deceptive paths that lead to cached sensitive data.\n\nAuditing your cache behavior using tools like Param Miner or manual testing can help identify and eliminate unintended caching of sensitive responses. Additionally, security headers such as `X-Content-Type-Options: nosniff` can help prevent certain forms of cache-related attacks.\n\nFinally, if your application uses a CDN or a reverse proxy (e.g., Cloudflare, Akamai, Varnish), ensure that caching rules are correctly configured to prevent caching of personalized or user-specific content.",
13291329
"references": [
1330-
"https://portswigger.net/blog/practical-web-cache-poisoning"
1330+
"https://portswigger.net/web-security/web-cache-deception"
13311331
]
13321332
},
13331333
{
1334-
"id": "cache_deception",
1335-
"remediation_advice": "The most effective way to prevent cache deception is to carefully control which responses are cached and to avoid caching responses that contain user-specific or sensitive data.\n\nEnsure that authentication-protected pages and any responses containing sensitive information explicitly disable caching via headers such as `Cache-Control: no-store, no-cache, must-revalidate` and `Pragma: no-cache`.\n\nBe particularly cautious with URL structures. Cache deception attacks often rely on tricking the cache into treating dynamic responses as static. A simple mitigation is to ensure that URLs ending in extensions like `.css`, `.js`, `.png`, etc., only serve static content and do not process dynamic requests.\n\nFor additional protection, configure your cache layer to only cache responses from a predefined allowlist of safe URL patterns. This prevents attackers from injecting deceptive paths that lead to cached sensitive data.\n\nAuditing your cache behavior using tools like Param Miner or manual testing can help identify and eliminate unintended caching of sensitive responses. Additionally, security headers such as `X-Content-Type-Options: nosniff` can help prevent certain forms of cache-related attacks.\n\nFinally, if your application uses a CDN or a reverse proxy (e.g., Cloudflare, Akamai, Varnish), ensure that caching rules are correctly configured to prevent caching of personalized or user-specific content.",
1334+
"id": "cache_poisoning",
1335+
"remediation_advice": "The most robust defense against cache poisoning is to disable caching. This is plainly unrealistic advice for some, but it's likely that some websites that start using a service like Cloudflare for DDoS protection or easy SSL end up vulnerable to cache poisoning simply because caching is enabled by default.\n\nRestricting caching to purely static responses is also effective, provided you're sufficiently wary about what you define as 'static'.\n\nLikewise, avoiding taking input from headers and cookies is an effective way to prevent cache poisoning, but it's hard to know if other layers and frameworks are sneaking in support for extra headers. You might want to audit every page of your application with Param Miner to flush out unkeyed inputs.\n\nOnce you've identified unkeyed inputs in your application, the ideal solution is to outright disable them. Failing that, you could strip the inputs at the cache layer, or add them to the cache key. Some caches let you use the Vary header to key unkeyed inputs, and others let you define custom cache keys but may restrict this feature to 'enterprise' customers.\n\nFinally, regardless of whether your application has a cache, some of your clients may have a cache at their end and as such client-side vulnerabilities like XSS in HTTP headers should never be ignored.",
13361336
"references": [
1337-
"https://portswigger.net/web-security/web-cache-deception"
1337+
"https://portswigger.net/blog/practical-web-cache-poisoning"
13381338
]
13391339
},
13401340
{

0 commit comments

Comments
 (0)