Skip to main content

Ansible Automation Platform CVE-2026-71459

| EUVDEUVD-2026-85524 MEDIUM
Missing Authorization (CWE-862)
2026-09-23 redhat GHSA-89mc-x55w-mqvp
5.0
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-privilege AAP user
  2. Delivery
    Iterate Job PKs against JobJobEventsChildrenSummary
  3. Exploit
    Use 200/404 responses as enumeration oracle
  4. Execution
    Read event tree and processing status for existing Jobs
  5. Impact
    Aggregate cross-org Job metadata for reconnaissance

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

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

Exploitation Conditions

Exploitation requires a valid authenticated account on the Ansible Automation Platform 2 controller (PR:L) - even a zero-privilege user with no special roles suffices, because ModelAccessPermission.check_get_permissions() returns True for any authenticated principal and the JobJobEventsChildrenSummary view defines no model/parent_model and performs no DRF object-level permission check. The specific enabling condition is this particular endpoint's missing object-level authorization; the correctly-guarded sibling endpoint (/jobs/{id}/job_events/) returning 403 confirms the flaw is endpoint-specific rather than platform-wide. Limiting factors: an account is mandatory (not exploitable pre-authentication), no user interaction is needed, impact is confidentiality-only (event-tree structure, event_processing_finished status, and Job ID existence via a 200/404 oracle) with no data modification or service disruption.

Impact

This is a genuine but low-to-moderate priority information-disclosure flaw, not a critical issue. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N, base 5.0) tells a consistent story: network-reachable, low complexity, but requiring authentication (PR:L) and yielding confidentiality-only impact at Low magnitude (C:L, no integrity or availability effect). CWE-862 (Missing Authorization) matches the description precisely - a broken object-level authorization / IDOR where ModelAccessPermission.check_get_permissions() falls through to True and the view uses raw get_object_or_404 without a DRF object-level check. No EPSS score, no CISA KEV listing, and no public POC were provided, so exploitation likelihood signals are all absent rather than elevated; there is no evidence of active exploitation. The description's contrast with the sibling endpoint (/jobs/{id}/job_events/ correctly returns 403) strongly corroborates that this is a real, verifiable regression rather than a theoretical concern. One point to flag: the vendor assigned S:C (scope change), justified by platform-wide/cross-organization Job ID enumeration and metadata leakage crossing tenant authority; a conservative reading favors S:U (same application authority), which would lower the score to ~4.3 - verify multi-tenancy boundary crossing with Red Hat. The real-world value to an attacker is reconnaissance (enumerating Job IDs and reading event-tree/processing status), not direct compromise.

Exploit ScenarioDerived

A low-privilege but authenticated user of an Ansible Automation Platform controller sends GET requests to the JobJobEventsChildrenSummary endpoint, iterating Job primary keys and using the 200-vs-404 response as an oracle to enumerate every Job ID on the platform, including those belonging to other teams or organizations. For each existing Job the attacker reads the event tree structure and event_processing_finished status, harvesting operational reconnaissance about automation activity they should not see. No public exploit code was identified, but the attack requires only ordinary authenticated API access and trivial ID iteration.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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

Authenticated but unprivileged users of Red Hat Ansible Automation Platform 2 can read platform-wide job event information through the JobJobEventsChildrenSummary endpoint, which performs no object-level authorization check. Because the view declares no model or parent_model, ModelAccessPermission.check_get_permissions() falls through and returns True for every authenticated principal, and the handler substitutes a raw get_object_or_404(Job, pk), exposing event tree structure, event_processing_finished status, and the existence of arbitrary Job IDs via a 200/404 oracle. Exploitation requires only a valid zero-privilege account on the controller and no user interaction, making this a confidentiality-only information disclosure (assessed CVSS 5.0, AV:N/AC:L/PR:L/UI:N); no public exploit code has been identified at time of analysis, and the sibling endpoint /jobs/{id}/job_events/ correctly returns 403, confirming the defect is endpoint-specific.

RemediationAI

