CVE-2026-12726

Description

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.

Statement

Red Hat rates this issue as Moderate impact. This flaw affects AWX controller deployments that enable GitHub webhooks with status callback configured (webhook_service=github and a GitHub Personal Access Token configured as webhook_credential on the job template).

The controller intentionally uses the configured GitHub PAT to post commit status updates back to GitHub; however, it fails to restrict the callback destination to trusted GitHub API endpoints. When a forged webhook with a valid HMAC signature supplies a malicious statuses_url, the PAT may be sent to an attacker-controlled URL on job completion.

Exploitation requires knowledge of the per-job-template webhook_key used to validate incoming webhook requests. This secret is not controllable by arbitrary GitHub contributors through normal GitHub webhook delivery; it must be obtained through privileged access to the automation controller or compromise/disclosure of the configured shared secret. Additional preconditions include network reachability to the webhook endpoint and network reachability from the controller to the attacker-specified callback URL.

AWX is typically deployed as internal infrastructure management tooling, which may limit practical exposure in many environments, but does not eliminate the issue where GitHub webhook integration with status callback is enabled.

Mitigation

The following practices may reduce exposure to this flaw until a fix is available:
1. Restrict network access to controller webhook endpoints so only trusted GitHub egress IPs or an approved reverse proxy can reach them.
2. Protect job template webhook keys as secrets; restrict Job Template admin access; rotate webhook keys if compromise is suspected.
3. If commit status callback to GitHub is not required, configure GitHub webhooks without a webhook_credential on the job template (this disables PAT transmission on job completion).
4. Monitor controller logs and outbound connections for unexpected callback destinations following webhook-triggered jobs.

Common Vulnerability Scoring System (CVSS) Score Details

Info alert:Important note

CVSS scores for open source components depend on vendor-specific factors (e.g. version or build chain). Therefore, Red Hat's score and impact rating can be different from NVD and other vendors. Red Hat remains the authoritative CVE Naming Authority (CNA) source for its products and services (see Red Hat classifications).

The following CVSS metrics and score provided are preliminary and subject to review.

CVSS v3 Score Breakdown

Red HatNVDcve.org
Base Score6.3N/A6.3
Attack VectorNetworkN/ANetwork
Attack ComplexityHighN/AHigh
Privileges RequiredLowN/ALow
User InteractionNoneN/ANone
ScopeChangedN/AChanged
ConfidentialityHighN/AHigh
Integrity ImpactNoneN/ANone
Availability ImpactNoneN/ANone

Vector

Red Hat: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N

cve.org: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N

Understanding the Weakness (CWE)

Confidentiality

Technical Impact: Read Application Data

Integrity

Technical Impact: Execute Unauthorized Code or Commands

Access Control

Technical Impact: Bypass Protection Mechanism

By providing URLs to unexpected hosts or ports, attackers can make it appear that the server is sending the request, possibly bypassing access controls such as firewalls that prevent the attackers from accessing the URLs directly. The server can be used as a proxy to conduct port scanning of hosts in internal networks, use other URLs such as that can access documents on the system (using file://), or use other protocols such as gopher:// or tftp://, which may provide greater control over the contents of requests.

Acknowledgements

Red Hat would like to thank Martin Brodeur (FluentLogic) for reporting this issue.

Frequently Asked Questions

Want to get errata notifications? Sign up here.