{"id":"CVE-2026-68507","kind":"vulnerability","aliases":["CVE-2026-68507"],"related":[],"title":"ideon: unauthenticated link-preview endpoint lets anyone make server fetch URLs","description":"ideon is a self-hosted visual workspace. Prior to version 0.9.5, ideon's link-preview endpoint requires no authentication at all and forwards any URL a caller supplies straight into a server-side fetch. The app does have a general-purpose SSRF guard (safeFetch/validateSafeUrl in src/app/lib/ssrf.ts), but this route sits behind no login check whatsoever, making it a fully open, anonymous URL-fetch relay - and the guard's IP blocklist itself has a gap that lets it reach the server's own loopback interface via the 0.0.0.0 \"any address\" bypass, a well-documented SSRF-filter evasion technique on Linux. This issue has been patched in version 0.9.5.","summary":"ideon, a self-hosted visual workspace, has a link-preview endpoint that needs no login and forwards any caller-supplied URL into a server-side fetch. Its SSRF guard has a gap that lets requests reach the server's own loopback interface via 0.0.0.0.","severity":"medium","cvss":6.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ideon","package","self-hosted"],"not_affected_if":["version-0.9.5-or-later"],"how_to_check":"- Check the installed ideon version; affected versions are those before `0.9.5`.\n- Confirm whether the link-preview route is reachable from the network without logging in.","fix":"- ideon: upgrade to `0.9.5`.","status":"open","published_at":"2026-11-11T21:16:47+00:00","first_seen_at":"2026-11-11T21:29:09+00:00","triaged_at":"2026-11-11T21:30:48+00:00","updated_at":"2026-11-11T21:30:48+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-11T21:30:48Z","model":"claude-haiku-5-5","output":{"fix":"- ideon: upgrade to `0.9.5`.","reach":"internet","title":"ideon: unauthenticated link-preview endpoint lets anyone make server fetch URLs","impact":"medium","summary":"ideon, a self-hosted visual workspace, has a link-preview endpoint that needs no login and forwards any caller-supplied URL into a server-side fetch. Its SSRF guard has a gap that lets requests reach the server's own loopback interface via 0.0.0.0.","audience":"businesses","category":"package","nicknames":[],"who_cares":["ideon","self-hosted"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"anonymous callers make the server fetch internal URLs, including loopback","analyst_note":"","how_to_check":"- Check the installed ideon version; affected versions are those before `0.9.5`.\n- Confirm whether the link-preview route is reachable from the network without logging in.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["version-0.9.5-or-later"],"who_is_affected":"Teams that self-host ideon and expose it to a network, where the link-preview endpoint can be reached without authentication. Installations on `0.9.5` or later are not affected; instances kept private with no reachable endpoint are lower risk.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000717,"input_tokens":4704,"output_tokens":493,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-68507':15A,18A '0.0.0.0':71B,163C '0.9.5':83C,185C 'address':165C 'anonym':136C 'anyon':8A 'app':110C 'authent':92C 'behind':126C 'blocklist':146C 'bypass':166C 'caller':45B,100C 'caller-suppli':44B 'check':129C 'cve':13A,16A 'document':170C 'endpoint':6A,36B,89C 'evas':174C 'fetch':11A,53B,108C,139C 'filter':173C 'forward':42B,96C 'fulli':134C 'gap':59B,150C 'general':115C 'general-purpos':114C 'guard':56B,118C,143C 'host':23B,28B,77C 'ideon':1A,19B,24B,72C,84C 'interfac':69B,160C 'ip':145C 'issu':179C 'let':7A,61B,152C 'link':4A,34B,87C 'link-preview':3A,33B,86C 'linux':177C 'login':40B,128C 'loopback':68B,159C 'make':9A,131C 'need':38B 'open':135C 'packag':20B 'patch':182C 'preview':5A,35B,88C 'prior':80C 'purpos':116C 'reach':63B,154C 'relay':140C 'request':62B 'requir':90C 'rout':124C 'safefetch/validatesafeurl':119C 'self':22B,27B,76C 'self-host':21B,26B,75C 'server':10A,51B,65B,106C,156C 'server-sid':50B,105C 'side':52B,107C 'sit':125C 'src/app/lib/ssrf.ts':121C 'ssrf':55B,117C,172C 'ssrf-filter':171C 'straight':102C 'suppli':46B,101C 'techniqu':175C 'unauthent':2A 'url':12A,47B,98C,138C 'url-fetch':137C 'version':82C,184C 'via':70B,161C 'visual':29B,78C 'well':169C 'well-docu':168C 'whatsoev':130C 'workspac':30B,79C","nicknames":[],"mitigations":[],"who_affected":"Teams that self-host ideon and expose it to a network, where the link-preview endpoint can be reached without authentication. Installations on `0.9.5` or later are not affected; instances kept private with no reachable endpoint are lower risk.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["ideon","medium","package","selfhosted"],"campaign_type":null,"search_a":"'-2026':14A,17A '-68507':15A,18A 'anyon':8A 'cve':13A,16A 'endpoint':6A 'fetch':11A 'ideon':1A 'let':7A 'link':4A 'link-preview':3A 'make':9A 'preview':5A 'server':10A 'unauthent':2A 'url':12A","search_b":"'0.0.0.0':71B 'caller':45B 'caller-suppli':44B 'endpoint':36B 'fetch':53B 'forward':42B 'gap':59B 'guard':56B 'host':23B,28B 'ideon':19B,24B 'interfac':69B 'let':61B 'link':34B 'link-preview':33B 'login':40B 'loopback':68B 'need':38B 'packag':20B 'preview':35B 'reach':63B 'request':62B 'self':22B,27B 'self-host':21B,26B 'server':51B,65B 'server-sid':50B 'side':52B 'ssrf':55B 'suppli':46B 'url':47B 'via':70B 'visual':29B 'workspac':30B","search_c":"'0.0.0.0':163C '0.9.5':83C,185C 'address':165C 'anonym':136C 'app':110C 'authent':92C 'behind':126C 'blocklist':146C 'bypass':166C 'caller':100C 'check':129C 'document':170C 'endpoint':89C 'evas':174C 'fetch':108C,139C 'filter':173C 'forward':96C 'fulli':134C 'gap':150C 'general':115C 'general-purpos':114C 'guard':118C,143C 'host':77C 'ideon':72C,84C 'interfac':160C 'ip':145C 'issu':179C 'let':152C 'link':87C 'link-preview':86C 'linux':177C 'login':128C 'loopback':159C 'make':131C 'open':135C 'patch':182C 'preview':88C 'prior':80C 'purpos':116C 'reach':154C 'relay':140C 'requir':90C 'rout':124C 'safefetch/validatesafeurl':119C 'self':76C 'self-host':75C 'server':106C,156C 'server-sid':105C 'side':107C 'sit':125C 'src/app/lib/ssrf.ts':121C 'ssrf':117C,172C 'ssrf-filter':171C 'straight':102C 'suppli':101C 'techniqu':175C 'url':98C,138C 'url-fetch':137C 'version':82C,184C 'via':161C 'visual':78C 'well':169C 'well-docu':168C 'whatsoev':130C 'workspac':79C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-07-10T16:33:03+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/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-68507","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-68507","severity":null,"published_at":"2026-11-11T21:16:47+00:00","modified_at":"2026-11-11T21:16:47+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":129018,"url":"https://github.com/3xpyth0n/ideon/releases/tag/v0.9.5","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":129019,"url":"https://github.com/3xpyth0n/ideon/security/advisories/GHSA-vpc2-r395-534p","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-07-10T16:33:03+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"}