Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege AAP user
-
DeliveryIterate Job PKs against JobJobEventsChildrenSummary
-
ExploitUse 200/404 responses as enumeration oracle
-
ExecutionRead event tree and processing status for existing Jobs
-
ImpactAggregate 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N
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.
Primary rating from Vendor (redhat).
CVSS VectorVendor: redhat
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
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
Missing authorization checks in the Red Hat Ansible Automation Platform 2 automation-controller allow an authenticated o
Authenticated users who hold permission to create or modify a project within a single organization can execute arbitrary
Privilege escalation and remote code execution on managed hosts is possible in Red Hat Ansible Automation Platform 2 bec
Credential disclosure in Red Hat Ansible Automation Platform 2.5 and 2.6 allows any authenticated user to retrieve plain
Server-side request forgery in the Red Hat Ansible Automation Platform 2 Controller's HashiCorp Vault credential plugin
Privilege escalation in Red Hat Ansible Automation Platform 2 (built on the AWX upstream project) lets an authenticated
Arbitrary file write in pulpcore's FilesystemExport feature allows an authenticated administrator to escape the intended
Symlink-following file overwrite on the Ansible control node is possible in ansible-core when a user runs `ansible-galax
Stored cross-site scripting in the automation-controller component of Red Hat Ansible Automation Platform 2 lets an auth
An authenticated automation-controller administrator in Red Hat Ansible Automation Platform 2 can turn the administrator
Jinja2 template injection in Ansible Operator Plugins (CWE-1336) lets an authenticated Kubernetes user who can create or
Missing object-level authorization in the JobTemplate copy endpoint (CopyAPIView) of AWX and Red Hat Ansible Automation
EUVD-2026-85524
GHSA-89mc-x55w-mqvp
NVD
CVE.org
EPSS
VulDB
Exploit-DB