Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
Primary rating from Vendor (https://github.com/directus/directus) · only source for this CVE.
CVSS VectorVendor: https://github.com/directus/directus
Lifecycle Timeline
5Blast Radius
ecosystem impact- 2 npm packages depend on directus (1 direct, 1 indirect)
Ecosystem-wide dependent count for version 11.16.0.
DescriptionCVE.org
Summary
A Server-Side Request Forgery (SSRF) protection bypass has been identified and fixed in Directus. The IP address validation mechanism used to block requests to local and private networks could be circumvented using IPv4-Mapped IPv6 address notation.
Details
Directus implements an IP deny-list to prevent server-side requests to internal/private network ranges. The validation logic failed to normalize IPv4-Mapped IPv6 addresses (e.g., the IPv6 representation of 127.0.0.1) before checking them against the deny-list. Because the deny-list check did not recognize these mapped addresses as equivalent to their IPv4 counterparts, an attacker could bypass the restriction while the underlying HTTP client and operating system still resolved and connected to the intended private target.
This has been fixed by adding a normalization step that converts IPv4-Mapped IPv6 addresses to their canonical IPv4 form prior to validation.
Impact
An authenticated user (or an unauthenticated user if public file-import permissions are enabled) could exploit this bypass to perform SSRF attacks against internal services on the same host (databases, caches, internal APIs) or cloud instance metadata endpoints (e.g., AWS/GCP/Azure IMDS).
AnalysisAI
Server-Side Request Forgery (SSRF) in Directus headless CMS allows authenticated attackers (or unauthenticated users with public file-import permissions) to bypass IP address deny-list protections and access internal network resources. Attackers exploit IPv4-Mapped IPv6 address notation (e.g., ::ffff:127.0.0.1) to circumvent validation logic, enabling unauthorized requests to localhost services, internal databases, caches, APIs, and cloud instance metadata endpoints (AWS/GCP/Azure IMDS). With CVSS 7.7 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N) indicating low attack complexity, network accessibility, and scope change with high confidentiality impact, this represents a significant risk for data exfiltration from cloud environments and internal infrastructure. No public exploit identified at time of analysis, though the technical details in the advisory provide clear exploitation guidance.
Technical ContextAI
Directus is a popular open-source headless CMS built on Node.js (pkg:npm/directus). This vulnerability stems from improper input validation (CWE-20) in the IP address filtering mechanism designed to prevent SSRF attacks. The system maintains a deny-list of private and internal IP ranges to block server-side requests to sensitive targets. However, the validation logic failed to normalize IPv4-Mapped IPv6 addresses before comparison. IPv4-Mapped IPv6 addresses use the format ::ffff:xxx.xxx.xxx.xxx to represent IPv4 addresses within the IPv6 address space. When an attacker submits a request using this notation (e.g., ::ffff:127.0.0.1 instead of 127.0.0.1), the deny-list check does not recognize the equivalence to the blocked IPv4 address. The underlying Node.js HTTP client and operating system networking stack, however, correctly resolve and connect to the IPv4 target, allowing the SSRF attack to succeed. The fix implements address normalization that converts IPv4-Mapped IPv6 addresses to canonical IPv4 format before deny-list validation, ensuring consistent enforcement across address representations.
RemediationAI
Update Directus to the latest patched version as specified in the GitHub security advisory at github.com/directus/directus/security/advisories/GHSA-wv3h-5fx7-966h. The fix implements normalization of IPv4-Mapped IPv6 addresses to canonical IPv4 format before IP deny-list validation. Organizations should verify their current Directus version against the advisory and upgrade immediately if running an affected version. As an interim mitigation, restrict file-import functionality to trusted authenticated users only and disable public file-import permissions if enabled. Network-level controls such as egress filtering from the Directus server to prevent outbound connections to private IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8, and link-local ranges) can provide defense-in-depth. For cloud deployments, implement IMDSv2 (which requires PUT request headers) on AWS EC2 instances to reduce metadata service exploitation risk. Review application logs for suspicious file-import requests containing IPv6 address notation as potential indicators of exploitation attempts.
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
GNU Bash through 4.3 processes trailing strings after function definitions in the values of environment variables, which
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
The (1) EPHEMERAL, (2) HTTPS, (3) MVG, (4) MSL, (5) TEXT, (6) SHOW, (7) WIN, and (8) PLT coders in ImageMagick before 6.
When running Apache Tomcat versions 9.0.0.M1 to 9.0.0, 8.5.0 to 8.5.22, 8.0.0.RC1 to 8.0.46 and 7.0.0 to 7.0.81 with HTT
Remote code execution is possible with Apache Tomcat before 6.0.48, 7.x before 7.0.73, 8.x before 8.0.39, 8.5.x before 8
GNU Bash through 4.3 bash43-025 processes trailing strings after certain malformed function definitions in the values of
The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packe
Race condition in mm/gup.c in the Linux kernel 2.x through 4.x before 4.8.3 allows local users to gain privileges by lev
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 17 and earlier, and
Local privilege escalation in the GNU C Library (glibc) dynamic loader ld.so allows unprivileged local users on affected
Same weakness CWE-20 – Improper Input Validation
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-19517
GHSA-wv3h-5fx7-966h