{"id":"CVE-2026-129172","kind":"vulnerability","aliases":["CVE-2026-129172"],"related":[],"title":"EdgeEver: stored XSS in backup restore endpoint lets a shared link run script","description":"EdgeEver 1.9.0 before 2.13.0 contains a stored cross-site scripting vulnerability in the backup restore endpoint PUT /api/v1/restores/json/resources/:id, which accepts a resource kind of image paired with a text/html MIME type without checking consistency. Authenticated members can share the note and send the public blob link to a victim, whose browser executes the script to mint a non-expiring API token granting read and write access to the victim's notes.","summary":"EdgeEver versions 1.9.0 before 2.13.0 let an authenticated member upload a restore resource marked as an image but served as text/html, and the endpoint does not check that these agree. A victim who opens the shared public blob link runs the attacker's script in their browser, which can mint a non-expiring API token with read and write access to the victim's notes.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"EdgeEver","fixed":[],"affected":"","ecosystem":"vendor"}],"ecosystems":["vendor"],"tags":["edgeever","notes","other","self-hosted"],"not_affected_if":["no-restore-feature-use","version-2.13.0-or-later"],"how_to_check":"- Check the EdgeEver version in use; affected versions are 1.9.0 up to but not including 2.13.0.\n- Look for `PUT /api/v1/restores/json/resources/` requests in web server or proxy logs.","fix":"- EdgeEver: move to `2.13.0` or later (the sources give 2.13.0 as the first fixed version)","status":"open","published_at":"2026-11-13T18:17:42+00:00","first_seen_at":"2026-11-13T18:49:31+00:00","triaged_at":"2026-11-13T18:51:49+00:00","updated_at":"2026-11-13T18:51:49+00:00","category":"other","confidence":0.7,"triage":{"at":"2026-11-13T18:51:49Z","model":"claude-haiku-5-5","output":{"fix":"- EdgeEver: move to `2.13.0` or later (the sources give 2.13.0 as the first fixed version)","reach":"internet","title":"EdgeEver: stored XSS in backup restore endpoint lets a shared link run script","impact":"high","summary":"EdgeEver versions 1.9.0 before 2.13.0 let an authenticated member upload a restore resource marked as an image but served as text/html, and the endpoint does not check that these agree. A victim who opens the shared public blob link runs the attacker's script in their browser, which can mint a non-expiring API token with read and write access to the victim's notes.","audience":"businesses","category":"other","nicknames":[],"who_cares":["edgeever","self-hosted","notes"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"victim's notes readable and writable through a token minted by attacker script","analyst_note":"Confirm the fixed version and whether the public blob link is served on the same origin; check the GitHub patch and the VulnCheck advisory for the exact mitigation.","how_to_check":"- Check the EdgeEver version in use; affected versions are 1.9.0 up to but not including 2.13.0.\n- Look for `PUT /api/v1/restores/json/resources/` requests in web server or proxy logs.\n- unknown","plain_action":"","product_name":"EdgeEver","needs_analyst":true,"not_affected_if":["version-2.13.0-or-later","no-restore-feature-use"],"who_is_affected":"Teams that self-host or run EdgeEver 1.9.0 through versions before 2.13.0 where members can use the backup restore feature and share public blob links. The attack needs an authenticated member account and a victim who opens the link. Instances already on 2.13.0 or later are not affected.","user_interaction":"yes","product_ecosystem":"vendor","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000801,"input_tokens":4654,"output_tokens":671,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-129172':16A,19A '-2026':15A,18A '/api/v1/restores/json/resources':111C '1.9.0':29B,94C '2.13.0':31B,96C 'accept':114C 'access':87B,161C 'agre':56B 'api':81B,155C 'attack':68B 'authent':34B,129C 'backup':5A,107C 'blob':64B,139C 'browser':73B,145C 'check':53B,127C 'consist':128C 'contain':97C 'cross':101C 'cross-sit':100C 'cve':14A,17A 'edgeev':1A,21B,27B,93C 'edgeever':20A 'endpoint':7A,50B,109C 'execut':146C 'expir':80B,154C 'grant':157C 'host':26B 'id':112C 'imag':43B,119C 'kind':117C 'let':8A,32B 'link':11A,65B,140C 'mark':40B 'member':35B,130C 'mime':124C 'mint':76B,150C 'non':79B,153C 'non-expir':78B,152C 'note':22B,92B,134C,166C 'open':60B 'pair':120C 'public':63B,138C 'put':110C 'read':84B,158C 'resourc':39B,116C 'restor':6A,38B,108C 'run':12A,66B 'script':13A,70B,103C,148C 'self':25B 'self-host':24B 'send':136C 'serv':45B 'share':10A,62B,132C 'site':102C 'store':2A,99C 'text/html':47B,123C 'token':82B,156C 'type':125C 'upload':36B 'version':28B 'victim':58B,90B,143C,164C 'vulner':104C 'whose':144C 'without':126C 'write':86B,160C 'xss':3A","nicknames":[],"mitigations":[],"who_affected":"Teams that self-host or run EdgeEver 1.9.0 through versions before 2.13.0 where members can use the backup restore feature and share public blob links. The attack needs an authenticated member account and a victim who opens the link. Instances already on 2.13.0 or later are not affected.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["edgeever"],"ptokens":["edgeever"],"labels":["edgeever","medium","notes","other","selfhosted","vendor"],"campaign_type":null,"search_a":"'-129172':16A,19A '-2026':15A,18A 'backup':5A 'cve':14A,17A 'edgeev':1A 'edgeever':20A 'endpoint':7A 'let':8A 'link':11A 'restor':6A 'run':12A 'script':13A 'share':10A 'store':2A 'xss':3A","search_b":"'1.9.0':29B '2.13.0':31B 'access':87B 'agre':56B 'api':81B 'attack':68B 'authent':34B 'blob':64B 'browser':73B 'check':53B 'edgeev':21B,27B 'endpoint':50B 'expir':80B 'host':26B 'imag':43B 'let':32B 'link':65B 'mark':40B 'member':35B 'mint':76B 'non':79B 'non-expir':78B 'note':22B,92B 'open':60B 'public':63B 'read':84B 'resourc':39B 'restor':38B 'run':66B 'script':70B 'self':25B 'self-host':24B 'serv':45B 'share':62B 'text/html':47B 'token':82B 'upload':36B 'version':28B 'victim':58B,90B 'write':86B","search_c":"'/api/v1/restores/json/resources':111C '1.9.0':94C '2.13.0':96C 'accept':114C 'access':161C 'api':155C 'authent':129C 'backup':107C 'blob':139C 'browser':145C 'check':127C 'consist':128C 'contain':97C 'cross':101C 'cross-sit':100C 'edgeev':93C 'endpoint':109C 'execut':146C 'expir':154C 'grant':157C 'id':112C 'imag':119C 'kind':117C 'link':140C 'member':130C 'mime':124C 'mint':150C 'non':153C 'non-expir':152C 'note':134C,166C 'pair':120C 'public':138C 'put':110C 'read':158C 'resourc':116C 'restor':108C 'script':103C,148C 'send':136C 'share':132C 'site':102C 'store':99C 'text/html':123C 'token':156C 'type':125C 'victim':143C,164C 'vulner':104C 'whose':144C 'without':126C 'write':160C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-13T18:17:42+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/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-129172","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-129172","severity":null,"published_at":"2026-11-13T18:17:42+00:00","modified_at":"2026-11-13T18:17:42+00:00","first_seen_at":"2026-11-13T18:49:31+00:00","fetched_at":"2026-11-13T18:49:31+00:00","note":null}],"documents":[{"id":148632,"url":"https://github.com/tianma-if/edgeever/commit/dc5a55a1c26d6add0e28d95dc0b282c611692e34","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":148633,"url":"https://www.vulncheck.com/advisories/edgeever-1.9.0-before-2.13.0-stored-xss-via-backup-restore-and-public-shares","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"}