{"id":"CVE-2026-119144","kind":"vulnerability","aliases":["CVE-2026-119144"],"related":[],"title":"Frappe Framework: template injection lets logged-in users run server code","description":"Frappe Framework before 15.111.0 and 16.x before 16.21.0 contains a server-side template injection vulnerability because user-controlled message fields are rendered as templates without neutralization. An authenticated attacker holding a common operational role can inject template expressions that the server evaluates in an unrestricted context.","summary":"Frappe Framework renders user-controlled message fields as templates without neutralizing them. An authenticated user with a common operational role can inject template expressions that the server evaluates in an unrestricted context.","severity":"high","cvss":8.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["erpnext","frappe","python","runtime","self-hosted"],"not_affected_if":["fixed-version","no-untrusted-users"],"how_to_check":"- Check the installed Frappe version with `bench version` or the `frappe` entry in the app's requirements, and compare it to the fixed ranges.\n- Look for Frappe installations on the `15.x` line below `15.111.0` or the `16.x` line below `16.21.0`.","fix":"- Frappe Framework `15.111.0` or later on the 15 line\n- Frappe Framework `16.21.0` or later on the 16 line","status":"open","published_at":"2026-10-29T16:18:08+00:00","first_seen_at":"2026-10-29T16:25:59+00:00","triaged_at":"2026-10-29T16:28:00+00:00","updated_at":"2026-10-29T16:28:00+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-10-29T16:28:00Z","model":"claude-haiku-5-5","output":{"fix":"- Frappe Framework `15.111.0` or later on the 15 line\n- Frappe Framework `16.21.0` or later on the 16 line","reach":"internet","title":"Frappe Framework: template injection lets logged-in users run server code","impact":"high","summary":"Frappe Framework renders user-controlled message fields as templates without neutralizing them. An authenticated user with a common operational role can inject template expressions that the server evaluates in an unrestricted context.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["frappe","erpnext","self-hosted","python"],"confidence":0.6,"fix_status":"available","needs_auth":"yes","worst_case":"Server evaluates injected template expressions in an unrestricted context, possibly running code","analyst_note":"Confirm which message fields and roles are affected and whether the NVD entry's version ranges are complete; check the Frappe release notes for 15.111.0 and 16.21.0.","how_to_check":"- Check the installed Frappe version with `bench version` or the `frappe` entry in the app's requirements, and compare it to the fixed ranges.\n- Look for Frappe installations on the `15.x` line below `15.111.0` or the `16.x` line below `16.21.0`.","plain_action":"","needs_analyst":true,"not_affected_if":["fixed-version","no-untrusted-users"],"who_is_affected":"Teams running Frappe Framework or ERPNext-style apps built on it, where users with an operational role can write message fields that get rendered as templates. Installs on the fixed versions or with no such roles in use are not exposed. The sources do not describe the exact feature path beyond message fields.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000719,"input_tokens":4132,"output_tokens":611,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-119144':15A,18A '-2026':14A,17A '15.111.0':62C '16':64C '16.21.0':67C 'attack':90C 'authent':40B,89C 'code':12A 'common':44B,93C 'contain':68C 'context':58B,107C 'control':31B,79C 'cve':13A,16A 'erpnext':19B 'evalu':54B,103C 'express':50B,99C 'field':33B,81C 'framework':2A,27B,60C 'frapp':1A,20B,26B,59C 'hold':91C 'host':25B 'inject':4A,48B,74C,97C 'let':5A 'log':7A 'logged-in':6A 'messag':32B,80C 'neutral':37B,87C 'oper':45B,94C 'python':21B 'render':28B,83C 'role':46B,95C 'run':10A 'runtim':22B 'self':24B 'self-host':23B 'server':11A,53B,71C,102C 'server-sid':70C 'side':72C 'templat':3A,35B,49B,73C,85C,98C 'unrestrict':57B,106C 'user':9A,30B,41B,78C 'user-control':29B,77C 'vulner':75C 'without':36B,86C 'x':65C","nicknames":[],"mitigations":[],"who_affected":"Teams running Frappe Framework or ERPNext-style apps built on it, where users with an operational role can write message fields that get rendered as templates. Installs on the fixed versions or with no such roles in use are not exposed. The sources do not describe the exact feature path beyond message fields.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-10-29T16:18:08+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/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-119144","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119144","severity":null,"published_at":"2026-10-29T16:18:08+00:00","modified_at":"2026-10-29T16:18:08+00:00","first_seen_at":"2026-10-29T16:25:59+00:00","fetched_at":"2026-10-29T16:25:59+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"}