Skip to main content

draw.io CVE-2026-63334

| EUVDEUVD-2026-84007 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-09-21 GitHub_M
6.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Identify draw.io instance with proxy enabled
  2. Delivery
    Register rebinding hostname flipping public↔metadata IP
  3. Exploit
    Submit URL to image proxy endpoint
  4. Install
    Pass single-resolution private-address check
  5. C2
    Race second DNS resolution at connection open
  6. Execute
    Proxy fetches internal/metadata service
  7. Impact
    Exfiltrate cloud credentials or internal responses

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires a draw.io server deployment started with the environment variable ENABLE_DRAWIO_PROXY=1, which activates the ProxyServlet image proxy - installs without this flag, as well as the SaaS and desktop editions, are not exposed. Exploitation is unauthenticated and remote against that proxy endpoint, but is LIMITED by a DNS-rebinding timing race: the attacker-controlled hostname must resolve to a permitted public address during Utils.sanitizeUrl() validation and then to a private, link-local, or 169.254.169.254 cloud-metadata address by the time URL.openConnection() performs the second resolution (hence CVSS AC:H). Impact is highest when the server runs in a cloud environment with a reachable instance metadata service or internal-only HTTP services; it is read-only (no integrity or availability impact).

Impact

This is a legitimate but conditional SSRF, not a high-severity emergency. The CVSS 3.1 vector (6.8, AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N) is internally consistent with the DNS-rebinding root cause: AV:N because the proxy endpoint is network-reachable, PR:N because draw.io's image proxy is typically unauthenticated, AC:H because success requires winning a DNS time-of-check/time-of-use race (the hostname must resolve public during Utils.sanitizeUrl() and private/link-local/metadata during URL.openConnection()), S:C because attacker reads data from separate internal/cloud-metadata systems, and C:H/I:N/A:N because the payoff is read-only exfiltration of cloud instance metadata or internal HTTP responses with no write or availability impact. No EPSS score, no CISA KEV listing, and no public exploit are present in the supplied intelligence, so this is 'no public exploit identified at time of analysis.' The strongest mitigating signal is the gating condition: only deployments running with ENABLE_DRAWIO_PROXY=1 are affected, which narrows the exposed population well below the raw popularity of draw.io. Net: patch on a normal cycle for self-hosted proxy-enabled instances, especially those in cloud (IMDS-reachable) environments; treat it as lower priority for SaaS/desktop users and installs with the proxy disabled. No conflicting signals were found between the CVSS vector and the description - both agree on unauthenticated network access with a rebinding race.

Exploit ScenarioDerived

An attacker registers a hostname under their control whose DNS record flips between a public IP and 169.254.169.254 (cloud metadata) or an internal RFC1918 address, then submits it to a self-hosted draw.io instance's image proxy (ENABLE_DRAWIO_PROXY=1). The first resolution passes the private-address allow check, but by the time ProxyServlet calls URL.openConnection() the record has flipped, so the proxy fetches internal or metadata content and returns it to the attacker. No public exploit is identified, and the AC:H rating reflects the DNS timing race that must be won.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 21, 2026

Server-side request forgery in self-hosted draw.io deployments prior to 30.2.7 allows unauthenticated remote attackers to make the server fetch attacker-chosen URLs that resolve to private, link-local, or cloud-metadata addresses, returning internal HTTP responses or instance metadata through the image proxy. The flaw only exists when the server is started with ENABLE_DRAWIO_PROXY=1; the SaaS and desktop editions and default installs are unaffected. Successful exploitation depends on a DNS-rebinding timing race (the hostname must resolve to a public address during validation and to an internal address at connection time), which is why the assessed severity is 6.8 with AC:H rather than a high-severity rating; there is no public exploit code identified at time of analysis and the issue is not in CISA KEV. Vendor-released patch: 30.2.7.

RemediationAI

Upgrade to draw.io server 30.2.7, which pins connections to the validated IP via Utils.openPinnedConnection() and checks redirects the same way - see the advisory at https://github.com/jgraph/drawio/security/advisories/GHSA-3v4h-8r2c-m8c5, the fix commit https://github.com/jgraph/drawio/commit/650fbd742814f6502f78248dc2d8e2aaa5e42b5e, and the release https://github.com/jgraph/drawio/releases/tag/v30.2.7. If upgrading immediately is not possible, the primary compensating control is to remove the exposure entirely by unsetting ENABLE_DRAWIO_PROXY (or setting it to 0) and restarting the server; the trade-off is that the external image proxy stops functioning, so diagrams that embed remote images fetched through the proxy will no longer render them. Because exploitation requires the server to reach an internal target, egress filtering is a strong secondary control: deny outbound connections from the draw.io container to RFC1918 ranges, 127.0.0.0/8, and 169.254.0.0/16 (including the cloud metadata endpoint 169.254.169.254), and prefer blocking egress by default with an explicit allowlist of hosts the proxy legitimately needs - this can break other integrations that rely on internal URLs. Additionally, require IMDSv2 on AWS instances and apply equivalent hardened metadata configurations on other clouds so that a successful SSRF cannot retrieve credentials. Note that the 30.2.7 release also carries fixes for a path-traversal issue in ExportProxyServlet and an OAuth state/CSRF enforcement gap, so the upgrade is worthwhile beyond this CVE.

Affected VersionsENISA

drawio < 30.2.7

Affected Packages

