Description
draw.io is a configurable diagramming and whiteboarding application. Prior to version 30.3.8, src/main/java/com/mxgraph/online/Utils.java checks IPv6 Unique Local Addresses in Utils.sanitizeUrl() by comparing the text prefixes fc00:: and fd00::, but the JDK returns the expanded address form, so the fc00::/7 range, including the AWS metadata range fd00:ec2::/32, is not blocked. An unauthenticated request to /embed2.js?fetch= can therefore make src/main/java/com/mxgraph/online/EmbedServlet2.java fetch an IPv6 ULA internal resource and reflect the response to the requester. Utils.validatedAddress() uses the same private-address check for the separate ProxyServlet path, which requires ENABLE_DRAWIO_PROXY=1. The primary /embed2.js path requires no proxy feature flag or DNS rebinding, and it can disclose cloud metadata credentials or data from other IPv6-reachable internal services. This issue is fixed in version 30.3.8.
Published: 2026-09-21
Score: 7.7 High
EPSS: n/a
KEV: No
Impact: Server‑Side Request Forgery with disclosure of internal cloud metadata
Action: Immediate Patch
AI Analysis

Impact

The flaw allows an unauthenticated user to issue a request to /embed2.js with a fetch parameter pointing to an IPv6 Unique Local Address. Because the server expands the address form, the check for fc00:: and fd00:: prefixes fails, letting the server fetch and return the content of internal services, such as AWS metadata endpoints. The response is reflected back to the requester, revealing credentials or other sensitive data.

Affected Systems

The vulnerability exists in draw.io (jgraph:drawio) for all releases prior to version 30.3.8. Users of 30.3.8 or newer are not affected.

Risk and Exploitability

With a CVSS score of 7.7 and no mitigation in place, the attack can be carried out by anyone who can reach the exposed URL. The EPSS score is not available, and the issue is not listed in CISA KEV. Because the attack requires no authentication, no proxy flag, and no DNS rebinding, the likelihood of exploitation is high in environments where the endpoint is publicly reachable.

Generated by OpenCVE AI on September 21, 2026 at 17:20 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade draw.io to version 30.3.8 or later, which removes the ULA acceptance logic in /embed2.js.
  • If an upgrade is not immediately possible, block or restrict access to the /embed2.js?fetch= endpoint using firewall or network ACL rules that prevent outbound requests to IPv6 ranges fc00::/7 and fd00::/8, or enforce application‑level validation to reject such addresses.
  • Ensure that the ENABLE_DRAWIO_PROXY feature flag is disabled unless proxy functionality is intentionally required; the primary endpoint does not need this flag to be enabled.

Generated by OpenCVE AI on September 21, 2026 at 17:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 21 Sep 2026 17:45:00 +0000

Type Values Removed Values Added
First Time appeared Jgraph
Jgraph drawio
Vendors & Products Jgraph
Jgraph drawio

Mon, 21 Sep 2026 16:45:00 +0000

Type Values Removed Values Added
Description draw.io is a configurable diagramming and whiteboarding application. Prior to version 30.3.8, src/main/java/com/mxgraph/online/Utils.java checks IPv6 Unique Local Addresses in Utils.sanitizeUrl() by comparing the text prefixes fc00:: and fd00::, but the JDK returns the expanded address form, so the fc00::/7 range, including the AWS metadata range fd00:ec2::/32, is not blocked. An unauthenticated request to /embed2.js?fetch= can therefore make src/main/java/com/mxgraph/online/EmbedServlet2.java fetch an IPv6 ULA internal resource and reflect the response to the requester. Utils.validatedAddress() uses the same private-address check for the separate ProxyServlet path, which requires ENABLE_DRAWIO_PROXY=1. The primary /embed2.js path requires no proxy feature flag or DNS rebinding, and it can disclose cloud metadata credentials or data from other IPv6-reachable internal services. This issue is fixed in version 30.3.8.
Title draw.io: Unauthenticated SSRF via IPv6 ULA blocklist bypass in /embed2.js
Weaknesses CWE-918
References
Metrics cvssV4_0

{'score': 7.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:H/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-21T16:31:54.813Z

Reserved: 2026-08-19T22:43:14.890Z

Link: CVE-2026-76898

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-21T17:18:50.350

Modified: 2026-09-21T17:18:50.350

Link: CVE-2026-76898

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-21T17:30:18Z

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)