Skip to main content

Ansible Automation Platform EUVDEUVD-2026-85571

| CVE-2026-84683 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-09-23 redhat GHSA-3p43-vjq9-4h46
8.7
CVSS 3.1 · Vendor: redhat
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privileged user
  2. Delivery
    Embed ANSI OSC 8 javascript: hyperlink in job output
  3. Exploit
    Admin opens HTML stdout view
  4. Execution
    Admin clicks rendered anchor
  5. Persist
    JavaScript runs in admin session
  6. Impact
    Perform admin actions / platform takeover

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires: (1) a low-privileged authenticated automation-controller account able to produce job, ad hoc command, project update, or inventory update standard output - or the ability to inject data that a playbook echoes into that output; (2) the target output rendered through the HTML stdout view, which escapes HTML metacharacters but does NOT strip ANSI escape sequences, so an OSC 8 hyperlink becomes an unfiltered HTML anchor; (3) the text/html response served with no Content-Security-Policy, permitting a javascript: href to execute; and (4) a higher-privileged user (e.g., admin) both viewing that output page and clicking the crafted link (UI:R). The requirement for a privileged victim to actively click the link is the principal factor limiting real-world exploitation.

Impact

This is a genuine priority-tier finding, not a high-CVSS-but-low-risk artifact. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N, base 8.7) describes a network-reachable, low-complexity stored XSS requiring only a low-privileged account and a victim click, with a scope change (S:C) reflecting that attacker JavaScript executes in a higher-privileged user's authenticated session - the description explicitly ends in 'full platform takeover,' justifying C:H/I:H. The absence of any Content-Security-Policy on the text/html output page removes the last mitigating control, making the javascript: payload reliably executable. No EPSS score, no CISA KEV listing, and no public proof-of-concept were provided, so there is no evidence of active or automated exploitation - the severity rests on the mechanism and impact rather than observed in-the-wild activity. The signals are internally consistent: network vector matches a web UI, and PR:L correctly reflects that the attacker must be able to produce job/inventory output (or feed data a playbook echoes). The main gating factor is UI:R - a privileged operator must actually view and click the crafted link - which tempers the real-world likelihood relative to a no-interaction flaw.

Exploit ScenarioDerived

A low-privileged automation-controller user runs a job (or supplies data that a playbook echoes into standard output) containing a crafted ANSI OSC 8 hyperlink whose href is a javascript: URI. When an administrator later opens that job's HTML stdout view and clicks the rendered anchor, the attacker's JavaScript runs in the admin's authenticated session, enabling actions up to full platform takeover. No public proof-of-concept was identified at the time of analysis, but the technique is straightforward to reproduce.

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

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

Alert me

AnalysisAIv1 – Sep 23, 2026

Stored cross-site scripting in the automation-controller component of Red Hat Ansible Automation Platform 2 lets an authenticated low-privileged user embed a javascript: hyperlink into job, ad hoc command, project update, or inventory update standard output, which is then rendered as a text/html link in the controller's stdout view. Because the HTML conversion escapes HTML metacharacters but never strips ANSI terminal escape sequences, an OSC 8 hyperlink becomes an unfiltered HTML anchor, and the response carries no Content-Security-Policy; a higher-privileged user (for example an administrator) who views that output page and clicks the link executes attacker-controlled JavaScript in their authenticated session, allowing actions up to full platform takeover. The vector is network-reachable with low privileges (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N, 8.7), but exploitation hinges on a privileged victim actively clicking the crafted link; no public exploit code and no confirmed active exploitation were identified at time of analysis.

RemediationAI

No vendor-released patch or fixed version is identified in the available data at time of analysis; the authoritative tracking points are Red Hat's advisory at https://access.redhat.com/security/cve/CVE-2026-84683 and Bugzilla 2527128, which should be monitored for an errata specifying the first patched automation-controller build. Until then, apply targeted compensating controls at the rendering layer and at the privilege boundary. First, sanitize controller output before it reaches the browser: configure the reverse proxy or an output-filtering middleware to strip or escape all ANSI/CSI/OSC sequences (including OSC 8) from stdout pages and to whitelist only http and https in href attributes - the trade-off is that legitimate clickable links and colored output in the stdout view are lost. Second, add a restrictive Content-Security-Policy such as default-src 'none'; script-src 'none'; style-src 'self' to text/html responses for the job output endpoints, which neutralizes javascript: hrefs at the browser level but may break any embedded styling or interactive elements in those pages. Third, reduce the attack surface by limiting who can create or modify playbooks and job templates whose output is rendered, and avoid using persistent, highly privileged sessions to review output from untrusted projects or untrusted external data. Finally, treat links in job output as untrusted: opening the raw URL in a separate browser context, or disabling hyperlink rendering entirely in the stdout view, removes the click-through step on which exploitation depends.

