Skip to main content

Red Hat Ansible Automation Platform CVE-2026-71461

| EUVDEUVD-2026-85535 MEDIUM
Error Message Information Leak (CWE-209)
2026-09-23 redhat GHSA-98xv-m2v4-crqh
4.3
CVSS 3.1 · Vendor: redhat
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as any AAP user
  2. Delivery
    Send host_filter query (credential__search=x or name__regex=[bad)
  3. Exploit
    Trigger unhandled Django FieldError / PostgreSQL DataError
  4. Execution
    str(e) reflected verbatim in API response
  5. Impact
    Harvest ORM relation graph and raw DB error strings

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Error message sanitization
MITRE ATT&CK

1 technique across 1 tactic: Discovery

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

Exploitation Conditions

Requires an authenticated account of any privilege level on Red Hat Ansible Automation Platform 2 automation-controller (PR:L). The attacker sends a malformed value through the host_filter query parameter of the Host list REST API endpoint; HostList.list() catches a bare Exception and returns str(e) verbatim, so either a Django FieldError (via a bad relation lookup such as credential__search=x) or a PostgreSQL DataError (via a bad regex such as name__regex=[bad) reflects internal schema/error text. Limiting factors: valid credentials are mandatory (no unauthenticated path), impact is confined to information disclosure of the ORM relation graph and raw database error strings - no data modification, secret extraction, or code execution - and no user interaction is required.

Impact

This is a genuinely low-to-moderate priority information-disclosure flaw, and the CVSS 4.3 (MEDIUM) rating is appropriate. The RedHat-supplied vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N is internally consistent with the description: exploitation is network-reachable but requires an authenticated account (PR:L - 'any authenticated user'), needs no user interaction, and yields only limited confidentiality impact (C:L) with no integrity or availability effect. There is no EPSS score, no CISA KEV listing, and no public exploit code provided in the intelligence, so this is not evidence of widespread or automated exploitation. The impact ceiling is real but bounded: an attacker recovers the internal Django ORM relation graph (including reverse accessors) and raw PostgreSQL error strings - reconnaissance value that could seed a follow-on SQL/ORM-focused attack, but not direct access to credentials, secrets, or execution. No signals conflict: network vector aligns with the REST API surface (host_filter query parameter), and the PR:L requirement is consistent with the description's 'any authenticated user' phrasing. Treat as a defense-in-depth / recon-hardening fix rather than an emergency patch.

Exploit ScenarioDerived

An authenticated low-privilege AAP user issues a crafted host_filter query against the automation-controller REST API - e.g. credential__search=x to force a Django FieldError that echoes the full Host model relation graph, or name__regex=[bad to force a PostgreSQL DataError whose raw text is reflected verbatim. The leaked schema and internal reverse accessors are then used to map the data model and plan targeted follow-on attacks. No public POC is referenced in the available intelligence, though the two documented filter primitives make reproduction straightforward.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 23, 2026

Information disclosure in the automation-controller component of Red Hat Ansible Automation Platform 2 lets any authenticated user of any privilege level extract internal database and ORM structure by sending crafted values through the host_filter query parameter of the Host list REST API. Because HostList.list() catches a bare Exception and returns str(e) verbatim, a malformed relation lookup such as credential__search=x raises a Django FieldError that exposes the complete Host model relation graph (including internal reverse accessors), while a malformed pattern such as name__regex=[bad raises a PostgreSQL DataError that reflects the raw database error string. The flaw is rated CVSS 4.3 (MEDIUM) with a vector of AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N; exploitation requires valid credentials but no user interaction, impact is limited to low-confidentiality schema and error-text leakage with no modification or code execution, and no public exploit was identified at time of analysis.

RemediationAI

Apply the Red Hat errata for Ansible Automation Platform 2 once released; track availability through https://access.redhat.com/security/cve/CVE-2026-71461 and https://bugzilla.redhat.com/show_bug.cgi?id=2512370, since no vendor-released patch was identified at time of analysis and the upstream fix is expected to replace the bare except in HostList.list() with specific exception handling that returns a generic, sanitized error body rather than str(e). Until a fixed build is installed, restrict access to the automation-controller Host list endpoint (/api/v2/hosts/) to users who genuinely require it, reducing the population of accounts that can reach the vulnerable code path, and audit existing listings of host-listing permissions. As a compensating control, deploy a reverse proxy or WAF rule that rejects or logs requests whose host_filter parameter contains Django lookup operators such as double-underscore relation traversals or regex operators (for example __regex, __search, __iregex); the trade-off is that legitimate advanced filtering may be blocked, so scope the rule tightly and monitor for false positives. Because the response body itself carries the leaked FieldError or DataError text, also enable response inspection or egress logging on the controller to detect schema-dump attempts, and rotate or review any database schema details, internal field names, and reverse accessor names that may already have been disclosed to lower-privileged accounts.

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 affected code path is the Host list endpoint of the Ansible Automation Platform 2 automation-controller (the AWX-derived REST service). The view's list() method wraps its query handling in a try/except block that catches the bare Python Exception class rather than specific exceptions, then serializes the exception object directly into the HTTP response body via str(e). User-supplied input reaches the Django ORM through the host_filter query parameter, which supports Django field lookups: a lookup naming a relation that does not exist on the Host model (for example credential__search=x) causes Django to raise FieldError, whose message enumerates the valid field names and relations available on the model, effectively dumping the ORM schema including reverse accessors. A lookup that reaches PostgreSQL and is rejected by the database (for example name__regex=[bad, which forms an invalid regular expression) raises a psycopg/PostgreSQL DataError whose text is likewise reflected verbatim. This is the classic CWE-209 pattern: generation of an error message containing sensitive information, made worse by the decision to return the exception string instead of a sanitized, generic error. The vulnerable product is tracked by CPE cpe:2.3:a:red_hat:red_hat_ansible_automation_platform_2, and the issue is filed under Red Hat Bugzilla 2512370 with the Red Hat security advisory CVE-2026-71461.

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

Network-reachable REST API (AV:N) exploited by any authenticated user (PR:L) with no interaction; leaks only schema/error text (C:L) with no integrity or availability impact.

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

Primary rating from Vendor (redhat).

CVSS VectorVendor: redhat

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

DescriptionCVE.org

HostList.list() catches bare Exception and returns str(e) verbatim. Via host_filter, any authenticated user triggers Django FieldError (leaking complete Host model relation graph including internal reverse accessors) or PostgreSQL DataError (leaking raw database error strings). Two primitives: credential__search=x dumps ORM schema, name__regex=[bad reflects PostgreSQL errors.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Medium
enterprise Red Hat automation platform, common in ops orgs but not ubiquitous
Data Quality
5 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Medium

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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