Skip to main content

Ansible Automation Platform EUVDEUVD-2026-85607

| CVE-2026-85475 HIGH
Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection') (CWE-96)
2026-09-23 redhat GHSA-wpwh-486h-5v3j
7.2
CVSS 3.1 · Vendor: redhat
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as controller superuser
  2. Delivery
    Inject RainerScript omprog into LOG_AGGREGATOR_* setting
  3. Exploit
    Controller regenerates rsyslog config unneutralized
  4. Execution
    Command executes in control-plane rsyslog
  5. Persist
    Exfiltrate SECRET_KEY and DB credentials
  6. Impact
    Decrypt all stored credentials, full control-plane compromise

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Static code injection prevention
Exploitation Conditions

Requires automation-controller superuser privileges to modify the external logging (rsyslog) configuration - specifically the LOG_AGGREGATOR_HOST, LOG_AGGREGATOR_MAX_DISK_USAGE_PATH, or LOG_AGGREGATOR_RSYSLOGD_ERROR_LOG_FILE settings - which are interpolated into a RainerScript config file without neutralizing RainerScript syntax. External rsyslog logging must be in use so the crafted config is generated and loaded. The exploit is limited by this superuser (PR:H) requirement and does not require user interaction; there is no unauthenticated or low-privilege path in the described flaw.

Impact

This is a genuine high-impact flaw whose real-world risk is strongly gated by the privilege requirement. The CVSS 3.1 vector (AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H = 7.2) is self-consistent and reasonable: exploitation is remote and low-complexity, but PR:H reflects that only a superuser can set the LOG_AGGREGATOR_* logging settings that are injected into the RainerScript config. The full C:H/I:H/A:H triad is justified because omprog injection yields arbitrary command execution in the control-plane rsyslog process, exposing SECRET_KEY and DB credentials and enabling decryption of every stored credential - effectively total control-plane compromise. No EPSS score, no CISA KEV listing, and no public POC are present in the input, so exploitation status is 'no public exploit identified at time of analysis.' The severity is real but the practical risk is bounded: an attacker who already holds automation-controller superuser rights is largely trusted, so this functions more as a privilege-boundary/defense-in-depth escape (Django app-admin → OS command execution and secret exfiltration) than as a mass-exploitable network flaw. No signals conflict; the main missing data are a fix version and any exploitation telemetry.

Exploit ScenarioDerived

A superuser (or an attacker who has compromised a superuser session) edits the external logging settings - e.g. LOG_AGGREGATOR_HOST - embedding RainerScript directives that define an omprog action running an arbitrary shell command. When the controller regenerates the rsyslog config, the injected omprog executes inside the control-plane rsyslog component, letting the attacker read SECRET_KEY and database credentials and decrypt all stored credentials. No public POC is identified in the provided data.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 23, 2026

Command injection in the automation controller's external logging (rsyslog) configuration of Red Hat Ansible Automation Platform 2 allows a superuser to achieve arbitrary command execution inside the control-plane rsyslog component, exposing the controller SECRET_KEY and database credentials and enabling decryption of all stored credentials. Exploitation requires authenticated superuser privileges (CVSS 3.1 7.2, PR:H, no user interaction) and only takes effect when external logging is in use, so the malicious RainerScript configuration is actually generated and loaded. No public exploit code was identified and there is no CISA KEV listing indicating active exploitation, meaning real-world risk is strongly gated by the elevated privilege requirement even though the post-exploitation impact is a full control-plane compromise.

RemediationAI

