{"id":"CVE-2026-65965","kind":"vulnerability","aliases":["CVE-2026-65965"],"related":[],"title":"ideon: read-only viewers can overwrite or wipe project canvases","description":"ideon is a self-hosted visual workspace. Prior to version 0.9.4, several project mutation endpoints under /api/projects/[id]/* resolve the caller's project role but never enforce it, so a user who was granted only the read-only viewer role on a project can perform write operations on that project. The most severe is POST /api/projects/[id]/graph, which deletes every block and link in the project and re-inserts client-supplied ones. A viewer can silently rewrite or wipe the entire canvas of a project they were invited to read. The application clearly intends viewer to be read-only: the collaborators endpoint, the automation endpoints, and the realtime Yjs sync path all reject write attempts from viewers. These specific HTTP handlers simply omit the guard their siblings enforce. This issue has been patched in version 0.9.4.","summary":"ideon is a self-hosted visual workspace. Users granted only the read-only viewer role on a project can call project write endpoints, including one that deletes all blocks and links and inserts attacker-supplied ones.","severity":"high","cvss":8.7,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ideon","other","self-hosted"],"not_affected_if":["patched-0.9.4-or-later"],"how_to_check":"- Check the installed ideon version; it is affected before `0.9.4`.\n- Review which users hold the viewer role on projects, since only they can exploit this.","fix":"- Upgrade ideon to `0.9.4` or later.","status":"open","published_at":"2026-11-11T21:16:46+00:00","first_seen_at":"2026-11-11T21:29:09+00:00","triaged_at":"2026-11-11T21:30:38+00:00","updated_at":"2026-11-11T21:30:38+00:00","category":"other","confidence":0.8,"triage":{"at":"2026-11-11T21:30:38Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade ideon to `0.9.4` or later.","reach":"network","title":"ideon: read-only viewers can overwrite or wipe project canvases","impact":"medium","summary":"ideon is a self-hosted visual workspace. Users granted only the read-only viewer role on a project can call project write endpoints, including one that deletes all blocks and links and inserts attacker-supplied ones.","audience":"businesses","category":"other","nicknames":[],"who_cares":["self-hosted","ideon"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"viewer account wipes and rewrites an entire project canvas","analyst_note":"","how_to_check":"- Check the installed ideon version; it is affected before `0.9.4`.\n- Review which users hold the viewer role on projects, since only they can exploit this.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["patched-0.9.4-or-later"],"who_is_affected":"Only self-hosted ideon instances before `0.9.4` where users with the viewer role on a project can reach the project mutation endpoints under /api/projects/[id]/*. The collaborators, automation and realtime sync paths already enforce viewer read-only status, so the flaw is confined to the affected HTTP handlers. Teams not running ideon, or running a patched version, can skip it.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000728,"input_tokens":4741,"output_tokens":507,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-65965':14A,17A '/api/projects':79C,119C '/graph':121C '0.9.4':73C,203C 'applic':158C 'attack':59B 'attacker-suppli':58B 'attempt':182C 'autom':171C 'block':53B,125C 'call':44B 'caller':83C 'canva':148C 'canvas':11A 'clear':159C 'client':136C 'client-suppli':135C 'collabor':168C 'cve':12A,15A 'delet':51B,123C 'endpoint':47B,77C,169C,172C 'enforc':89C,195C 'entir':147C 'everi':124C 'grant':32B,96C 'guard':192C 'handler':188C 'host':22B,28B,67C 'http':187C 'id':80C,120C 'ideon':1A,18B,23B,62C 'includ':48B 'insert':57B,134C 'intend':160C 'invit':154C 'issu':197C 'link':55B,127C 'mutat':76C 'never':88C 'omit':190C 'one':49B,61B,138C 'oper':110C 'overwrit':7A 'patch':200C 'path':178C 'perform':108C 'post':118C 'prior':70C 'project':10A,42B,45B,75C,85C,106C,113C,130C,151C 're':133C 're-insert':132C 'read':3A,36B,100C,156C,165C 'read-on':2A,35B,99C,164C 'realtim':175C 'reject':180C 'resolv':81C 'rewrit':143C 'role':39B,86C,103C 'self':21B,27B,66C 'self-host':20B,26B,65C 'sever':74C,116C 'sibl':194C 'silent':142C 'simpli':189C 'specif':186C 'suppli':60B,137C 'sync':177C 'user':31B,93C 'version':72C,202C 'viewer':5A,38B,102C,140C,161C,184C 'visual':29B,68C 'wipe':9A,145C 'workspac':30B,69C 'write':46B,109C,181C 'yjs':176C","nicknames":[],"mitigations":[],"who_affected":"Only self-hosted ideon instances before `0.9.4` where users with the viewer role on a project can reach the project mutation endpoints under /api/projects/[id]/*. The collaborators, automation and realtime sync paths already enforce viewer read-only status, so the flaw is confined to the affected HTTP handlers. Teams not running ideon, or running a patched version, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["high","ideon","other","selfhosted"],"campaign_type":null,"search_a":"'-2026':13A,16A '-65965':14A,17A 'canvas':11A 'cve':12A,15A 'ideon':1A 'overwrit':7A 'project':10A 'read':3A 'read-on':2A 'viewer':5A 'wipe':9A","search_b":"'attack':59B 'attacker-suppli':58B 'block':53B 'call':44B 'delet':51B 'endpoint':47B 'grant':32B 'host':22B,28B 'ideon':18B,23B 'includ':48B 'insert':57B 'link':55B 'one':49B,61B 'project':42B,45B 'read':36B 'read-on':35B 'role':39B 'self':21B,27B 'self-host':20B,26B 'suppli':60B 'user':31B 'viewer':38B 'visual':29B 'workspac':30B 'write':46B","search_c":"'/api/projects':79C,119C '/graph':121C '0.9.4':73C,203C 'applic':158C 'attempt':182C 'autom':171C 'block':125C 'caller':83C 'canva':148C 'clear':159C 'client':136C 'client-suppli':135C 'collabor':168C 'delet':123C 'endpoint':77C,169C,172C 'enforc':89C,195C 'entir':147C 'everi':124C 'grant':96C 'guard':192C 'handler':188C 'host':67C 'http':187C 'id':80C,120C 'ideon':62C 'insert':134C 'intend':160C 'invit':154C 'issu':197C 'link':127C 'mutat':76C 'never':88C 'omit':190C 'one':138C 'oper':110C 'patch':200C 'path':178C 'perform':108C 'post':118C 'prior':70C 'project':75C,85C,106C,113C,130C,151C 're':133C 're-insert':132C 'read':100C,156C,165C 'read-on':99C,164C 'realtim':175C 'reject':180C 'resolv':81C 'rewrit':143C 'role':86C,103C 'self':66C 'self-host':65C 'sever':74C,116C 'sibl':194C 'silent':142C 'simpli':189C 'specif':186C 'suppli':137C 'sync':177C 'user':93C 'version':72C,202C 'viewer':102C,140C,161C,184C 'visual':68C 'wipe':145C 'workspac':69C 'write':109C,181C 'yjs':176C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-07-03T20:39:45+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/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":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-65965","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-65965","severity":null,"published_at":"2026-11-11T21:16:46+00:00","modified_at":"2026-11-11T21:16:46+00:00","first_seen_at":"2026-11-11T21:29:09+00:00","fetched_at":"2026-11-11T21:29:09+00:00","note":null}],"documents":[{"id":129009,"url":"https://github.com/3xpyth0n/ideon/commit/ed58ca7a70543c7fc4ebfef59a2ca34e480e44d1","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":129010,"url":"https://github.com/3xpyth0n/ideon/releases/tag/v0.9.4","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":129011,"url":"https://github.com/3xpyth0n/ideon/security/advisories/GHSA-v3qr-4v8m-29rh","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-07-03T20:39:45+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.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"}