{"id":"CVE-2026-124435","kind":"vulnerability","aliases":["CVE-2026-124435"],"related":[],"title":"OpenRemote: stored XSS lets admin uploads run scripts in victims' browsers","description":"OpenRemote before 1.32.2 contains a stored cross-site scripting vulnerability that allows authenticated users with write:admin permissions to upload HTML or SVG files containing JavaScript via the Manager configuration file upload endpoint. Attackers can lure victims to the unauthenticated image retrieval endpoint, which serves files as text/html or image/svg+xml, executing scripts within the application's origin.","summary":"OpenRemote before 1.32.2 serves uploaded HTML or SVG files from its image endpoint as text/html or image/svg+xml without authentication. A user with write:admin permission can plant JavaScript that runs in the application's origin when a victim opens the link.","severity":"medium","cvss":4.8,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"OpenRemote","fixed":[],"affected":"","ecosystem":"vendor"}],"ecosystems":["vendor"],"tags":["iot","openremote","other","self-hosted"],"not_affected_if":["no-write-admin-users","version-1.32.2-or-later"],"how_to_check":"- Check the OpenRemote Manager version; affected if it is older than `1.32.2`\n- Confirm whether the Manager configuration file upload endpoint is reachable by users with write:admin permission","fix":"- OpenRemote: upgrade to `1.32.2` or later","status":"open","published_at":"2026-11-08T14:18:09+00:00","first_seen_at":"2026-11-08T14:48:38+00:00","triaged_at":"2026-11-08T14:51:02+00:00","updated_at":"2026-11-08T14:51:02+00:00","category":"other","confidence":0.7,"triage":{"at":"2026-11-08T14:51:02Z","model":"claude-haiku-5-5","output":{"fix":"- OpenRemote: upgrade to `1.32.2` or later","reach":"internet","title":"OpenRemote: stored XSS lets admin uploads run scripts in victims' browsers","impact":"medium","summary":"OpenRemote before 1.32.2 serves uploaded HTML or SVG files from its image endpoint as text/html or image/svg+xml without authentication. A user with write:admin permission can plant JavaScript that runs in the application's origin when a victim opens the link.","audience":"businesses","category":"other","nicknames":[],"who_cares":["openremote","self-hosted","iot"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"Scripts run in victims' browsers within the OpenRemote origin","analyst_note":"","how_to_check":"- Check the OpenRemote Manager version; affected if it is older than `1.32.2`\n- Confirm whether the Manager configuration file upload endpoint is reachable by users with write:admin permission","plain_action":"","product_name":"OpenRemote","needs_analyst":false,"not_affected_if":["version-1.32.2-or-later","no-write-admin-users"],"who_is_affected":"Teams running self-hosted OpenRemote Manager below 1.32.2 are exposed, and the risk is greatest where many people hold write:admin rights. Exploitation needs an authenticated admin-level account, and a victim must open a crafted link. Instances already on 1.32.2 or later are not affected.","user_interaction":"yes","product_ecosystem":"vendor","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000746,"input_tokens":4633,"output_tokens":566,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-124435':14A,17A '-2026':13A,16A '1.32.2':27B,69C 'admin':5A,49B,84C 'allow':79C 'applic':58B,123C 'attack':101C 'authent':44B,80C 'browser':11A 'configur':97C 'contain':70C,92C 'cross':74C 'cross-sit':73C 'cve':12A,15A 'endpoint':37B,100C,110C 'execut':119C 'file':33B,91C,98C,113C 'host':24B 'html':30B,88C 'imag':36B,108C 'image/svg':41B,117C 'iot':19B 'javascript':53B,93C 'let':4A 'link':66B 'lure':103C 'manag':96C 'open':64B 'openremot':1A,20B,25B,67C 'openremote':18A 'origin':60B,125C 'permiss':50B,85C 'plant':52B 'retriev':109C 'run':7A,55B 'script':8A,76C,120C 'self':23B 'self-host':22B 'serv':28B,112C 'site':75C 'store':2A,72C 'svg':32B,90C 'text/html':39B,115C 'unauthent':107C 'upload':6A,29B,87C,99C 'user':46B,81C 'via':94C 'victim':10A,63B,104C 'vulner':77C 'within':121C 'without':43B 'write':48B,83C 'xml':42B,118C 'xss':3A","nicknames":[],"mitigations":[],"who_affected":"Teams running self-hosted OpenRemote Manager below 1.32.2 are exposed, and the risk is greatest where many people hold write:admin rights. Exploitation needs an authenticated admin-level account, and a victim must open a crafted link. Instances already on 1.32.2 or later are not affected.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["openremote"],"ptokens":["openremote"],"labels":["iot","medium","openremote","other","selfhosted","vendor"],"campaign_type":null,"search_a":"'-124435':14A,17A '-2026':13A,16A 'admin':5A 'browser':11A 'cve':12A,15A 'let':4A 'openremot':1A 'openremote':18A 'run':7A 'script':8A 'store':2A 'upload':6A 'victim':10A 'xss':3A","search_b":"'1.32.2':27B 'admin':49B 'applic':58B 'authent':44B 'endpoint':37B 'file':33B 'host':24B 'html':30B 'imag':36B 'image/svg':41B 'iot':19B 'javascript':53B 'link':66B 'open':64B 'openremot':20B,25B 'origin':60B 'permiss':50B 'plant':52B 'run':55B 'self':23B 'self-host':22B 'serv':28B 'svg':32B 'text/html':39B 'upload':29B 'user':46B 'victim':63B 'without':43B 'write':48B 'xml':42B","search_c":"'1.32.2':69C 'admin':84C 'allow':79C 'applic':123C 'attack':101C 'authent':80C 'configur':97C 'contain':70C,92C 'cross':74C 'cross-sit':73C 'endpoint':100C,110C 'execut':119C 'file':91C,98C,113C 'html':88C 'imag':108C 'image/svg':117C 'javascript':93C 'lure':103C 'manag':96C 'openremot':67C 'origin':125C 'permiss':85C 'retriev':109C 'script':76C,120C 'serv':112C 'site':75C 'store':72C 'svg':90C 'text/html':115C 'unauthent':107C 'upload':87C,99C 'user':81C 'via':94C 'victim':104C 'vulner':77C 'within':121C 'write':83C 'xml':118C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-23T12:42:20+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/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-124435","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-124435","severity":null,"published_at":"2026-11-08T14:18:09+00:00","modified_at":"2026-11-08T14:18:09+00:00","first_seen_at":"2026-11-08T14:48:38+00:00","fetched_at":"2026-11-08T14:48:38+00:00","note":null}],"documents":[{"id":102054,"url":"https://github.com/openremote/core/security/advisories/GHSA-vgp4-96p8-3w8v","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-23T12:42:20+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":102055,"url":"https://www.vulncheck.com/advisories/openremote-before-1.32.2-stored-xss-via-manager-configuration-image-upload","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"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}