Bug 2511902 (CVE-2026-71366) - CVE-2026-71366 awx: notification backends allow SSRF and credential leakage
Summary: CVE-2026-71366 awx: notification backends allow SSRF and credential leakage
Keywords:
Status: NEW
Alias: CVE-2026-71366
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:25 UTC
Red Hat Product Errata RHSA-2026:59136 0 None None None 2026-08-24 16:27:03 UTC

Description OSIDB Bzimport 2026-08-06 04:59:43 UTC
Several AWX notification backends send HTTP requests to notification template URLs without private-network egress filtering. The affected backends are:

- Webhook backend (awx/main/notifications/webhook_backend.py): POSTs to configured URL with Basic Auth. Follows redirects manually and reuses the same Basic Auth tuple for each redirected request regardless of host change.
- Mattermost backend (awx/main/notifications/mattermost_backend.py): POSTs to configured URL without egress filtering.
- Rocket.Chat backend (awx/main/notifications/rocketchat_backend.py): POSTs to configured URL without egress filtering.
- Grafana backend (awx/main/notifications/grafana_backend.py): Sends API key in Authorization: Bearer header to {grafana_url}/api/annotations.

The webhook backend code path:

url = str(m.recipients()[0])
resp = chosen_method(url=url, auth=auth, ...)
url_next = resp.headers.get('Location', None)
url = url_next  # No host validation before resending auth

The Grafana backend:

grafana_headers['Authorization'] = 'Bearer {}'.format(self.grafana_key)
requests.post('{}/api/annotations'.format(m.recipients()[0]), ...)

There is no private, loopback, link-local, or reserved-address egress check in the notification send path, and redirect targets are not revalidated before credentials are reused.

Comment 2 errata-xmlrpc 2026-08-24 16:26:23 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.