{"id":"CVE-2026-121604","kind":"vulnerability","aliases":["CVE-2026-121604"],"related":[],"title":"wlroots: out-of-bounds read leaks compositor heap memory via X11 window class","description":"wlroots before 0.20.2 contains an out-of-bounds read vulnerability in read_surface_class() in xwayland/xwm.c that allows local X11 clients to leak compositor heap memory. Attackers can set a WM_CLASS property with a NUL-terminated instance but unterminated class, exposing over-read heap bytes as the window class or app_id over IPC.","summary":"wlroots before 0.20.2 reads past the end of a WM_CLASS property in its Xwayland code, so a local X11 client can make the compositor expose heap bytes as a window class or app_id over IPC. The attacker gets leaked compositor memory, which may contain sensitive data.","severity":"medium","cvss":4.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["linux-desktop","runtime","wayland","wlroots","xwayland"],"not_affected_if":["no-xwayland","wlroots-0.20.2-or-later"],"how_to_check":"- Check the installed wlroots version: `pkg-config --modversion wlroots` or the version your compositor bundles.\n- Confirm whether your compositor uses Xwayland (the xwm.c code path).","fix":"- wlroots: move to `0.20.2` or later.","status":"open","published_at":"2026-11-03T17:18:11+00:00","first_seen_at":"2026-11-03T17:21:56+00:00","triaged_at":"2026-11-03T17:24:32+00:00","updated_at":"2026-11-03T17:24:32+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-11-03T17:24:32Z","model":"claude-haiku-5-5","output":{"fix":"- wlroots: move to `0.20.2` or later.","reach":"local","title":"wlroots: out-of-bounds read leaks compositor heap memory via X11 window class","impact":"low","summary":"wlroots before 0.20.2 reads past the end of a WM_CLASS property in its Xwayland code, so a local X11 client can make the compositor expose heap bytes as a window class or app_id over IPC. The attacker gets leaked compositor memory, which may contain sensitive data.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["wlroots","wayland","xwayland","linux-desktop"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"local client reads compositor heap memory over IPC","analyst_note":"","how_to_check":"- Check the installed wlroots version: `pkg-config --modversion wlroots` or the version your compositor bundles.\n- Confirm whether your compositor uses Xwayland (the xwm.c code path).","plain_action":"","needs_analyst":false,"not_affected_if":["no-xwayland","wlroots-0.20.2-or-later"],"who_is_affected":"Only Wayland compositors built on wlroots that run Xwayland are exposed, because the flaw is in the X11 window manager code. Attackers need a local X11 client on the same machine. Systems with no Xwayland or a wlroots version at or above 0.20.2 can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000688,"input_tokens":4182,"output_tokens":539,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-121604':17A,20A '-2026':16A,19A '0.20.2':30B,78C 'allow':94C 'app':61B,130C 'attack':66B,103C 'bound':5A,84C 'byte':55B,124C 'class':14A,38B,59B,90C,108C,118C,128C 'client':48B,97C 'code':43B 'compositor':8A,52B,69B,100C 'contain':73B,79C 'cve':15A,18A 'data':75B 'desktop':23B 'end':34B 'expos':53B,119C 'get':67B 'heap':9A,54B,101C,123C 'id':62B,131C 'instanc':115C 'ipc':64B,133C 'leak':7A,68B,99C 'linux':22B 'linux-desktop':21B 'local':46B,95C 'make':50B 'may':72B 'memori':10A,70B,102C 'nul':113C 'nul-termin':112C 'out-of-bound':2A,81C 'over-read':120C 'past':32B 'properti':39B,109C 'read':6A,31B,85C,88C,122C 'runtim':24B 'sensit':74B 'set':105C 'surfac':89C 'termin':114C 'untermin':117C 'via':11A 'vulner':86C 'wayland':25B 'window':13A,58B,127C 'wlroot':1A,26B,28B,76C 'wm':37B,107C 'x11':12A,47B,96C 'xwayland':27B,42B 'xwayland/xwm.c':92C","nicknames":[],"mitigations":[],"who_affected":"Only Wayland compositors built on wlroots that run Xwayland are exposed, because the flaw is in the X11 window manager code. Attackers need a local X11 client on the same machine. Systems with no Xwayland or a wlroots version at or above 0.20.2 can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["linuxdesktop","medium","runtime","wayland","wlroots","xwayland"],"first_public_at":"2026-11-03T17:18:11+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-121604","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-121604","severity":null,"published_at":"2026-11-03T17:18:11+00:00","modified_at":"2026-11-03T17:18:11+00:00","first_seen_at":"2026-11-03T17:21:56+00:00","fetched_at":"2026-11-03T17:21:56+00:00","note":null}],"documents":[{"id":59259,"url":"https://www.vulncheck.com/advisories/wlroots-before-0.20.2-out-of-bounds-read-via-read-surface-class-in-xwm-c","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}