Skip to main content

Ansible Automation Platform EUVDEUVD-2026-85555

| CVE-2026-84474 CRITICAL
Reliance on Untrusted Inputs in a Security Decision (CWE-807)
2026-09-23 redhat GHSA-2mcj-95p4-49mv
9.9
CVSS 3.1 · Vendor: redhat
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain view_jobtemplate read access
  2. Delivery
    Read host_config_key secret from API/activity stream
  3. Exploit
    Spoof X-Forwarded-For to match inventory host
  4. Execution
    POST to provisioning-callback endpoint
  5. Persist
    Job template runs with stored credentials
  6. Impact
    RCE and privilege escalation on managed host

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Trusted input validation
Exploitation Conditions

Exploitation requires the controller to be deployed behind the AAP gateway with an EMPTY proxy allow-list, which causes the provisioning-callback endpoint to trust the client-supplied X-Forwarded-For header; a non-empty/correct proxy allow-list defeats the host-spoofing step. The attacker must also obtain the host_config_key, which is exposed to anyone holding read-only view_jobtemplate permission (or via the activity stream) - so the practical prerequisite is either that low-privilege read access or, per the description, an unauthenticated path in the misconfigured-gateway case. The target job template must have provisioning callback enabled and inventory hosts with usable credentials. Limiting factors: the empty-allow-list gateway configuration is the key non-default enabler, and provisioning callbacks must be in use.

Impact

This is a genuine top-priority vulnerability, not high-CVSS-but-low-risk. The vendor CVSS 9.9 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) is well-supported: it chains a secret-disclosure flaw (host_config_key exposed to read-only view_jobtemplate holders, and in the activity stream) with a trust-boundary flaw (provisioning-callback endpoint trusting a client-supplied X-Forwarded-For when the gateway proxy allow-list is empty), yielding RCE on managed hosts using the job template's own credentials. CWE-807 (reliance on untrusted inputs in a security decision) precisely describes the X-Forwarded-For trust. The scope change (S:C) is justified because compromise of the controller-side callback is leveraged to execute code on separate managed hosts. Note a conflict worth flagging: the description says a 'minimally privileged OR unauthenticated remote attacker' can exploit this, yet the vector encodes PR:L - if a deployment truly exposes the secret or callback without any authentication, the real score approaches 10.0/PR:N; PR:L reflects the common case where view_jobtemplate is needed to read the secret. EPSS, CISA KEV status, and POC availability are all absent from the input, so exploitation likelihood is unquantified; SSVC fields were not provided. No public exploit is identified at time of analysis. Because this is Red Hat self-reported with a Bugzilla tracker (2527073) but no independent exploitation evidence, treat it as a critical patch-now issue driven by impact severity rather than by confirmed in-the-wild activity.

Exploit ScenarioDerived

An attacker with only read-level view_jobtemplate access (or, per the description, potentially unauthenticated in a misconfigured gateway deployment) reads the provisioning-callback host_config_key from the job template API or activity stream. They then POST to the provisioning-callback endpoint while spoofing the X-Forwarded-For header to match a host in the template's inventory, triggering the job template to run against that managed host with the template's stored credentials - achieving remote code execution. No public exploit code is identified at time of analysis, but the attack is low-complexity (AC:L) and requires no user interaction.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.8% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 23, 2026

Privilege escalation and remote code execution on managed hosts is possible in Red Hat Ansible Automation Platform 2 because the automation-controller exposes the provisioning-callback secret (host_config_key) to anyone holding only read-level view_jobtemplate permission and accepts a client-supplied X-Forwarded-For header as proof of caller identity when the gateway proxy allow-list is empty. An attacker who reads the secret from the job template API representation or the activity stream and spoofs X-Forwarded-For to match any host in the target job template's inventory can launch that template against arbitrary managed hosts using the template's stored credentials; CVSS 3.1 base score is 9.9 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H), no public exploit code was identified at time of analysis, and the decisive enabler is a non-default deployment condition - an empty proxy allow-list combined with provisioning callbacks actually being in use.

RemediationAI