No vendor-released patch was identified in the available data at time of analysis, so remediation currently centers on the Red Hat advisory and Bugzilla tracker (https://access.redhat.com/security/cve/CVE-2026-85475, https://bugzilla.redhat.com/show_bug.cgi?id=2528255) for an eventual fixed AAP 2 release, which should be applied as soon as it is announced. Until then, the most effective compensating control is to disable external rsyslog log aggregation (or leave LOG_AGGREGATOR settings unconfigured) so the vulnerable RainerScript file is never generated or loaded - the trade-off is loss of centralized log forwarding and local-only audit retention. Strictly restrict the superuser role in the automation controller to the smallest possible set of trusted accounts, enforce MFA on those accounts, and alert on any change to LOG_AGGREGATOR_HOST, LOG_AGGREGATOR_MAX_DISK_USAGE_PATH or LOG_AGGREGATOR_RSYSLOGD_ERROR_LOG_FILE, since the flaw is only reachable by a superuser and any such change is itself a high-fidelity indicator of attempted exploitation. Additionally, review the generated rsyslog configuration on the control-plane host for unexpected directives (particularly omprog actions or include statements) before reload, and run the rsyslog daemon under a constrained service account or sandbox that cannot execute arbitrary helper programs - this limits the blast radius but can break legitimate omprog-based log shipping, so test in a non-production environment. Rotating the controller SECRET_KEY and database credentials should be performed if any injected directive is found, since those secrets must be assumed disclosed once code execution in rsyslog is achieved.

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

Ansible Automation Platform's automation controller builds its external logging configuration by interpolating administrator-supplied settings - LOG_AGGREGATOR_HOST, LOG_AGGREGATOR_MAX_DISK_USAGE_PATH and LOG_AGGREGATOR_RSYSLOGD_ERROR_LOG_FILE - directly into an rsyslog RainerScript configuration file without neutralizing RainerScript syntax. Because RainerScript is an interpreted configuration language that supports action modules such as omprog (which launches an external program) and include directives, an attacker who can set these values can break out of the intended string context and inject arbitrary directives that the rsyslog daemon then executes with its own privileges on the control-plane host. The root cause maps to CWE-96 (improper neutralization of directives in statically saved code, i.e., static code injection), a template/configuration-injection class rather than a memory-safety issue. The affected component is tracked by the wildcarded CPEs for red_hat_ansible_automation_platform_2, indicating the automation controller shipping in the AAP 2.x line; the CVSS vector AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H confirms the network-reachable but privileged (PR:H) and non-interactive nature of the attack, with high confidentiality, integrity and availability impact confined to the vulnerable component.

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 7.2 HIGH
AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.2 HIGH

Superuser-only control over logging settings forces PR:H; remote and low-complexity once authenticated; omprog command execution yields full C/I/A compromise of the control plane.

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

Primary rating from Vendor (redhat).

CVSS VectorVendor: redhat

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

DescriptionCVE.org

A flaw was found in the Ansible Automation Platform automation controller. The external logging (rsyslog) configuration is generated by interpolating user-controlled settings - LOG_AGGREGATOR_HOST, LOG_AGGREGATOR_MAX_DISK_USAGE_PATH and LOG_AGGREGATOR_RSYSLOGD_ERROR_LOG_FILE - into an rsyslog RainerScript config file without neutralizing RainerScript syntax. A privileged (superuser) user can inject rsyslog directives, including an omprog action, causing arbitrary command execution inside the control-plane rsyslog component. This allows disclosure of the controller SECRET_KEY and database credentials, decryption of all stored credentials, and full compromise of the control plane.

Executive ViewAI

Why It Matters

Red Hat Ansible Automation Platform 2 contains a high-severity command injection vulnerability in its external logging configuration that, when exploited by an authenticated superuser, can compromise the control plane and expose all stored credentials. While exploitation requires elevated privileges and external logging to be enabled, the impact is severe, potentially affecting managed infrastructure and sensitive data. No public exploit identified at time of analysis, and No vendor-released patch identified at time of analysis; leadership should prioritize mitigating controls and access restrictions.

Business Impact: High
Compensating Controls

Disable external logging if not required; restrict superuser access to trusted personnel; implement least privilege and monitor for unauthorized configuration changes.

Threat Intelligence Overview

EPSS Score
0.4%
Top 65% exploitable
Prevalence
Medium
enterprise Ansible automation platform, common in large orgs but not ubiquitous
Data Quality
6 sources
Confidence: High

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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
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
High
Technical Impact
Total

Priority Score

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

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Affected Products (CPE)CVE.org

cpe:2.3:a:red_hat:red_hat_ansible_automation_platform_2:*:*:*:*:*:*:*:*
cpe:2.3:a:red_hat:red_hat_ansible_automation_platform_2:*:*:*:*:*:*:*:*
cpe:2.3:a:red_hat:red_hat_ansible_automation_platform_2:*:*:*:*:*:*:*:*

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