CVE-2025-14010
Ansible vulnerability analysis and mitigation

Overview

CVE-2025-14010 is an information exposure vulnerability in the community.general Ansible collection, specifically in the keycloak_user module, which leaks plaintext passwords via verbose debug output. The flaw was reported on October 28, 2025, and publicly disclosed on December 4, 2025. It affects ansible (pip) versions prior to 12.2.0. The vulnerability carries a CVSS v3.1 base score of 5.5 (Medium) (Red Hat Advisory, GitHub Advisory).

Technical details

The root cause is the absence of the no_log=True attribute on the credentials[].value field within the community.general.keycloak_user module (CWE-532: Insertion of Sensitive Information into Log File; CWE-200: Exposure of Sensitive Information to an Unauthorized Actor). When Ansible is executed with verbose flags such as -vvv, the module's invocation output includes the full module_args dictionary, which exposes the credentials[].value field containing plaintext passwords — while other sensitive fields like auth_password are correctly masked with VALUE_SPECIFIED_IN_NO_LOG_PARAMETER. Exploitation requires local access to the system or its logs, and the attacker must have at least low-level privileges to read Ansible output or log files. The fix, merged in PR #11005, marks credentials[].value as no_log=True (Red Hat Bugzilla, GitHub Issue, GitHub PR).

Impact

Successful exploitation results in a high confidentiality impact: plaintext Keycloak user passwords exposed in Ansible verbose output or log files can be retrieved by any local user with read access to those logs, potentially enabling unauthorized access to Keycloak accounts or administrative interfaces. There is no integrity or availability impact. If Keycloak administrative credentials are exposed, an attacker could escalate privileges within the identity management system, affecting downstream services relying on Keycloak for authentication (Red Hat Advisory, GitHub Advisory).

Exploitation steps

  1. Gain local access: Obtain a local account on a system where Ansible playbooks using the community.general.keycloak_user module are executed, or gain read access to Ansible log files or CI/CD pipeline output.
  2. Identify verbose Ansible runs: Look for Ansible execution logs generated with -v, -vv, -vvv, or higher verbosity flags, or check CI/CD pipeline logs where verbose mode may be enabled by default.
  3. Extract credentials from logs: Search log output for the invocationmodule_argscredentialsvalue field, which will contain the plaintext password for the Keycloak user being managed (e.g., "value": "admin-password").
  4. Use exposed credentials: Authenticate to the Keycloak instance using the recovered credentials to gain unauthorized access to user accounts or administrative functions (Red Hat Bugzilla, GitHub Issue).

Indicators of compromise

  • Logs: Ansible verbose output (stdout or log files) containing "credentials": [{"type": "password", "value": "<plaintext_password>"}] in the invocation.module_args section, rather than the expected VALUE_SPECIFIED_IN_NO_LOG_PARAMETER.
  • File System: Ansible log files (e.g., /var/log/ansible.log, CI/CD pipeline artifacts) storing verbose output from playbooks using the community.general.keycloak_user module with versions prior to 12.2.0.
  • Network: Unexpected or unauthorized authentication attempts to Keycloak administrative endpoints following access to Ansible log files.

Mitigation and workarounds

Upgrade the ansible pip package (community.general collection) to version 12.2.0 or later, which marks credentials[].value as no_log=True, preventing the field from appearing in verbose output (GitHub Advisory, GitHub PR). As an immediate workaround, avoid running Ansible playbooks that use keycloak_user with verbose flags (-v, -vvv, etc.) until the collection is updated. Additionally, restrict read access to Ansible log files and CI/CD pipeline output to authorized personnel only, and rotate any Keycloak credentials that may have been exposed in prior verbose runs.

Community reactions

The vulnerability was reported by community contributor canon-cmre-chris-conway via GitHub Issue #11000 on October 28, 2025, and was quickly addressed by maintainer felixfontein with a fix merged the following day. Contributor gundalow noted in the PR discussion that ansible-test tooling could potentially be extended to detect similar missing no_log annotations automatically, suggesting broader interest in preventing this class of issue (GitHub PR).

Additional resources


SourceThis report was generated using AI

Related Ansible vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-16493HIGH7.8
  • Ansible logoAnsible
  • ansible
NoYesJul 21, 2026
CVE-2026-11332HIGH7.8
  • Ansible logoAnsible
  • ansible
NoYesJun 05, 2026
CVE-2026-11837HIGH7.3
  • Ansible logoAnsible
  • ansible
NoYesJun 10, 2026
CVE-2026-11820MEDIUM6.5
  • Ansible logoAnsible
  • rhc-worker-playbook
NoNoJun 23, 2026
CVE-2026-44188MEDIUM5.3
  • Ansible logoAnsible
  • ansible
NoNoJun 15, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management