{
  "affected": [
    {
      "ranges": [
        {
          "database_specific": {
            "extracted_events": [
              {
                "introduced": "0"
              },
              {
                "fixed": "30.3.8"
              }
            ],
            "source": [
              "AFFECTED_FIELD",
              "REFERENCES"
            ]
          },
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "73c4a91196246bbdb60f52b15871e82006b7972d"
            }
          ],
          "repo": "https://github.com/jgraph/drawio",
          "type": "GIT"
        }
      ]
    }
  ],
  "aliases": [
    "GHSA-m3q9-cwfq-hcjc"
  ],
  "database_specific": {
    "cna_assigner": "GitHub_M",
    "cwe_ids": [
      "CWE-918"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/76xxx/CVE-2026-76898.json"
  },
  "details": "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.",
  "id": "CVE-2026-76898",
  "modified": "2026-09-23T03:30:44.445538135Z",
  "published": "2026-09-21T16:31:54.813Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/jgraph/drawio/releases/tag/v30.3.8"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/76xxx/CVE-2026-76898.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/jgraph/drawio/security/advisories/GHSA-m3q9-cwfq-hcjc"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-76898"
    },
    {
      "type": "FIX",
      "url": "https://github.com/jgraph/drawio/commit/73c4a91196246bbdb60f52b15871e82006b7972d"
    }
  ],
  "schema_version": "1.9.0",
  "severity": [
    {
      "score": "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",
      "type": "CVSS_V4"
    }
  ],
  "summary": "draw.io: Unauthenticated SSRF via IPv6 ULA blocklist bypass in /embed2.js"
}