{"id":"CVE-2026-119758","kind":"vulnerability","aliases":["CVE-2026-119758"],"related":[],"title":"ERPNext OCR app: authenticated users can read arbitrary server files","description":"ERPNext OCR app for Frappe/ERPNext through 1.1.1 contains a missing authorization and path traversal vulnerability that allows any authenticated user to read arbitrary server files by passing a fully client-controlled path argument to the whitelisted read_document method. Attackers can supply local file paths to bypass Frappe's File doctype permission model and access other users' private uploads, or supply arbitrary URLs to trigger server-side requests reaching internal services and cloud metadata endpoints.","summary":"The ERPNext OCR app for Frappe lets any logged-in user pass a client-controlled path to its whitelisted read_document method. An attacker can read arbitrary server files, including other users' private uploads, or make the server fetch internal URLs such as cloud metadata endpoints.","severity":"high","cvss":7.1,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"erpnext_ocr","fixed":[],"affected":"<= 1.1.1","ecosystem":"frappe"}],"ecosystems":[],"tags":["erpnext","frappe","package","self-hosted"],"not_affected_if":["app-not-installed"],"how_to_check":"- Run `bench --site <site> list-apps` (or `bench list-apps`) and look for erpnext_ocr.\n- Check the version with `bench version` (lists app versions); 1.1.1 or earlier is affected.\n- Until a fix is published (none stated by the advisory), uninstall the app with `bench --site <site> uninstall-app erpnext_ocr` or restrict accounts, and review access logs for calls to the read_document method. Also check cloud metadata access (IMDS) from the server.","fix":null,"status":"open","published_at":"2026-11-06T18:17:58+00:00","first_seen_at":"2026-11-06T18:44:08+00:00","triaged_at":"2026-11-06T18:45:18+00:00","updated_at":"2026-11-06T18:45:38+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-06T18:45:18Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"ERPNext OCR app: authenticated users can read arbitrary server files","impact":"high","summary":"The ERPNext OCR app for Frappe lets any logged-in user pass a client-controlled path to its whitelisted read_document method. An attacker can read arbitrary server files, including other users' private uploads, or make the server fetch internal URLs such as cloud metadata endpoints.","audience":"businesses","category":"package","nicknames":[],"who_cares":["erpnext","frappe","self-hosted"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"Attacker reads server files and internal cloud metadata credentials","analyst_note":"Confirm the fixed version and the vendor advisory at www.vulncheck.com; sources do not state a fix.","how_to_check":"- Check whether the OCR app is installed on the Frappe/ERPNext bench, for example by listing apps in `bench list-apps` (unknown exact command from sources)\n- Confirm the installed version is `1.1.1` or earlier","plain_action":"","needs_analyst":true,"not_affected_if":["app-not-installed"],"who_is_affected":"Sites running the ERPNext OCR app for Frappe/ERPNext through version 1.1.1 are exposed, since any authenticated user can reach read_document. Sites that do not install this app are not affected. Who can skip it: teams without the OCR app installed, and those that restrict who holds an account.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.00071,"input_tokens":4320,"output_tokens":555,"severity_before":"high"},"analyst_status":"done","analyst_note":"Confirm the fixed version and the vendor advisory at www.vulncheck.com; sources do not state a fix.","search":"'-119758':13A,16A '-2026':12A,15A '1.1.1':79C 'access':128C 'allow':89C 'app':3A,28B,75C 'arbitrari':8A,53B,95C,135C 'argument':106C 'attack':50B,113C 'authent':4A,91C 'author':83C 'bypass':120C 'client':40B,103C 'client-control':39B,102C 'cloud':70B,147C 'contain':80C 'control':41B,104C 'cve':11A,14A 'doctyp':124C 'document':47B,111C 'endpoint':72B,149C 'erpnext':1A,17A,19B,26B,73C 'fetch':65B 'file':10A,55B,97C,117C,123C 'frapp':20B,30B,121C 'frappe/erpnext':77C 'fulli':101C 'host':24B 'includ':56B 'intern':66B,144C 'let':31B 'local':116C 'log':34B 'logged-in':33B 'make':62B 'metadata':71B,148C 'method':48B,112C 'miss':82C 'model':126C 'ocr':2A,18A,27B,74C 'packag':21B 'pass':37B,99C 'path':42B,85C,105C,118C 'permiss':125C 'privat':59B,131C 'reach':143C 'read':7A,46B,52B,94C,110C 'request':142C 'self':23B 'self-host':22B 'server':9A,54B,64B,96C,140C 'server-sid':139C 'servic':145C 'side':141C 'suppli':115C,134C 'travers':86C 'trigger':138C 'upload':60B,132C 'url':67B,136C 'user':5A,36B,58B,92C,130C 'vulner':87C 'whitelist':45B,109C","nicknames":[],"mitigations":[],"who_affected":"Sites running the ERPNext OCR app for Frappe/ERPNext through version 1.1.1 are exposed, since any authenticated user can reach read_document. Sites that do not install this app are not affected. Who can skip it: teams without the OCR app installed, and those that restrict who holds an account.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"pkeys":["erpnextocr"],"ptokens":["erpnext","ocr"],"labels":["erpnext","frappe","high","package","selfhosted"],"campaign_type":null,"search_a":"'-119758':13A,16A '-2026':12A,15A 'app':3A 'arbitrari':8A 'authent':4A 'cve':11A,14A 'erpnext':1A,17A 'file':10A 'ocr':2A,18A 'read':7A 'server':9A 'user':5A","search_b":"'app':28B 'arbitrari':53B 'attack':50B 'client':40B 'client-control':39B 'cloud':70B 'control':41B 'document':47B 'endpoint':72B 'erpnext':19B,26B 'fetch':65B 'file':55B 'frapp':20B,30B 'host':24B 'includ':56B 'intern':66B 'let':31B 'log':34B 'logged-in':33B 'make':62B 'metadata':71B 'method':48B 'ocr':27B 'packag':21B 'pass':37B 'path':42B 'privat':59B 'read':46B,52B 'self':23B 'self-host':22B 'server':54B,64B 'upload':60B 'url':67B 'user':36B,58B 'whitelist':45B","search_c":"'1.1.1':79C 'access':128C 'allow':89C 'app':75C 'arbitrari':95C,135C 'argument':106C 'attack':113C 'authent':91C 'author':83C 'bypass':120C 'client':103C 'client-control':102C 'cloud':147C 'contain':80C 'control':104C 'doctyp':124C 'document':111C 'endpoint':149C 'erpnext':73C 'file':97C,117C,123C 'frapp':121C 'frappe/erpnext':77C 'fulli':101C 'intern':144C 'local':116C 'metadata':148C 'method':112C 'miss':82C 'model':126C 'ocr':74C 'pass':99C 'path':85C,105C,118C 'permiss':125C 'privat':131C 'reach':143C 'read':94C,110C 'request':142C 'server':96C,140C 'server-sid':139C 'servic':145C 'side':141C 'suppli':115C,134C 'travers':86C 'trigger':138C 'upload':132C 'url':136C 'user':92C,130C 'vulner':87C 'whitelist':109C","first_public_at":"2026-11-06T18:17:58+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/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":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119758","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119758","severity":null,"published_at":"2026-11-06T18:17:58+00:00","modified_at":"2026-11-06T18:17:58+00:00","first_seen_at":"2026-11-06T18:44:08+00:00","fetched_at":"2026-11-06T18:44:08+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-119758:1918","url":null,"severity":null,"published_at":"2026-11-06T18:45:38+00:00","modified_at":"2026-11-06T18:45:38+00:00","first_seen_at":"2026-11-06T18:45:38+00:00","fetched_at":"2026-11-06T18:45:38+00:00","note":"VulnCheck advisory (CNA) read: erpnext_ocr <= 1.1.1, credit Behruz Chilmatov. No fixed version stated by it or by the Monogramm/erpnext_ocr repo page; no maintainer advisory found. Nothing verified (third-party source only). X not searched."}],"documents":[{"id":88841,"url":"https://www.vulncheck.com/advisories/erpnext-ocr-path-traversal-and-ssrf-via-read-document","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.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"}