Affected VersionsENISA

Red Hat Ansible Automation Platform 2.6 for RHEL 9 patch: 0:4.7.17-1.el9ap

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 flaw is a stored cross-site scripting (CWE-79) issue in the automation-controller's standard-output HTML view. Ansible job and command output commonly contains ANSI/VT100 escape sequences, and terminal emulators interpret the OSC 8 sequence as a hyperlink whose target URI the terminal itself opens. The controller's HTML renderer correctly escapes HTML metacharacters such as angle brackets and ampersands, but it does not strip or neutralize ANSI escape sequences before conversion, so the OSC 8 hyperlink payload is materialized as an anchor element whose href attribute is neither scheme-filtered nor attribute-escaped. A javascript: scheme therefore survives into the rendered document, and because the stdout page is served as text/html without a Content-Security-Policy, the browser executes the script when a privileged user clicks the link. The CVSS scope change (S:C) reflects that the injected script runs with the privileges of the victim in the controller's own security context, letting an attacker pivot from a low-privileged project or playbook output author to an administrative session. Tracked by Red Hat under CVE-2026-84683 (Bugzilla 2527128), the affected product maps to CPE cpe:2.3:a:red_hat:red_hat_ansible_automation_platform_2 with a wildcard version, indicating all currently shipped 2.x builds of the platform's automation-controller are in scope until Red Hat publishes a fixed release.

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

Low-privileged authenticated attacker plants stored XSS (PR:L, AV:N, AC:L); a privileged victim must click (UI:R); code runs cross-privilege in their session (S:C) enabling takeover (C:H/I:H, A:N).

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

Primary rating from Vendor (redhat).

CVSS VectorVendor: redhat

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

DescriptionCVE.org

A flaw was found in Red Hat Ansible Automation Platform's automation- controller. The HTML view of job, ad hoc command, project update, and inventory update standard output escapes HTML metacharacters but does not remove ANSI terminal escape sequences before conversion to HTML. An ANSI OSC 8 hyperlink sequence in the output is expanded into an HTML anchor whose href is not scheme- filtered or escaped, so a low-privileged user who can produce output -- or an external party whose data a playbook echoes -- can embed a javascript: link that is rendered into a text/html response with no Content-Security-Policy. When a higher-privileged user views the output page and clicks the link, attacker- controlled JavaScript executes in their authenticated session, allowing actions as that user up to full platform takeover.

Executive ViewAI

Why It Matters

Red Hat Ansible Automation Platform 2 (automation-controller component) is affected by a high-severity stored cross-site scripting flaw that lets a low-privileged, authenticated user plant a malicious hyperlink inside job or inventory output, which an administrator can then activate with a single click. Because the controller typically holds credentials and automation authority over large parts of the infrastructure estate, a successful compromise can escalate to full platform takeover and downstream control of managed systems. No vendor patch is currently available, so exposure must be reduced through privilege restrictions, output hardening, and monitoring until Red Hat ships a fix.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: restrict job, ad hoc command, project update, and inventory update execution to trusted accounts; limit who can view controller stdout pages; strip or filter ANSI OSC 8 escape sequences from job output; enforce a restrictive Content-Security-Policy header on controller responses via reverse proxy; require MFA and least privilege for administrators; centralize audit logging and alerting on admin sessions and output views; and isolate platform credentials in an external secrets manager.

Threat Intelligence Overview

EPSS Score
0.3%
Top 85% exploitable
Prevalence
Medium
specific enterprise Red Hat automation product, common but not ubiquitous
Data Quality
4 sources
Confidence: Medium

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.3%
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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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