Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain job template webhook_key
-
DeliveryCraft pull_request webhook with malicious statuses_url
-
ExploitSign and submit forged webhook to AWX receiver
-
ExecutionAWX stores attacker-controlled callback URL
-
PersistJob execution triggers status POST bearing GitHub PAT
-
ImpactReceive and exfiltrate GitHub PAT at attacker endpoint
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Three specific conditions must be satisfied simultaneously: (1) The targeted job template must be configured with GitHub pull_request webhook integration AND have a GitHub Personal Access Token set as the webhook credential - templates using other credential types or no PAT are not affected. (2) The attacker must possess the job template's webhook_key (the HMAC signing secret used to authenticate incoming webhooks) - this is the primary access control barrier and the prerequisite that drives AC:H in the CVSS vector; without it, forged webhooks are rejected. (3) The AWX controller must be able to make outbound network connections to the attacker's specified callback URL - deployments with strict egress filtering that permits only api.github.com are not exploitable via this path. Exploitation is further limited to the job template's execution lifecycle: the PAT is only transmitted when AWX posts a status update after job completion or status change, so the attacker must trigger or await a job run following webhook injection. Authentication on the AWX platform itself is not required beyond possession of the webhook_key. |
| Impact | The vendor-assigned CVSS 3.1 score of 6.3 (AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N) classifies this as Medium severity, but the real-world risk is meaningfully higher for organizations relying on broad-scoped GitHub PATs. AC:H reflects the genuine prerequisite of possessing the webhook_key signing secret, which is the primary access control barrier. PR:L acknowledges that the attacker must hold this credential-equivalent key. The scope change (S:C) and high confidentiality impact (C:H) capture the critical downstream consequence: a stolen PAT grants the attacker persistent access to GitHub repositories entirely outside the AWX environment. EPSS data was not provided in the available intelligence, and this CVE is not currently listed in the CISA KEV catalog, indicating no confirmed active exploitation at time of analysis. No POC exploit code has been publicly identified. The realistic priority is elevated specifically for deployments where the configured PAT has broad organizational or cross-repository permissions - in those environments, a single webhook credential theft translates to widespread GitHub access. Egress filtering on the AWX controller is a meaningful compensating control that directly breaks the attack chain. |
| Exploit ScenarioDerived | An attacker who has obtained the webhook_key for a targeted AWX job template - through credential disclosure, insider access, or prior system compromise - crafts a GitHub pull_request webhook JSON payload with the statuses_url field set to an attacker-controlled HTTPS listener. The payload is HMAC-signed using the webhook_key and submitted to the AWX webhook receiver endpoint. When AWX processes the forged webhook and the associated job subsequently completes, AWX POSTs the job status update - bearing the configured GitHub PAT as an Authorization: Bearer header - to the attacker's endpoint, completing the credential theft with no further interaction required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 19, 2026
Server-Side Request Forgery in AWX's GitHub webhook integration (Red Hat Ansible Automation Platform 2) enables a remote attacker possessing a job template's webhook_key to redirect PAT-bearing status callbacks to an attacker-controlled endpoint, exfiltrating the configured GitHub Personal Access Token. The attack exploits AWX's failure to validate that the pull_request.statuses_url field in an incoming webhook payload points to a legitimate GitHub API domain before using it as a POST target. No public exploit is identified at time of analysis, but successful exploitation yields persistent GitHub repository access through the stolen PAT, extending the blast radius well beyond the AWX system itself.
RemediationAI
Consult the Red Hat security advisory at https://access.redhat.com/security/cve/CVE-2026-12726 and the tracking bug at https://bugzilla.redhat.com/show_bug.cgi?id=2490796 for the latest patch availability, as no specific fix version is confirmed in the available data; check for an updated RAAP 2 package release from Red Hat. While awaiting a patch, implement the following specific compensating controls: (1) Apply egress firewall rules on AWX controller hosts that restrict outbound HTTPS to api.github.com only, blocking all other destinations - this directly prevents the SSRF callback from reaching attacker-controlled infrastructure, though it may break other outbound integrations if not scoped carefully. (2) Immediately rotate all GitHub PATs configured as AWX webhook credentials and replace them with fine-grained PATs scoped to the minimum required permissions (e.g., statuses:write on specific repositories only), to limit the impact of any PAT that may have already been exfiltrated. (3) Disable GitHub webhook integration on any job templates that do not strictly require it, reducing the attack surface. (4) Audit AWX outbound network logs for unexpected POST requests to non-GitHub-API domains originating from the webhook processing path, as evidence of prior exploitation. Note that PAT rotation alone does not remediate the underlying SSRF vulnerability.
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
AWX (the open-source upstream component of Red Hat Ansible Automation Platform 2) implements GitHub webhook integration that ingests pull_request events and posts job execution status back to GitHub via the payload-supplied statuses_url field - normally an api.github.com endpoint. The root cause is CWE-918 (Server-Side Request Forgery): AWX stores the statuses_url value from the untrusted webhook JSON body without asserting that the hostname belongs to the expected GitHub API domain. When a job template is configured with a GitHub PAT as its webhook credential, AWX authenticates outbound status POST requests with that PAT as a Bearer token. Because the callback target URL is attacker-controllable through the unvalidated payload field, the PAT is delivered to whatever HTTP endpoint the attacker specifies. Affected products per CPE cpe:2.3:a:red_hat:red_hat_ansible_automation_platform_2:*:*:*:*:*:*:*:* cover all versions of Red Hat Ansible Automation Platform 2; upstream AWX installations with the same webhook architecture are similarly affected.
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:H/PR:L/UI:N/S:C/C:H/I:N/A:N
Attacker must hold the webhook_key (PR:L), target must have PAT-based credentials configured (AC:H), and stolen PAT impacts GitHub outside AWX (S:C/C:H).
Primary rating from Vendor (redhat).
CVSS VectorVendor: redhat
DescriptionCVE.org
A flaw was found in the AWX GitHub webhook integration. When processing GitHub pull_request webhooks, the controller stores the pull_request.statuses_url value from the webhook payload without validating that it points to a trusted GitHub API endpoint. If a job template is configured with a GitHub Personal Access Token as its webhook credential, the controller later POSTs that token to the stored callback URL when posting job status updates. An attacker who can submit a correctly signed forged webhook using the job template's webhook_key can redirect the callback to an attacker-controlled URL and exfiltrate the configured GitHub PAT.
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
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Affected Products (CPE)CVE.org
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-38065
GHSA-w8qh-qh69-53cx
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB