{"id":"CVE-2026-126643","kind":"vulnerability","aliases":["CVE-2026-126643"],"related":[],"title":"AAP Gateway Operator: resource-server secret copied in plaintext into custom resource","description":"A cleartext storage flaw was found in the AAP Gateway Operator. When reconciling an AutomationController, the operator reads the protected resource-server Secret (Secret/<aap-name>-resource-server, key controller_resource_server_secret) and copies its plaintext value into the generated AutomationController custom resource under spec.extra_settings (RESOURCE_SERVER.SECRET_KEY). Although the operator uses no_log to keep the value out of its own logs, serializing it into the custom resource exposes it to any principal able to read the AutomationController CR without permission to read the backing Kubernetes Secret, breaking the expected OpenShift RBAC separation between the two resources. The value may also propagate into Kubernetes API/etcd storage, GitOps and Argo diffs and history, rendered manifests, support bundles, and audit data. The resource-server secret is intended for trusted Gateway-to-Controller service authentication, and its disclosure may allow a user to impersonate a trusted Controller service and reach privileged service-index APIs.","summary":"The AAP Gateway Operator copies a protected resource-server Secret into the generated AutomationController custom resource as plain text. Anyone who can read that custom resource, without permission to read the Secret, can obtain the value and impersonate the trusted Controller service.","severity":"medium","cvss":6.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["aap","ansible-automation-platform","infrastructure","kubernetes","openshift"],"not_affected_if":["operator-not-installed"],"how_to_check":"- Check whether the AutomationController custom resource contains `spec.extra_settings` with `RESOURCE_SERVER.SECRET_KEY` set in plain text\n- Review who holds read access to AutomationController resources in the cluster\n- Review whether GitOps repositories, manifests or support bundles contain the generated AutomationController resource","fix":null,"status":"open","published_at":"2026-11-12T11:17:11+00:00","first_seen_at":"2026-11-12T11:38:05+00:00","triaged_at":"2026-11-12T11:40:02+00:00","updated_at":"2026-11-12T11:40:02+00:00","category":"infrastructure","confidence":0.6,"triage":{"at":"2026-11-12T11:40:02Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"local","title":"AAP Gateway Operator: resource-server secret copied in plaintext into custom resource","impact":"medium","summary":"The AAP Gateway Operator copies a protected resource-server Secret into the generated AutomationController custom resource as plain text. Anyone who can read that custom resource, without permission to read the Secret, can obtain the value and impersonate the trusted Controller service.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["aap","openshift","kubernetes","ansible-automation-platform"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"Readers of the custom resource can impersonate the trusted Controller service","analyst_note":"Find the fixed AAP Gateway Operator version and any vendor advisory from Red Hat; the NVD entry alone gives no fix or affected ranges.","how_to_check":"- Check whether the AutomationController custom resource contains `spec.extra_settings` with `RESOURCE_SERVER.SECRET_KEY` set in plain text\n- Review who holds read access to AutomationController resources in the cluster\n- Review whether GitOps repositories, manifests or support bundles contain the generated AutomationController resource","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["operator-not-installed"],"who_is_affected":"Teams running the AAP Gateway Operator on OpenShift or Kubernetes that reconcile AutomationController resources. Exposure depends on who can read AutomationController custom resources, and on whether that value also lands in etcd, GitOps history or support bundles. Clusters that do not run the operator can skip it.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000789,"input_tokens":4785,"output_tokens":621,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-126643':16A,19A '-2026':15A,18A 'aap':1A,20B,29B,79C 'abl':146C 'allow':211C 'also':173C 'although':120C 'ansibl':22B 'ansible-automation-platform':21B 'anyon':48B 'api':226C 'api/etcd':177C 'argo':181C 'audit':190C 'authent':206C 'autom':23B 'automationcontrol':42B,85C,112C,150C 'back':157C 'break':160C 'bundl':188C 'cleartext':72C 'control':69B,100C,204C,218C 'copi':8A,32B,105C 'cr':151C 'custom':12A,43B,53B,113C,139C 'cve':14A,17A 'data':191C 'diff':182C 'disclosur':209C 'expect':162C 'expos':141C 'flaw':74C 'found':76C 'gateway':2A,30B,80C,202C 'gateway-to-control':201C 'generat':41B,111C 'gitop':179C 'histori':184C 'imperson':66B,215C 'index':225C 'infrastructur':25B 'intend':198C 'keep':127C 'key':99C,119C 'kubernet':26B,158C,176C 'log':125C,134C 'manifest':186C 'may':172C,210C 'obtain':62B 'openshift':27B,163C 'oper':3A,31B,81C,87C,122C 'permiss':56B,153C 'plain':46B 'plaintext':10A,107C 'platform':24B 'princip':145C 'privileg':222C 'propag':174C 'protect':34B,90C 'rbac':164C 'reach':221C 'read':51B,58B,88C,148C,155C 'reconcil':83C 'render':185C 'resourc':5A,13A,36B,44B,54B,92C,97C,101C,114C,140C,169C,194C 'resource-serv':4A,35B,91C,96C,193C 'resource_server.secret':118C 'secret':7A,38B,60B,94C,95C,103C,159C,196C 'separ':165C 'serial':135C 'server':6A,37B,93C,98C,102C,195C 'servic':70B,205C,219C,224C 'service-index':223C 'set':117C 'spec.extra':116C 'storag':73C,178C 'support':187C 'text':47B 'trust':68B,200C,217C 'two':168C 'use':123C 'user':213C 'valu':64B,108C,129C,171C 'without':55B,152C","nicknames":[],"mitigations":[],"who_affected":"Teams running the AAP Gateway Operator on OpenShift or Kubernetes that reconcile AutomationController resources. Exposure depends on who can read AutomationController custom resources, and on whether that value also lands in etcd, GitOps history or support bundles. Clusters that do not run the operator can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["aap","ansibleautomationplatform","infrastructure","kubernetes","medium","openshift"],"campaign_type":null,"search_a":"'-126643':16A,19A '-2026':15A,18A 'aap':1A 'copi':8A 'custom':12A 'cve':14A,17A 'gateway':2A 'oper':3A 'plaintext':10A 'resourc':5A,13A 'resource-serv':4A 'secret':7A 'server':6A","search_b":"'aap':20B,29B 'ansibl':22B 'ansible-automation-platform':21B 'anyon':48B 'autom':23B 'automationcontrol':42B 'control':69B 'copi':32B 'custom':43B,53B 'gateway':30B 'generat':41B 'imperson':66B 'infrastructur':25B 'kubernet':26B 'obtain':62B 'openshift':27B 'oper':31B 'permiss':56B 'plain':46B 'platform':24B 'protect':34B 'read':51B,58B 'resourc':36B,44B,54B 'resource-serv':35B 'secret':38B,60B 'server':37B 'servic':70B 'text':47B 'trust':68B 'valu':64B 'without':55B","search_c":"'aap':79C 'abl':146C 'allow':211C 'also':173C 'although':120C 'api':226C 'api/etcd':177C 'argo':181C 'audit':190C 'authent':206C 'automationcontrol':85C,112C,150C 'back':157C 'break':160C 'bundl':188C 'cleartext':72C 'control':100C,204C,218C 'copi':105C 'cr':151C 'custom':113C,139C 'data':191C 'diff':182C 'disclosur':209C 'expect':162C 'expos':141C 'flaw':74C 'found':76C 'gateway':80C,202C 'gateway-to-control':201C 'generat':111C 'gitop':179C 'histori':184C 'imperson':215C 'index':225C 'intend':198C 'keep':127C 'key':99C,119C 'kubernet':158C,176C 'log':125C,134C 'manifest':186C 'may':172C,210C 'openshift':163C 'oper':81C,87C,122C 'permiss':153C 'plaintext':107C 'princip':145C 'privileg':222C 'propag':174C 'protect':90C 'rbac':164C 'reach':221C 'read':88C,148C,155C 'reconcil':83C 'render':185C 'resourc':92C,97C,101C,114C,140C,169C,194C 'resource-serv':91C,96C,193C 'resource_server.secret':118C 'secret':94C,95C,103C,159C,196C 'separ':165C 'serial':135C 'server':93C,98C,102C,195C 'servic':205C,219C,224C 'service-index':223C 'set':117C 'spec.extra':116C 'storag':73C,178C 'support':187C 'trust':200C,217C 'two':168C 'use':123C 'user':213C 'valu':108C,129C,171C 'without':152C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-12T11:17:11+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","cvss_by":"secalert@redhat.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-126643","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-126643","severity":null,"published_at":"2026-11-12T11:17:11+00:00","modified_at":"2026-11-12T11:17:11+00:00","first_seen_at":"2026-11-12T11:38:05+00:00","fetched_at":"2026-11-12T11:38:05+00:00","note":null}],"documents":[],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}