Bug 2527090 (CVE-2026-84499) - CVE-2026-84499 automation-controller: automation-controller-container: automation-controller: write-only survey password recovered in plaintext via Schedule/WorkflowJobTemplateNode survey min/max validation error message
Summary: CVE-2026-84499 automation-controller: automation-controller-container: automa...
Keywords:
Status: NEW
Alias: CVE-2026-84499
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 20:55 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:50:58 UTC
Red Hat Product Errata RHSA-2026:71114 0 None None None 2026-09-23 21:07:40 UTC

Description OSIDB Bzimport 2026-09-01 20:55:12 UTC
A flaw was found in automation-controller (AWX). Write-only survey password
values stored on Schedules and WorkflowJobTemplateNodes are encrypted at rest
and masked as `$encrypted$` on read. LaunchConfigurationBaseSerializer.validate
(awx/api/serializers.py) replaces an incoming `$encrypted$` with the stored DB
ciphertext and revalidates prompts against the job template's current
survey_spec; SurveyJobTemplateMixin._accept_or_ignore_variables
(awx/main/models/mixins.py) decrypts the stored password before validation, and
_survey_element_validation interpolates the decrypted plaintext into the
"value ... is too small/too large" min/max error for text/textarea/password
questions. The error dict is returned verbatim as the HTTP 400 body. A user
holding only the delegated JobTemplate Admin role can POST a tightened
survey_spec (e.g. "max":1) and then PATCH a schedule of that job template --
either echoing `$encrypted$` for the variable, or simply re-stating
unified_job_template to force full-prompt revalidation without knowing the
variable name (serializers.py forces full revalidation when unified_job_template
is present) -- and read the stored plaintext password of a schedule created by
a different, higher-privileged user (ScheduleAccess.can_change grants a JT
admin write on all schedules of the template regardless of creator). The same
base serializer backs WorkflowJobTemplateNodeSerializer, so workflow nodes are
equally affected. Discovered internally; verified live on AAP 2.7 /
automation-controller 4.8.1; still present on devel.
    Upstream: github.com/ansible/awx (api/serializers.py
              LaunchConfigurationBaseSerializer; main/models/mixins.py
              _survey_element_validation / _accept_or_ignore_variables;
              main/access.py ScheduleAccess.can_change)

Comment 3 Jon Orris 2026-09-23 20:50:57 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 4 Jon Orris 2026-09-23 21:07:39 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.