No fixed version is identified in the supplied intelligence, so the Red Hat advisory (https://access.redhat.com/security/cve/CVE-2026-84474) and the Bugzilla entry (https://bugzilla.redhat.com/show_bug.cgi?id=2527073) should be treated as the authoritative source for a patched automation-controller/AAP release, which must be applied as soon as it is published. In the interim, the highest-value mitigation is to populate the AAP gateway proxy allow-list with the exact IP addresses or CIDRs of the proxies that legitimately front the controller, which defeats the X-Forwarded-For spoofing step and breaks the attack chain; the trade-off is that stale or incorrect entries will cause legitimate provisioning callbacks and other forwarded-header-dependent behavior to fail, so the list must be kept accurate. Rotate the host_config_key on every job template that has provisioning callbacks enabled, since the secret must be considered compromised for anyone who held view_jobtemplate or could read the activity stream; regeneration invalidates the stored secret but requires reconfiguring every external provisioning script that embeds it. Restrict or remove the read-level view_jobtemplate permission from accounts that do not strictly need it and audit the activity stream for historical disclosure of the key, accepting that this may disrupt read-only reporting and auditor workflows. If provisioning callbacks are not required, disable them or block the callback endpoint at the network layer so only known provisioning subnets can reach it; this removes the attack surface entirely but breaks dynamic provisioning automation. Finally, confirm whether the controller is intentionally deployed behind the gateway and eliminate any remaining reliance on client-supplied headers for security decisions.

Affected VersionsENISA

Red Hat Ansible Automation Platform 2.4 for RHEL 9 patch: 0:4.5.36-1.el9ap
Red Hat Ansible Automation Platform 2.4 for RHEL 8 patch: 0:4.5.36-1.el8ap

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause class is CWE-807, Reliance on Untrusted Inputs in a Security Decision, and this CVE contains two compounding instances of it. First, the automation-controller treats the provisioning-callback shared secret (host_config_key) as protected when it is in fact disclosed in the job template API representation and in the activity stream to any principal with read-only view_jobtemplate permission. Second, the callback endpoint (the /api/v2/job_templates/<id>/callback/ style provisioning path) uses the client-controlled X-Forwarded-For header to determine which inventory host is calling; when the controller is deployed behind the AAP gateway with an empty proxy allow-list, nothing constrains which value the client may supply. Provisioning callbacks are an Ansible feature that let an external provisioning system request that a job template be run against the host it just built, authenticating with host_config_key rather than user credentials; the controller matches the claimed host against the template's inventory and then executes the template with the template's own credentials, including any become/privilege-escalation settings. Combining the leaked secret with a spoofed forwarded-for address therefore converts a read-only account (or, per the description, an unauthenticated caller in the misconfigured-gateway case) into an execution path on managed hosts. The CVSS vector's S:C scope change reflects that impact escapes the controller into the managed-host estate, while PR:L indicates the baseline attack requires a low-privileged authenticated account. A correctly populated proxy allow-list breaks the host-spoofing step, and provisioning callbacks must be enabled on the target job template for the chain to work.

Know when Django gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (redhat) PRIMARY 9.9 CRITICAL
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 9.9 CRITICAL

Network-reachable, low-complexity; PR:L because reading the secret typically needs view_jobtemplate; S:C and C/I/A:H because callback abuse yields full RCE on separate managed hosts.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
Red Hat 9.9 CRITICAL

Primary rating from Vendor (redhat).

CVSS VectorVendor: redhat

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

DescriptionCVE.org

A flaw was found in Red Hat Ansible Automation Platform's automation- controller. The provisioning-callback secret (host_config_key) is exposed to users holding only the read-level view_jobtemplate permission -- both in the job template API representation and in the activity stream -- and the provisioning callback endpoint trusts a client-supplied X-Forwarded-For header to determine the calling host when the controller is deployed behind the AAP gateway with an empty proxy allow-list. By reading the secret and spoofing X-Forwarded-For to match any host in the job template's inventory, a minimally privileged or unauthenticated remote attacker can launch the job template against arbitrary managed hosts using the job template's credentials, resulting in privilege escalation and remote code execution on managed hosts.

Executive ViewAI

Why It Matters

Red Hat Ansible Automation Platform 2 contains a critical privilege escalation and remote code execution flaw that allows an authenticated attacker with read-only job template access to take control of managed hosts. This puts organizations at risk of widespread infrastructure compromise, data breaches, and operational downtime, making immediate mitigation a top priority for security leadership.

Business Impact: Severe
Compensating Controls

Populate the gateway proxy allow-list (non-empty) and restrict view_jobtemplate permissions to trusted users; disable provisioning callbacks if they are not operationally required.

Threat Intelligence Overview

EPSS Score
0.8%
Top 45% exploitable
Prevalence
Medium
enterprise Ansible Automation Platform, common in automation shops but not ubiquitous
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment Vendor VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.8%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Total

Priority Score

51
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +50
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

More in Django

View all
CVE-2021-23336 MEDIUM POC
5.9 Feb 15

The package python/cpython from 0 and before 3.6.13, from 3.7.0 and before 3.7.10, from 3.8.0 and before 3.8.8, from 3.9

CVE-2017-12794 MEDIUM POC
6.1 Sep 07

In Django 1.10.x before 1.10.8 and 1.11.x before 1.11.5, HTML autoescaping was disabled in a portion of the template for

CVE-2022-34265 CRITICAL POC
9.8 Jul 04

An issue was discovered in Django 3.2 before 3.2.14 and 4.0 before 4.0.6. Rated critical severity (CVSS 9.8), this vulne

CVE-2021-35042 CRITICAL POC
9.8 Jul 02

Django 3.1.x before 3.1.13 and 3.2.x before 3.2.5 allows QuerySet.order_by SQL injection if order_by is untrusted input

CVE-2019-19844 CRITICAL POC
9.8 Dec 18

Django before 1.11.27, 2.x before 2.2.9, and 3.x before 3.0.1 allows account takeover. Rated critical severity (CVSS 9.8

CVE-2026-61594 CRITICAL POC
9.1 Sep 16

An authentication/authorization bypass in the djust Python live-view framework (versions prior to 1.0.7) lets unauthenti

CVE-2026-61599 HIGH POC
8.8 Sep 16

Unauthenticated arbitrary Python module import in djust before 1.0.7 lets any client that can reach the WebSocket or SSE

CVE-2020-9402 HIGH POC
8.8 Mar 05

Django 1.11 before 1.11.29, 2.2 before 2.2.11, and 3.0 before 3.0.4 allows SQL Injection if untrusted data is used as a

CVE-2016-6186 MEDIUM POC
6.1 Aug 05

Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/j

CVE-2026-93456 HIGH POC
8.4 Sep 18

Forged content modification in django-page-cms through 2.0.13 lets unauthenticated remote attackers exploit five CSRF-ex

CVE-2026-61593 HIGH POC
8.1 Sep 16

Cross-site request forgery in djust's Server-Sent-Events transport affects all versions prior to 1.0.7 and allows a cros

CVE-2026-61590 HIGH POC
7.4 Sep 16

Unauthenticated remote attackers can read live Django view and session state and invoke server-side handlers through dju

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy