CVE-2026-71463: Automation-controller: automation-controller-container: automation-controller: notification template jinja whitelist bypass via conditional gating leaks tracebacks
A flaw was found in automation-controller. The notification template Jinja whitelist only inspects static Getattr AST nodes. An attacker with notification template admin privileges can bypass the whitelist using dynamic subscript expressions or conditional gating on runtime values that differ from the test-render stub. Exceptions raised during notification rendering write full Python tracebacks into the notification body, which is sent to the attacker-controlled webhook URL, leaking install paths, Python version, and source file line numbers.
Other sources
Notification template Jinja AST whitelist only inspects static Getattr nodes. Dynamic subscripts (job['job'+'env']) and {% if job.id > 100 %} conditional gating bypass both the AST check and the test-render (stub has small job.id). At runtime, the gated branch executes and exceptions write full tracebacks into notification body, which is POSTed to attacker-controlled webhook URL. Leaks install paths, Python version, source line numbers.
— MITRE
Affected Software
Event History
Frequently Asked Questions
Who can exploit this issue?
An attacker needs notification template administrator privileges and control of a webhook URL used by a notification template. The issue is therefore most relevant where those administrative privileges are granted to less-trusted users or tenants.
What is required to trigger the information disclosure?
The attacker must create a template that bypasses the static Jinja AST whitelist, such as by using dynamic subscript expressions or a condition that evaluates differently during test rendering and runtime. At runtime, the template must cause an exception during notification rendering so that the traceback is included in the POST body sent to the attacker-controlled webhook.
What information can be exposed?
The rendered exception can expose full Python traceback details to the webhook endpoint. Disclosed details include installation paths, the Python version, and source-file line numbers.
How can teams identify potential exposure?
Review notification templates managed by privileged users for dynamic Jinja subscripts, such as job['job'+'_env'], and conditional branches whose behavior depends on runtime job values, such as job.id. Also review notification webhook destinations, since tracebacks are sent in notification bodies to those endpoints when rendering errors occur.