Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach unauthenticated draw.io export proxy
-
DeliveryCraft path-info with traversal segments
-
ExploitServlet resolves URL outside export base
-
ExecutionForward attacker headers and body to internal endpoint
-
ImpactAccess admin/debug/config route or trigger internal action
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a self-hosted draw.io server (jgraph/drawio) running a version prior to 30.2.7 that exposes ExportProxyServlet and is configured to proxy to an internal export server. Exploitation is unauthenticated (PR:N) and needs no user interaction, but its impact is strictly bounded by the export service configuration: the attacker only gains value if the internal export backend actually hosts reachable administration, debugging, health, or configuration endpoints, or accepts state-changing actions - this is the AC:H limiting factor. The traversal is delivered via dot segments (literal or percent-encoded %2e/%2f/%5c, or backslash) in the request path info. Deployments without the export proxy feature, or where the backend exposes no sensitive routes, are not meaningfully exposed. |
| Impact | This is a low-to-moderate priority issue where the vendor's own CVSS score (3.7) is a reasonable reflection of real-world risk, though arguably conservative. The CVSS vector (AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N) correctly flags unauthenticated network reachability but assigns AC:H because impact is entirely contingent on the export service's configuration - the traversal only becomes meaningful if the internal export server actually exposes administration, debugging, health, or configuration endpoints reachable from the proxy. No EPSS score, KEV listing, or POC is present in the provided data, and no SSVC decision was supplied, so exploitation-probability signals are absent rather than conflicting. Two points warrant scrutiny: (1) the vendor scored S:U and I:N, but the description explicitly says the servlet 'forwards all request headers and the request body' to reach internal routes and can 'permit unintended internal actions' - that reads as a scope change into a separate internal backend with at least limited integrity impact, so I independently assess S:C/I:L (see assessed vectors). (2) The commit fixed this alongside a DNS-rebinding SSRF (GHSA-3v4h-8r2c-m8c5) and an OAuth CSRF hardening (GHSA-mcj5-3pww-7g49) in the same 30.2.7 release; those are distinct CVEs and should not be conflated with this traversal. Net: real but conditional - dangerous only for self-hosted draw.io servers whose internal export backend hosts sensitive endpoints. |
| Exploit ScenarioDerived | An unauthenticated attacker sends an HTTP request to a self-hosted draw.io server's export proxy with dot-segment traversal in the path info (e.g. encoded ../ sequences), causing the servlet to resolve a URL outside the configured export base and forward the attacker's headers and body to an internal export-server endpoint such as /admin, /debug, or /health. Depending on how the backend export service is configured, this can leak configuration or health data or trigger unintended internal actions. No public exploit code is identified in the provided data, and the AC:H rating reflects that success hinges on the specific backend endpoints exposed. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 21, 2026
Path traversal in the self-hosted draw.io server (jgraph/drawio) before version 30.2.7 allows unauthenticated remote attackers to redirect the ExportProxyServlet's internal proxy request to unintended routes on the configured export backend by supplying dot segments (literal or percent-encoded) in the request path. Because the servlet copies all request headers and the request body to the traversed destination, an attacker can reach administration, debugging, health, or configuration endpoints that the export server happens to expose, and may trigger unintended internal actions, though the practical impact is bounded by how that backend is configured. Exploitation requires a deployment that has the export proxy feature enabled and pointed at an internal export service; there is no public exploit identified at time of analysis, and no EPSS score was supplied, so the vendor's modest CVSS of 3.7 is a reasonable reflection of real-world risk.
RemediationAI
Upgrade the self-hosted draw.io server to version 30.2.7, the vendor-released patch that hardens ExportProxyServlet against path traversal (release tag v30.2.7, commit 650fbd742814f6502f78248dc2d8e2aaa5e42b5e, vendor advisory GHSA-3pq9-9hg4-ggfw). Until the upgrade can be applied, the most effective compensating control is to shrink the attack surface at the backend: remove or disable the export proxy configuration entirely if the export service is not required, since without it the vulnerable code path is unreachable (at the cost of losing the export feature). If the export proxy must stay, place the internal export server on a segmented network or bind it so that its administration, debugging, health and configuration endpoints are not reachable from the draw.io host, and require authentication on those routes; this limits traversal to the same meaninglessly-bounded exports the servlet is meant to serve, but requires infrastructure change rather than a code fix. A reverse proxy or WAF in front of the draw.io server can be configured to reject request paths containing dot segments or the encoded forms %2e, %2f, %5c and backslashes, mirroring the check added upstream - effective but bypassable if a downstream component re-decodes the path, so it should be layered with the segmentation above. Because the servlet forwards arbitrary request headers to the traversed destination, also consider stripping client-supplied internal headers at the front door. Note that version 30.2.7 additionally fixes a related DNS-rebinding SSRF in the image proxy (GHSA-3v4h-8r2c-m8c5), so the upgrade addresses more than this CVE alone.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a classic CWE-22 path traversal in Java servlet code, specifically src/main/java/com/mxgraph/online/ExportProxyServlet.java in jgraph/drawio. The servlet builds a proxyPath from request.getPathInfo() and appends it directly to the configured EXPORT_URL without rejecting '.' or '..' segments and without verifying that the normalized URL still resolves under the export base path. The upstream fix (commit 650fbd742814f6502f78248dc2d8e2aaa5e42b5e, released in 30.2.7) adds a containsTraversal() defence-in-depth check that rejects literal './..' segments, encoded variants (%2e, %2f, %5c) and backslashes, plus a normalization check that the resolved URL starts with the configured base. Also corrected in the same hunk is an off-by-one bounds check (serviceId > supportedServices.length changed to >=), which previously allowed an out-of-range service index. The servlet forwards all request headers and the request body to the resolved backend URL, so successful traversal additionally enables header injection against internal endpoints. The affected product is identified by CPE cpe:2.3:a:jgraph:drawio:*:*:*:*:*:*:*:*, and the same 30.2.7 release also fixed a DNS-rebinding SSRF in the image proxy (GHSA-3v4h-8r2c-m8c5) and enforced OAuth state/CSRF checks on non-GAE deployments (GHSA-mcj5-3pww-7g49), indicating a security-hardening sweep of the self-hosted server component rather than the desktop client.
Know when Java gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
Unauthenticated network reach (PR:N/AV:N); AC:H because impact depends on the backend's exposed endpoints; S:C and I:L because it forwards into a separate internal export server enabling unintended internal actions.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
draw.io is a configurable diagramming and whiteboarding application. Prior to version 30.2.7, src/main/java/com/mxgraph/online/ExportProxyServlet.java uses request.getPathInfo() to build a proxyPath and appends it directly to EXPORT_URL without rejecting dot segments or confirming that the normalized destination remains under the configured export path. An unauthenticated request containing traversal segments can therefore address unintended routes on the internal export server, and the servlet forwards all request headers and the request body to that destination, allowing arbitrary header injection. Depending on the export service configuration, exploitation can expose administration, debugging, health, or configuration endpoints and can permit unintended internal actions. This issue is fixed in version 30.2.7.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
EUVD-2026-83988
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB