{"id":"CVE-2024-58394","kind":"vulnerability","aliases":["CVE-2024-58394"],"related":[],"title":"Retool: image proxy serves attacker SVG, runs script in user sessions","description":"Retool before 3.88.0 contains a cross-site scripting vulnerability that allows unauthenticated attackers to execute scripts by proxying malicious SVG files through /api/imageProxy. Attackers can supply an attacker-hosted SVG in the url parameter, which is served from the Retool origin without a Content Security Policy, executing JavaScript in victims' sessions. Exploitation evidence was first observed by the Shadowserver Foundation on 2024-10-15.","summary":"Retool before 3.88.0 has an image proxy endpoint (/api/imageProxy) that serves an attacker-hosted SVG from the Retool origin without a Content Security Policy. An attacker who gets a victim to open the crafted link can run JavaScript in the victim's Retool session.","severity":"medium","cvss":6.1,"epss":0.00204,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["other","retool","self-hosted","web-apps"],"not_affected_if":["current-version","managed-hosting"],"how_to_check":"- Check the Retool version in use; affected builds are those before `3.88.0`.\n- Confirm whether the self-hosted instance exposes `/api/imageProxy`; unknown whether managed Retool cloud needs action.","fix":"- Upgrade self-hosted Retool to `3.88.0` or later.\n- unknown whether a configuration workaround exists.","status":"open","published_at":"2026-10-22T11:17:06+00:00","first_seen_at":"2026-10-23T21:57:30+00:00","triaged_at":"2026-10-25T04:02:10+00:00","updated_at":"2026-10-25T04:02:10+00:00","category":"other","confidence":0.7,"triage":{"at":"2026-10-25T04:02:10Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade self-hosted Retool to `3.88.0` or later.\n- unknown whether a configuration workaround exists.","reach":"internet","title":"Retool: image proxy serves attacker SVG, runs script in user sessions","impact":"medium","summary":"Retool before 3.88.0 has an image proxy endpoint (/api/imageProxy) that serves an attacker-hosted SVG from the Retool origin without a Content Security Policy. An attacker who gets a victim to open the crafted link can run JavaScript in the victim's Retool session.","category":"other","nicknames":[],"who_cares":["retool","self-hosted","web-apps"],"confidence":0.7,"needs_auth":"no","worst_case":"Attacker runs JavaScript in victims' Retool sessions.","analyst_note":"Confirm whether managed Retool cloud was affected and whether a non-upgrade workaround exists, via the NVD entry and Retool's advisory.","how_to_check":"- Check the Retool version in use; affected builds are those before `3.88.0`.\n- Confirm whether the self-hosted instance exposes `/api/imageProxy`; unknown whether managed Retool cloud needs action.","needs_analyst":true,"not_affected_if":["managed-hosting","current-version"],"who_is_affected":"Self-hosted Retool deployments running a version before `3.88.0` are exposed, because the image proxy is reachable without authentication. Managed hosting is not stated in the sources to be affected; teams on a current version can skip it.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000625,"input_tokens":3420,"output_tokens":566,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-10':135C '-15':136C '-2024':13A,16A '-58394':14A,17A '/api/imageproxy':34B,94C '2024':134C '3.88.0':28B,73C 'allow':82C 'app':25B 'attack':5A,39B,52B,84C,95C,100C 'attacker-host':38B,99C 'contain':74C 'content':48B,116C 'craft':60B 'cross':77C 'cross-sit':76C 'cve':12A,15A 'endpoint':33B 'evid':125C 'execut':86C,119C 'exploit':124C 'file':92C 'first':127C 'foundat':132C 'get':54B 'host':22B,40B,101C 'imag':2A,31B 'javascript':64B,120C 'link':61B 'malici':90C 'observ':128C 'open':58B 'origin':45B,113C 'paramet':106C 'polici':50B,118C 'proxi':3A,32B,89C 'retool':1A,19B,26B,44B,69B,71C,112C 'run':7A,63B 'script':8A,79C,87C 'secur':49B,117C 'self':21B 'self-host':20B 'serv':4A,36B,109C 'session':11A,70B,123C 'shadowserv':131C 'site':78C 'suppli':97C 'svg':6A,41B,91C,102C 'unauthent':83C 'url':105C 'user':10A 'victim':56B,67B,122C 'vulner':80C 'web':24B 'web-app':23B 'without':46B,114C","nicknames":[],"mitigations":[],"who_affected":"Self-hosted Retool deployments running a version before `3.88.0` are exposed, because the image proxy is reachable without authentication. Managed hosting is not stated in the sources to be affected; teams on a current version can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-22T11:17:06+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/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-2024-58394","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-58394","severity":null,"published_at":"2026-10-22T11:17:06+00:00","modified_at":"2026-10-22T17:40:46+00:00","first_seen_at":"2026-10-23T21:57:30+00:00","fetched_at":"2026-10-23T22:29:02+00:00","note":null},{"source":"epss","external_id":"CVE-2024-58394","url":"https://api.first.org/data/v1/epss?cve=CVE-2024-58394","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T07:15:51+00:00","fetched_at":"2026-10-24T07:15:51+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}