euvd drawio fix: 30.2.7

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 weakness is CWE-918 (Server-Side Request Forgery) implemented as a classic time-of-check-to-time-of-use (TOCTOU) DNS validation gap in the Java image-proxy code path. In affected versions, src/main/java/com/mxgraph/online/Utils.java's Utils.sanitizeUrl() performs a single DNS resolution of the caller-supplied URL and verifies that the resulting address is not private, link-local, or otherwise internal. src/main/java/com/mxgraph/online/ProxyServlet.java then calls URL.openConnection() on the same hostname, triggering a second, independent DNS resolution. Because the hostname is never pinned to the address that was validated, an attacker controlling DNS for that hostname can answer the first query with a benign public IP and the second query with 127.0.0.1, 169.254.169.254, or another RFC1918/link-local target, causing the server to issue an HTTP request to an internal endpoint. The CVSS vector CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N reflects that access is network-based and unauthenticated (PR:N) with no user interaction, but the rebinding race makes exploitation non-trivial (AC:H); the scope change (S:C) captures that the vulnerable component is leveraged to reach resources outside its intended authority, and the impact is confidentiality-only (metadata/internal service response disclosure) with no integrity or availability effect. The 30.2.7 fix replaces the boolean check with Utils.validatedAddress() returning the validated InetAddress and rewires ProxyServlet to use Utils.openPinnedConnection(), so the connection is bound to the address that was actually validated; the redirect-following path is hardened the same way. The same release also bundles fixes for a path-traversal issue in ExportProxyServlet (GHSA-3pq9-9hg4-ggfw) and an OAuth state/CSRF check enforcement change on non-GAE deployments (GHSA-mcj5-3pww-7g49).

Know when Drawio 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

Vendor (GitHub_M) PRIMARY 6.8 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N
vuln.today AI 6.8 MEDIUM

Unauthenticated network-reachable proxy (AV:N/PR:N), DNS-rebinding race raises AC:H, reading separate internal/metadata systems gives S:C/C:H, and the read-only SSRF has no I/A impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Sep 21, 2026 - 18:02 EUVD

DescriptionCVE.org

draw.io is a configurable diagramming and whiteboarding application. Prior to version 30.2.7, deployments with ENABLE_DRAWIO_PROXY=1 are vulnerable to server-side request forgery because src/main/java/com/mxgraph/online/Utils.java performs the private-address check in Utils.sanitizeUrl() using one DNS resolution, while src/main/java/com/mxgraph/online/ProxyServlet.java later calls URL.openConnection() and performs a second resolution. An attacker-controlled hostname can resolve to a public address during validation and then to a private, link-local, or cloud metadata address when the connection is opened. Successful exploitation can return cloud instance metadata or responses from internal HTTP services through the proxy. This issue is fixed in version 30.2.7.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Medium
draw.io very popular, but only self-hosted proxy-enabled deployments are affected
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

More in Drawio

View all
CVE-2023-3975 CRITICAL POC
9.8 Jul 27

OS Command Injection in GitHub repository jgraph/drawio prior to 21.5.0. Rated critical severity (CVSS 9.8), this vulner

CVE-2022-1575 CRITICAL POC
9.6 May 05

Arbitrary Code Execution through Sanitizer Bypass in GitHub repository jgraph/drawio prior to 18.0.0. Rated critical sev

CVE-2022-1727 HIGH POC
8.8 May 18

Improper Input Validation in GitHub repository jgraph/drawio prior to 18.0.6. Rated high severity (CVSS 8.8), this vulne

CVE-2022-3133 HIGH POC
7.8 Sep 09

OS Command Injection in GitHub repository jgraph/drawio prior to 20.3.0. Rated high severity (CVSS 7.8), this vulnerabil

CVE-2023-3398 HIGH POC
7.5 Jun 26

Denial of Service in GitHub repository jgraph/drawio prior to 18.1.3. Rated high severity (CVSS 7.5), this vulnerability

CVE-2022-3065 HIGH POC
7.5 Sep 02

Improper Access Control in GitHub repository jgraph/drawio prior to 20.2.8. Rated high severity (CVSS 7.5), this vulnera

CVE-2022-1815 HIGH POC
7.5 May 25

Exposure of Sensitive Information to an Unauthorized Actor in GitHub repository jgraph/drawio prior to 18.1.2. Rated hig

CVE-2022-1784 HIGH POC
7.5 May 20

Server-Side Request Forgery (SSRF) in GitHub repository jgraph/drawio prior to 18.0.8. Rated high severity (CVSS 7.5), t

CVE-2022-1767 HIGH POC
7.5 May 18

Server-Side Request Forgery (SSRF) in GitHub repository jgraph/drawio prior to 18.0.7. Rated high severity (CVSS 7.5), t

CVE-2022-1711 HIGH POC
7.5 May 17

Server-Side Request Forgery (SSRF) in GitHub repository jgraph/drawio prior to 18.0.5. Rated high severity (CVSS 7.5), t

CVE-2022-1723 HIGH POC
7.5 May 17

Server-Side Request Forgery (SSRF) in GitHub repository jgraph/drawio prior to 18.0.6. Rated high severity (CVSS 7.5), t

CVE-2022-1721 HIGH POC
7.5 May 16

Path Traversal in WellKnownServlet in GitHub repository jgraph/drawio prior to 18.0.5. Rated high severity (CVSS 7.5), t

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy