GHSA-vpc2-r395-534p: ideon: Unauthenticated /api/links/preview endpoint is an open SSRF relay, and its IP blocklist misses the 0.0.0.0/:: unspecified-address bypass
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.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ideonto a version that resolves this vulnerability.Fixed in 0.9.5
Event History
Frequently Asked Questions
Which deployments are exposed?
Self-hosted ideon instances running versions earlier than 0.9.5 are exposed if the /api/links/preview endpoint is reachable by untrusted network clients. The endpoint requires no authentication, so an anonymous remote caller can use it as a server-side URL-fetch relay.
What can an attacker access through this issue?
An attacker can cause the ideon server to fetch an arbitrary supplied URL. The SSRF guard can be bypassed for the server's loopback interface on Linux by using the 0.0.0.0 unspecified-address technique.
Is authentication or user interaction required for exploitation?
No. The affected endpoint has no login check, and the supplied vector requires neither privileges nor user interaction.
What should be done if upgrading is not immediately possible?
Restrict untrusted access to /api/links/preview, such as by placing the instance behind network access controls that only permit trusted users. This reduces exposure because the vulnerable route is otherwise anonymously accessible.
How can I determine whether my instance is affected?
Check the installed ideon version and whether /api/links/preview is accessible without authentication. Versions prior to 0.9.5 are affected; version 0.9.5 contains the patch.