{"id":"CVE-2026-115762","kind":"vulnerability","aliases":["CVE-2026-115762"],"related":[],"title":"draw.io: malicious GraphML import enables prototype pollution and script execution","description":"draw.io is a configurable diagramming and whiteboarding application. Prior to 31.1.5, the GraphML decoder contains a prototype-pollution vulnerability. Attacker-controlled GraphML reference keys can address inherited object properties, including prototype objects, and the decoder can then assign attacker-controlled attributes to those objects. Importing a malicious GraphML file can trigger client-side prototype pollution. In the advisory-supported cross-site scripting chain, the editor is opened in Trello mode and the user invokes the Trello integration after the import, allowing the polluted state to execute script in the draw.io origin; an existing Trello connection is not required. This vulnerability is fixed in 31.1.5.","summary":"draw.io, a diagramming web app, fails to block attacker-controlled keys in GraphML files, so importing a crafted file pollutes JavaScript object prototypes. In the advisory's chain, opening the editor in Trello mode and using the Trello integration lets the polluted state run script in the draw.io origin.","severity":"medium","cvss":6.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["diagramming","draw.io","package","self-hosted"],"not_affected_if":["no-graphml-import","version-31.1.5-or-later"],"how_to_check":"- Check the draw.io version in use; the sources do not say how to find it in a self-hosted deployment, so unknown\n- Look for any self-hosted or embedded draw.io build below `31.1.5`","fix":"- draw.io: upgrade to `31.1.5` or later","status":"open","published_at":"2026-11-04T21:17:52+00:00","first_seen_at":"2026-11-04T21:49:18+00:00","triaged_at":"2026-11-04T21:51:18+00:00","updated_at":"2026-11-04T21:51:18+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-04T21:51:18Z","model":"claude-haiku-5-5","output":{"fix":"- draw.io: upgrade to `31.1.5` or later","reach":"internet","title":"draw.io: malicious GraphML import enables prototype pollution and script execution","impact":"medium","summary":"draw.io, a diagramming web app, fails to block attacker-controlled keys in GraphML files, so importing a crafted file pollutes JavaScript object prototypes. In the advisory's chain, opening the editor in Trello mode and using the Trello integration lets the polluted state run script in the draw.io origin.","audience":"developers","category":"package","nicknames":[],"who_cares":["draw.io","self-hosted","diagramming"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"script runs in the draw.io origin after a malicious file import","analyst_note":"","how_to_check":"- Check the draw.io version in use; the sources do not say how to find it in a self-hosted deployment, so unknown\n- Look for any self-hosted or embedded draw.io build below `31.1.5`","plain_action":"","needs_analyst":false,"not_affected_if":["version-31.1.5-or-later","no-graphml-import"],"who_is_affected":"Affects draw.io versions before 31.1.5 when a user imports a malicious GraphML file. The advisory's cross-site scripting chain requires the editor to be opened in Trello mode and the Trello integration invoked after the import; an existing Trello connection is not required. Teams using the hosted draw.io service or not importing GraphML files from untrusted sources have less exposure, but the sources do not say how the hosted service is patched.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.00072,"input_tokens":4273,"output_tokens":586,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-115762':13A,16A '-2026':12A,15A '31.1.5':83C,182C 'address':100C 'advisori':49B,135C 'advisory-support':134C 'allow':159C 'app':27B 'applic':80C 'assign':112C 'attack':32B,94C,114C 'attacker-control':31B,93C,113C 'attribut':116C 'block':30B 'chain':51B,141C 'client':128C 'client-sid':127C 'configur':76C 'connect':173C 'contain':87C 'control':33B,95C,115C 'craft':41B 'cross':138C 'cross-sit':137C 'cve':11A,14A 'decod':86C,109C 'diagram':17B,25B,77C 'draw.io':1A,18B,23B,71B,73C,168C 'editor':54B,143C 'enabl':5A 'execut':10A,164C 'exist':171C 'fail':28B 'file':37B,42B,124C 'fix':180C 'graphml':3A,36B,85C,96C,123C 'host':22B 'import':4A,39B,120C,158C 'includ':104C 'inherit':101C 'integr':62B,155C 'invok':152C 'javascript':44B 'key':34B,98C 'let':63B 'malici':2A,122C 'mode':57B,148C 'object':45B,102C,106C,119C 'open':52B,145C 'origin':72B,169C 'packag':19B 'pollut':7A,43B,65B,91C,131C,161C 'prior':81C 'properti':103C 'prototyp':6A,46B,90C,105C,130C 'prototype-pollut':89C 'refer':97C 'requir':176C 'run':67B 'script':9A,68B,140C,165C 'self':21B 'self-host':20B 'side':129C 'site':139C 'state':66B,162C 'support':136C 'trello':56B,61B,147C,154C,172C 'trigger':126C 'use':59B 'user':151C 'vulner':92C,178C 'web':26B 'whiteboard':79C","nicknames":[],"mitigations":[],"who_affected":"Affects draw.io versions before 31.1.5 when a user imports a malicious GraphML file. The advisory's cross-site scripting chain requires the editor to be opened in Trello mode and the Trello integration invoked after the import; an existing Trello connection is not required. Teams using the hosted draw.io service or not importing GraphML files from untrusted sources have less exposure, but the sources do not say how the hosted service is patched.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["diagramming","drawio","medium","package","selfhosted"],"campaign_type":null,"first_public_at":"2026-07-29T22:24:28+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-115762","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-115762","severity":null,"published_at":"2026-11-04T21:17:52+00:00","modified_at":"2026-11-04T21:17:52+00:00","first_seen_at":"2026-11-04T21:49:18+00:00","fetched_at":"2026-11-04T21:49:18+00:00","note":null}],"documents":[{"id":70629,"url":"https://github.com/jgraph/drawio/commit/3b4210678207f3880888969ee53c9fe4580104ab","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":70630,"url":"https://github.com/jgraph/drawio/security/advisories/GHSA-vvpv-f297-2ghp","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-07-29T22:24:28+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"exploit_sources":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}