Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as controller superuser
-
DeliveryInject RainerScript omprog into LOG_AGGREGATOR_* setting
-
ExploitController regenerates rsyslog config unneutralized
-
ExecutionCommand executes in control-plane rsyslog
-
PersistExfiltrate SECRET_KEY and DB credentials
-
ImpactDecrypt 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
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.
Primary rating from Vendor (redhat).
CVSS VectorVendor: redhat
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
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.
Disable external logging if not required; restrict superuser access to trusted personnel; implement least privilege and monitor for unauthorized configuration changes.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
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
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
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
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
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
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
An authentication/authorization bypass in the djust Python live-view framework (versions prior to 1.0.7) lets unauthenti
Unauthenticated arbitrary Python module import in djust before 1.0.7 lets any client that can reach the WebSocket or SSE
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
Cross-site scripting (XSS) vulnerability in the dismissChangeRelatedObjectPopup function in contrib/admin/static/admin/j
Forged content modification in django-page-cms through 2.0.13 lets unauthenticated remote attackers exploit five CSRF-ex
Cross-site request forgery in djust's Server-Sent-Events transport affects all versions prior to 1.0.7 and allows a cros
Unauthenticated remote attackers can read live Django view and session state and invoke server-side handlers through dju
EUVD-2026-85607
GHSA-wpwh-486h-5v3j
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB