Bug 2527156 (CVE-2026-84703) - CVE-2026-84703 automation-controller: automation-controller-container: automation-controller: execution environment credential foreign key is not use-permission checked, allowing an organization execution-environment admin to bind and disclose another ...
Summary: CVE-2026-84703 automation-controller: automation-controller-container: automa...
Keywords:
Status: NEW
Alias: CVE-2026-84703
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 23:35 UTC by OSIDB Bzimport
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:21 UTC
Red Hat Product Errata RHSA-2026:71114 0 None None None 2026-09-23 21:07:57 UTC

Description OSIDB Bzimport 2026-09-01 23:35:15 UTC
A flaw was found in automation-controller (AWX). Binding a Credential to a
resource is a use-level action because the credential's secrets are decrypted and
consumed at run time; the product enforces use_role on credential foreign keys
throughout (ProjectAccess, CredentialInputSourceAccess, InstanceGroupAccess, job-
launch and workflow-node paths). However ExecutionEnvironmentAccess.can_add and
can_change (awx/main/access.py:1316-1338) validate only the organization FK (via
execution_environment_admin_role) and never call check_related on the credential
FK, and ExecutionEnvironmentSerializer.validate_credential (serializers.py:
1327-1330) only enforces kind == 'registry' with no RBAC. Consequently a non-
superuser holding Organization ExecutionEnvironment Admin (plus Member) in one
organization can POST or PATCH /api/controller/v2/execution_environments/ with a
credential id referencing any Container-Registry credential in any other
organization, including one for which direct GET returns 403. When a job runs
with that execution environment, awx/main/tasks/jobs.py:320-327 calls
cred.get_input('password'), decrypting the foreign credential's plaintext
registry password into container_auth_data (podman authfile); for container-group
tasks awx/main/tasks/receptor.py builds a Kubernetes imagePullSecret from the same
plaintext. This crosses the tenant boundary and discloses another organization's
registry credentials. A related instance affects Project.signature_validation_
credential, a second credential foreign key ProjectAccess does not use-check.
Discovered internally (vanilla-harness); verified live on AAP 2.7 / automation-
controller 4.8.1; still present on devel.
    Upstream: github.com/ansible/awx (awx/main/access.py:
              ExecutionEnvironmentAccess.can_add / can_change; contrast
              ProjectAccess; sink awx/main/tasks/jobs.py container_auth_data).

Comment 2 Jon Orris 2026-09-23 20:51:20 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:56 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.