Bug 2511901 (CVE-2026-71365) - CVE-2026-71365 awx: webhook status callback SSRF leaks the Git PAT
Summary: CVE-2026-71365 awx: webhook status callback SSRF leaks the Git PAT
Keywords:
Status: NEW
Alias: CVE-2026-71365
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-08-06 04:59 UTC by OSIDB Bzimport
Modified: 2026-08-24 16:27 UTC (History)
8 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2026:59135 0 None None None 2026-08-24 16:26:23 UTC
Red Hat Product Errata RHSA-2026:59136 0 None None None 2026-08-24 16:27:04 UTC

Description OSIDB Bzimport 2026-08-06 04:59:41 UTC
For GitHub pull_request webhooks, get_event_status_api() in awx/api/views/webhooks.py returns pull_request.statuses_url from the request body verbatim without any host validation:

def get_event_status_api(self):
    if self.get_event_type() != 'pull_request':
        return
    return self.request.data.get('pull_request', {}).get('statuses_url')

The value is persisted into job extra_vars and later used by update_webhook_status() in awx/main/models/mixins.py:

status_api = self.extra_vars_dict.get('awx_webhook_status_api')
headers = {k: v.format(self.webhook_credential.get_input('token')), 'Content-Type': 'application/json'}
response = requests.post(status_api, data=json.dumps(data), headers=headers, timeout=30)

There is no host allowlist for the expected Git provider endpoint and no private-network egress filtering before the request is sent. The webhook receiver relies on an HMAC secret (webhook_key), which is readable by users with the admin role on the job template via /api/v2/job_templates/{id}/webhook_key/. This allows a template admin to forge a signed webhook payload with statuses_url pointing to an attacker-controlled endpoint, and AWX will POST status updates including the Git PAT in the Authorization header to that endpoint.

Comment 2 errata-xmlrpc 2026-08-24 16:26:22 UTC
This issue has been addressed in the following products:

  Red Hat Ansible Automation Platform 2.5 for RHEL 9
  Red Hat Ansible Automation Platform 2.5 for RHEL 8

Via RHSA-2026:59135 https://access.redhat.com/errata/RHSA-2026:59135

Comment 3 errata-xmlrpc 2026-08-24 16:27:02 UTC
This issue has been addressed in the following products:

  Red Hat Ansible Automation Platform 2.6 for RHEL 9
  Red Hat Ansible Automation Platform 2.6 for RHEL 10

Via RHSA-2026:59136 https://access.redhat.com/errata/RHSA-2026:59136


Note You need to log in before you can comment on or make changes to this bug.