{"id":"CVE-2026-119709","kind":"vulnerability","aliases":["CVE-2026-119709"],"related":[],"title":"Grimoire: unauthenticated request forgery reads internal URLs before 1.0.0","description":"Grimoire before 1.0.0 contains an unauthenticated server-side request forgery vulnerability in the /api/fetch-metadata POST handler that passes user-supplied URLs to getMetadata() without authentication checks. Attackers can submit URLs targeting loopback, internal-network, or cloud metadata endpoints and read the parsed title, description, and page content returned.","summary":"Grimoire before 1.0.0 has a POST endpoint, /api/fetch-metadata, that fetches any URL it is given without checking who is asking. An attacker can point it at loopback, internal network or cloud metadata addresses and read back the title, description and page content it returns.","severity":"medium","cvss":6.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["grimoire","package","self-hosted"],"not_affected_if":["no-external-access","version-1.0.0-or-later"],"how_to_check":"- Check the installed Grimoire version and whether it is below `1.0.0`.\n- Look for the `/api/fetch-metadata` route in the deployed application.\n- Confirm whether that route is reachable from outside the network.","fix":"- Move Grimoire to `1.0.0` or later.","status":"open","published_at":"2026-10-30T16:17:53+00:00","first_seen_at":"2026-10-30T16:31:26+00:00","triaged_at":"2026-10-30T16:32:11+00:00","updated_at":"2026-10-30T16:32:11+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-30T16:32:11Z","model":"claude-haiku-5-5","output":{"fix":"- Move Grimoire to `1.0.0` or later.","reach":"internet","title":"Grimoire: unauthenticated request forgery reads internal URLs before 1.0.0","impact":"medium","summary":"Grimoire before 1.0.0 has a POST endpoint, /api/fetch-metadata, that fetches any URL it is given without checking who is asking. An attacker can point it at loopback, internal network or cloud metadata addresses and read back the title, description and page content it returns.","audience":"businesses","category":"package","nicknames":[],"who_cares":["grimoire","self-hosted"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"internal services and cloud metadata responses readable by any caller","analyst_note":"Confirm the exact fixed version and whether the endpoint is exposed by default; check the NVD entry at https://nvd.nist.gov/vuln/detail/CVE-2026-119709.","how_to_check":"- Check the installed Grimoire version and whether it is below `1.0.0`.\n- Look for the `/api/fetch-metadata` route in the deployed application.\n- Confirm whether that route is reachable from outside the network.","plain_action":"","needs_analyst":true,"not_affected_if":["version-1.0.0-or-later","no-external-access"],"who_is_affected":"Teams running Grimoire before 1.0.0 where the /api/fetch-metadata endpoint is reachable by untrusted callers. Instances on a private network with no outside access, or on a version of 1.0.0 or later, are not exposed. The sources do not describe further configuration conditions.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000714,"input_tokens":4149,"output_tokens":598,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-119709':12A,15A '-2026':11A,14A '/api/fetch-metadata':28B,79C '1.0.0':9A,23B,67C 'address':53B 'ask':40B 'attack':42B,93C 'authent':91C 'back':56B 'check':37B,92C 'cloud':51B,103C 'contain':68C 'content':62B,114C 'cve':10A,13A 'descript':59B,111C 'endpoint':27B,105C 'fetch':30B 'forgeri':4A,75C 'getmetadata':89C 'given':35B 'grimoir':1A,16B,21B,65C 'handler':81C 'host':20B 'intern':6A,48B,100C 'internal-network':99C 'loopback':47B,98C 'metadata':52B,104C 'network':49B,101C 'packag':17B 'page':61B,113C 'pars':109C 'pass':83C 'point':44B 'post':26B,80C 'read':5A,55B,107C 'request':3A,74C 'return':64B,115C 'self':19B 'self-host':18B 'server':72C 'server-sid':71C 'side':73C 'submit':95C 'suppli':86C 'target':97C 'titl':58B,110C 'unauthent':2A,70C 'url':7A,32B,87C,96C 'user':85C 'user-suppli':84C 'vulner':76C 'without':36B,90C","nicknames":[],"mitigations":[],"who_affected":"Teams running Grimoire before 1.0.0 where the /api/fetch-metadata endpoint is reachable by untrusted callers. Instances on a private network with no outside access, or on a version of 1.0.0 or later, are not exposed. The sources do not describe further configuration conditions.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T16:17:53+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:L/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":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119709","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119709","severity":null,"published_at":"2026-10-30T16:17:53+00:00","modified_at":"2026-10-30T16:17:53+00:00","first_seen_at":"2026-10-30T16:31:26+00:00","fetched_at":"2026-10-30T16:31:26+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"}