CVE-2026-84714 Overview
A flaw in the Ansible automation-controller sanitize_jinja() input-validation guard allows low-privileged users to bypass Jinja template filtering. The function relies on two regular expressions that stop matching at the first interior } or % character. An attacker can craft Jinja expressions containing inner braces, such as an empty dict, that bypass the filter while remaining valid templates that ansible-core evaluates at runtime. The vulnerability affects launch-time fields including ad-hoc command module_args, Machine-credential username, become_method, become_user, and inventory host names.
Critical Impact
Low-privileged users can execute arbitrary commands in the execution environment, bypass the AD_HOC_COMMANDS module allowlist, and disclose secrets from credentials they cannot directly read.
Affected Products
- Red Hat Ansible Automation Platform (automation-controller component)
- Deployments referenced in advisories RHSA-2026:71113, RHSA-2026:71114, RHSA-2026:71177, and RHSA-2026:71179
- Environments relying on sanitize_jinja() as the sole input guard for launch-time fields
Discovery Timeline
- 2026-09-23 - CVE-2026-84714 published to NVD
- 2026-09-24 - Last updated in NVD database
Technical Details for CVE-2026-84714
Vulnerability Analysis
The defect is classified as an incomplete list of disallowed inputs [CWE-184]. The sanitize_jinja() function is intended to reject any user-supplied Jinja before ansible-core evaluates it. Its two regular expressions terminate at the first interior } or %, so payloads containing an inner brace slip through validation. Because sanitize_jinja() is the only guard on several launch-time input fields, the bypass grants Jinja evaluation in the execution environment where the controller runs playbook workloads.
An authenticated low-privileged user can leverage the bypass to run arbitrary commands, breaking the administrator-enforced AD_HOC_COMMANDS module allowlist. The same primitive enables cross-boundary secret disclosure: by templating a co-attached credential's injected environment variables, an attacker reads secrets belonging to credentials they lack read access to.
Root Cause
The root cause is a regular-expression design flaw. The patterns used by sanitize_jinja() are non-greedy against } and % characters and treat the first occurrence as the end of a Jinja construct. Valid Jinja containing nested braces, for example an expression that includes an empty dict literal {}, therefore parses as harmless input at the guard while remaining executable Jinja downstream in ansible-core.
Attack Vector
The attack requires network access and low privileges on the automation-controller. An attacker submits a launch-time request that populates one of the vulnerable fields (ad-hoc module_args, Machine-credential username, become_method, become_user, or inventory host names) with a Jinja payload containing an inner brace. The controller stores and forwards the value to the execution environment, where ansible-core renders the template and executes the resulting expression. See the Red Hat CVE Details for CVE-2026-84714 and Red Hat Bug Report #2527198 for reference material.
Stop Remote Code Execution Before It Runs
Singularity™ Endpoint detects and blocks exploit attempts at machine speed, including zero-days and novel attack techniques.
Stop Exploit AttemptsDetection Methods for CVE-2026-84714
Indicators of Compromise
- Ad-hoc command jobs whose module_args values contain Jinja delimiters ({{, }}, {%, %}) alongside inner braces such as {}
- Machine-credential records where username, become_method, or become_user fields contain Jinja syntax
- Inventory host names containing template expressions rather than valid hostnames or IP addresses
- Job output referencing environment variables belonging to credentials the launching user does not own
Detection Strategies
- Audit automation-controller API request bodies for launch-time fields that contain {{, }}, {%, or %} sequences
- Correlate ad-hoc command executions against the configured AD_HOC_COMMANDS allowlist and alert on modules outside the allowlist
- Review job event logs for unexpected shell commands, subprocess spawns, or credential-material references inside rendered templates
Monitoring Recommendations
- Forward automation-controller job and audit logs to a centralized analytics platform for retention and query
- Alert on execution-environment processes launching interactive shells or network utilities outside expected playbook activity
- Monitor for anomalous read access to credential-injected environment variables during job runs
How to Mitigate CVE-2026-84714
Immediate Actions Required
- Apply the fixes shipped in RHSA-2026:71113, RHSA-2026:71114, RHSA-2026:71177, and RHSA-2026:71179 as they apply to your deployment
- Rotate any credentials that may have been exposed through templated environment-variable disclosure
- Review recent ad-hoc command history and job templates for suspicious Jinja payloads
Patch Information
Red Hat has published patched packages for the automation-controller through the advisories listed above. Consult the Red Hat CVE Details for CVE-2026-84714 page to match the correct erratum to your Ansible Automation Platform version and channel before deploying.
Workarounds
- Restrict automation-controller access to trusted operators until patches are applied
- Remove or tightly scope low-privileged user roles that can launch ad-hoc commands or edit inventory host entries
- Detach shared credentials from projects where untrusted users can submit launch-time input, limiting cross-boundary secret exposure
# Verify the installed automation-controller package version against the fixed release
rpm -q automation-controller
# Apply the vendor security errata
sudo dnf update --advisory=RHSA-2026:71113 --advisory=RHSA-2026:71114 \
--advisory=RHSA-2026:71177 --advisory=RHSA-2026:71179
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

