{"id":"CVE-2026-71495","kind":"vulnerability","aliases":["CVE-2026-71495"],"related":[],"title":"Wanderer: unauthenticated trail download fetches attacker-chosen URLs, exposing internal services","description":"Wanderer is a self-hosted trail database for saving and sharing adventures. Prior to 0.20.0, when PUBLIC_PRIVATE_INSTANCE is not set to true, the unauthenticated POST /api/v1/trail/download handler passes the attacker-controlled JSON url field directly to event.fetch() and returns the fetched response. This allows requests to internal services such as db:8090 and search:7700, cloud metadata addresses, and other network destinations, exposing returned data and permitting internal network reconnaissance or denial of service. This issue is fixed in version 0.20.0.","summary":"Wanderer, a self-hosted trail database, has an endpoint that fetches any URL supplied in a request and returns the response without requiring login when public-private mode is off. An attacker can use the server to reach internal services and cloud metadata addresses, reading returned data and scanning the internal network.","severity":"critical","cvss":10.0,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["docker","other","self-hosted","wanderer"],"not_affected_if":["public-private-instance-true","version-0.20.0-or-later"],"how_to_check":"- Check the Wanderer version in use; affected versions are those before `0.20.0`.\n- Check whether `PUBLIC_PRIVATE_INSTANCE` is set to `true` in the deployment configuration; if it is not, the endpoint is reachable without login.","fix":"- Upgrade Wanderer to `0.20.0` or later.","status":"open","published_at":"2026-11-06T19:17:56+00:00","first_seen_at":"2026-11-06T19:43:49+00:00","triaged_at":"2026-11-06T19:45:48+00:00","updated_at":"2026-11-06T19:45:48+00:00","category":"other","confidence":0.8,"triage":{"at":"2026-11-06T19:45:48Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Wanderer to `0.20.0` or later.","reach":"internet","title":"Wanderer: unauthenticated trail download fetches attacker-chosen URLs, exposing internal services","impact":"medium","summary":"Wanderer, a self-hosted trail database, has an endpoint that fetches any URL supplied in a request and returns the response without requiring login when public-private mode is off. An attacker can use the server to reach internal services and cloud metadata addresses, reading returned data and scanning the internal network.","audience":"businesses","category":"other","nicknames":[],"who_cares":["self-hosted","wanderer","docker"],"confidence":0.8,"fix_status":"available","needs_auth":"no","worst_case":"Attacker reads internal services and cloud metadata, scans the internal network","analyst_note":"","how_to_check":"- Check the Wanderer version in use; affected versions are those before `0.20.0`.\n- Check whether `PUBLIC_PRIVATE_INSTANCE` is set to `true` in the deployment configuration; if it is not, the endpoint is reachable without login.","plain_action":"","needs_analyst":false,"not_affected_if":["version-0.20.0-or-later","public-private-instance-true"],"who_is_affected":"Self-hosted Wanderer instances below `0.20.0` where `PUBLIC_PRIVATE_INSTANCE` is not set to true are exposed, since the POST /api/v1/trail/download handler then needs no authentication. Instances on a private network with the endpoint unreachable from outside carry less risk, but the server can still reach internal services, so the internal network exposure remains. Instances already on 0.20.0 or later are not affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"critical"},"cost_usd":0.000746,"input_tokens":4353,"output_tokens":622,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-71495':15A,18A '/api/v1/trail/download':107C '0.20.0':94C,163C '7700':137C '8090':134C 'address':70B,140C 'adventur':91C 'allow':126C 'attack':7A,58B,112C 'attacker-chosen':6A 'attacker-control':111C 'chosen':8A 'cloud':68B,138C 'control':113C 'cve':13A,16A 'data':73B,147C 'databas':31B,86C 'db':133C 'denial':154C 'destin':144C 'direct':117C 'docker':19B 'download':4A 'endpoint':34B 'event.fetch':119C 'expos':10A,145C 'fetch':5A,36B,123C 'field':116C 'fix':160C 'handler':108C 'host':23B,29B,84C 'instanc':98C 'intern':11A,65B,77B,129C,150C 'issu':158C 'json':114C 'login':49B 'metadata':69B,139C 'mode':54B 'network':78B,143C,151C 'pass':109C 'permit':149C 'post':106C 'prior':92C 'privat':53B,97C 'public':52B,96C 'public-priv':51B 'reach':64B 'read':71B 'reconnaiss':152C 'request':42B,127C 'requir':48B 'respons':46B,124C 'return':44B,72B,121C,146C 'save':88C 'scan':75B 'search':136C 'self':22B,28B,83C 'self-host':21B,27B,82C 'server':62B 'servic':12A,66B,130C,156C 'set':101C 'share':90C 'suppli':39B 'trail':3A,30B,85C 'true':103C 'unauthent':2A,105C 'url':9A,38B,115C 'use':60B 'version':162C 'wander':1A,24B,25B,79C 'without':47B","nicknames":[],"mitigations":[],"who_affected":"Self-hosted Wanderer instances below `0.20.0` where `PUBLIC_PRIVATE_INSTANCE` is not set to true are exposed, since the POST /api/v1/trail/download handler then needs no authentication. Instances on a private network with the endpoint unreachable from outside carry less risk, but the server can still reach internal services, so the internal network exposure remains. Instances already on 0.20.0 or later are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["critical","docker","other","selfhosted","wanderer"],"campaign_type":null,"search_a":"'-2026':14A,17A '-71495':15A,18A 'attack':7A 'attacker-chosen':6A 'chosen':8A 'cve':13A,16A 'download':4A 'expos':10A 'fetch':5A 'intern':11A 'servic':12A 'trail':3A 'unauthent':2A 'url':9A 'wander':1A","search_b":"'address':70B 'attack':58B 'cloud':68B 'data':73B 'databas':31B 'docker':19B 'endpoint':34B 'fetch':36B 'host':23B,29B 'intern':65B,77B 'login':49B 'metadata':69B 'mode':54B 'network':78B 'privat':53B 'public':52B 'public-priv':51B 'reach':64B 'read':71B 'request':42B 'requir':48B 'respons':46B 'return':44B,72B 'scan':75B 'self':22B,28B 'self-host':21B,27B 'server':62B 'servic':66B 'suppli':39B 'trail':30B 'url':38B 'use':60B 'wander':24B,25B 'without':47B","search_c":"'/api/v1/trail/download':107C '0.20.0':94C,163C '7700':137C '8090':134C 'address':140C 'adventur':91C 'allow':126C 'attack':112C 'attacker-control':111C 'cloud':138C 'control':113C 'data':147C 'databas':86C 'db':133C 'denial':154C 'destin':144C 'direct':117C 'event.fetch':119C 'expos':145C 'fetch':123C 'field':116C 'fix':160C 'handler':108C 'host':84C 'instanc':98C 'intern':129C,150C 'issu':158C 'json':114C 'metadata':139C 'network':143C,151C 'pass':109C 'permit':149C 'post':106C 'prior':92C 'privat':97C 'public':96C 'reconnaiss':152C 'request':127C 'respons':124C 'return':121C,146C 'save':88C 'search':136C 'self':83C 'self-host':82C 'servic':130C,156C 'set':101C 'share':90C 'trail':85C 'true':103C 'unauthent':105C 'url':115C 'version':162C 'wander':79C","first_public_at":"2026-09-28T16:35:51+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:H","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-71495","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-71495","severity":null,"published_at":"2026-11-06T19:17:56+00:00","modified_at":"2026-11-06T19:17:56+00:00","first_seen_at":"2026-11-06T19:43:49+00:00","fetched_at":"2026-11-06T19:43:49+00:00","note":null}],"documents":[{"id":89358,"url":"https://github.com/open-wanderer/wanderer/commit/c371337b3db1d2895b5cad651046ef0ad4dfc802","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":89359,"url":"https://github.com/open-wanderer/wanderer/releases/tag/v0.20.0","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":89360,"url":"https://github.com/open-wanderer/wanderer/security/advisories/GHSA-7vqq-mjjr-h9j5","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-09-28T16:35:51+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}