Bug 2527126 (CVE-2026-84680) - CVE-2026-84680 automation-controller: automation-controller-container: automation-controller: organization galaxy credential attachment checks only read permission on the credential, allowing an organization admin with read-only visibility to bind and ...
Summary: CVE-2026-84680 automation-controller: automation-controller-container: automa...
Keywords:
Status: NEW
Alias: CVE-2026-84680
Deadline: 2026-10-01
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-09-01 22:27 UTC by Thomas Eagle
Modified: 2026-09-23 21:07 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:71113 0 None None None 2026-09-23 20:51:07 UTC
Red Hat Product Errata RHSA-2026:71114 0 None None None 2026-09-23 21:07:49 UTC

Description Thomas Eagle 2026-09-01 22:27:00 UTC
A flaw was found in automation-controller (AWX). OrganizationGalaxyCredentialsList
(awx/api/views/organization.py) validates only that the attached credential's
kind is galaxy_api_token, and OrganizationAccess.can_attach (awx/main/access.py)
has no branch for the galaxy_credentials relationship, so it falls through to
BaseAccess.can_attach, which requires only can_change on the organization
(org admin) and read access on the credential -- not use_role. Consequently a
user who administers any one organization and holds only read on a Galaxy/Hub
credential in another organization (for example a system/platform auditor) can
POST to /api/controller/v2/organizations/{id}/galaxy_credentials/ to bind that
foreign credential. RunProjectUpdate.build_env (awx/main/tasks/jobs.py) then
iterates organization.galaxy_credentials, decrypts each token, and exports it as
ANSIBLE_GALAXY_SERVER_SERVERn_TOKEN so ansible-galaxy authenticates to the
credential owner's Hub URL. The token is masked in the API job_env, but it is
used server-side on the attacker's behalf against the victim's Hub -- a read-only
role gains cross-tenant use of another org's secret. Discovered internally;
verified live on AAP 2.7 / automation-controller 4.8.1 (a platform auditor
attached a foreign org's credential (204) and a subsequent project sync exported
the victim Hub URL + masked token); still present on devel.
    Upstream: github.com/ansible/awx (awx/main/access.py OrganizationAccess.
              can_attach / BaseAccess.can_attach; awx/api/views/organization.py
              OrganizationGalaxyCredentialsList; awx/main/tasks/jobs.py
              RunProjectUpdate.build_env)

Comment 2 Jon Orris 2026-09-23 20:51:05 UTC
This issue has been addressed in the following products:

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

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

Comment 3 Jon Orris 2026-09-23 21:07:47 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:71114 https://access.redhat.com/errata/RHSA-2026:71114


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