No vendor-released patch has been identified at time of analysis, so remediation begins with tracking the Red Hat advisory at https://access.redhat.com/security/cve/CVE-2026-71459 and the Bugzilla entry https://bugzilla.redhat.com/show_bug.cgi?id=2512368 for the fixed Automation Platform 2 release, and upgrading as soon as an erratum with an explicit fix version is published. In the interim, apply targeted compensating controls: block or deny the JobJobEventsChildrenSummary API path at the reverse proxy, load balancer, or ingress in front of the controller (returning 403 or 404), with the trade-off that any UI or automation that consumes the job event summary tree will break and must be re-pointed at the properly-guarded /jobs/{id}/job_events/ endpoint, which already enforces authorization and returns 403 to unprivileged users. Harden the authentication boundary by ensuring no anonymous or shared low-privilege accounts exist and by minimizing the number of principals who can reach the API at all, since the vulnerability is only reachable post-authentication (PR:L) - removing unnecessary accounts shrinks the attack surface with minimal operational cost. Finally, detect exploitation by alerting on enumeration patterns against job endpoints from a single principal, such as bursts of sequential Job ID requests generating mixed 200/404 responses or repeated access to the job events summary path by accounts with no job-related roles; this detection has no functional side effects but requires that controller and proxy logs be forwarded to a monitoring platform and retained long enough to correlate the request sequence.

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 sits in the Django REST Framework (DRF) authorization layer of the Ansible Automation Platform 2 controller API, and maps to CWE-862 (Missing Authorization). DRF object-level permissions in this codebase are normally enforced through ModelAccessPermission, which derives the target object and its permission model from the view's declared 'model' and 'parent_model' attributes. JobJobEventsChildrenSummary declares neither, so check_get_permissions() takes a path that returns True unconditionally for any authenticated user rather than evaluating role-based access. The view then bypasses DRF's get_object() flow entirely, calling Django's get_object_or_404(Job, pk) directly, which means no permission filter is applied to the lookup and job existence is signaled through the HTTP status code (200 versus 404). The result is a read-only enumeration primitive over the job event hierarchy: an attacker with any account can distinguish existing from non-existing job IDs across the whole platform and inspect event tree metadata and processing completion state for jobs they should not see. The fact that the adjacent /jobs/{id}/job_events/ endpoint returns 403 for the same low-privilege principal demonstrates that the correct authorization machinery exists and is applied elsewhere, isolating the root cause to this single view's missing model/parent_model declaration and absence of an object-level check. Affected CPE identifiers cover Red Hat Ansible Automation Platform 2 releases.

Know when Red Hat Ansible Automation Platform 2 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 5.0 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

Authenticated network IDOR yielding only low-magnitude metadata/enumeration disclosure; I take S:U conservatively as the leak stays within the application's authority, giving ~4.3.

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 5.0 MEDIUM

Primary rating from Vendor (redhat).

CVSS VectorVendor: redhat

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

DescriptionCVE.org

JobJobEventsChildrenSummary view has no model/parent_model. ModelAccessPermission.check_get_permissions() falls through (returns True) for any authenticated user. The view uses raw get_object_or_404(Job, pk) without DRF object-level permission check. Zero-privilege user reads event tree structure, event_processing_finished status, and enumerates Job IDs platform-wide via 200/404 oracle. Sibling endpoint /jobs/{id}/job_events/ correctly returns 403.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Medium
widely used enterprise automation platform, common but not universal in Red Hat shops
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
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

25
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +25
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2026-84719 CRITICAL
9.9 Sep 23

Missing authorization checks in the Red Hat Ansible Automation Platform 2 automation-controller allow an authenticated o

CVE-2026-84502 CRITICAL
9.9 Sep 23

Authenticated users who hold permission to create or modify a project within a single organization can execute arbitrary

CVE-2026-84474 CRITICAL
9.9 Sep 23

Privilege escalation and remote code execution on managed hosts is possible in Red Hat Ansible Automation Platform 2 bec

CVE-2026-11807 CRITICAL
9.6 Jun 23

Credential disclosure in Red Hat Ansible Automation Platform 2.5 and 2.6 allows any authenticated user to retrieve plain

CVE-2026-12564 CRITICAL
9.6 Aug 18

Server-side request forgery in the Red Hat Ansible Automation Platform 2 Controller's HashiCorp Vault credential plugin

CVE-2026-75884 CRITICAL
9.1 Sep 23

Privilege escalation in Red Hat Ansible Automation Platform 2 (built on the AWX upstream project) lets an authenticated

CVE-2026-12701 CRITICAL
9.0 Jul 20

Arbitrary file write in pulpcore's FilesystemExport feature allows an authenticated administrator to escape the intended

CVE-2026-89091 HIGH
8.8 Oct 08

Symlink-following file overwrite on the Ansible control node is possible in ansible-core when a user runs `ansible-galax

CVE-2026-84683 HIGH
8.7 Sep 23

Stored cross-site scripting in the automation-controller component of Red Hat Ansible Automation Platform 2 lets an auth

CVE-2026-84691 HIGH
8.7 Sep 23

An authenticated automation-controller administrator in Red Hat Ansible Automation Platform 2 can turn the administrator

CVE-2026-92982 HIGH
8.5 Oct 15

Jinja2 template injection in Ansible Operator Plugins (CWE-1336) lets an authenticated Kubernetes user who can create or

CVE-2026-76648 HIGH
8.5 Sep 23

Missing object-level authorization in the JobTemplate copy endpoint (CopyAPIView) of AWX and Red Hat Ansible Automation

Vendor StatusVendor

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