CVE-2026-11819: Community.general: community.general keyring_info — os keyring passphrase returned in plaintext
Hi Red Hat Security Team,
I am reporting a vulnerability in community.general v13.0.0
Module: plugins/modules/keyringinfo.py
CVSS 3.1: 5.5 MEDIUM — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Issue: The module retrieves a passphrase from the OS native keyring (GNOME Keyring, macOS Keychain, Windows Credential Manager) and places it directly into result["passphrase"] with no output suppression, no nolog protection, and no documentation warning.
Other sources
Module: plugins/modules/keyringinfo.py
CVSS 3.1: 5.5 MEDIUM — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Issue: The module retrieves a passphrase from the OS native keyring (GNOME Keyring, macOS Keychain, Windows Credential Manager) and places it directly into result["passphrase"] with no output suppression, no nolog protection, and no documentation warning.
Root Cause:
Line 105 (protected): keyringpassword=dict(type="str", required=True, nolog=True) Line 127 (NOT protected): result["passphrase"] = passphrase
Observed Output:
{ "changed": false, "passphrase": "MyMasterP@ssw0rd!SSHKeySecret" } Visible via register + debug: { "keyringresult": { "changed": false, "passphrase": "MyMasterP@ssw0rd!SSHKeySecret" } }
Impact:
Master passwords, SSH key passphrases and service credentials appear in all Ansible output
register: keyringresult followed by debug: var=keyringresult prints passphrase in full
Ansible fact caching backends (Redis, JSON file, memcached) may persist the passphrase
AWX/Tower job logs silently store the live credential
Fix:
module.exitjson(changed=False, passphrase=passphrase, ansiblenolog=True)
Also add a documentation warning requiring callers to use nolog: true at the task level.
PoCs
Fig 1: PoC execution showing passphrase in plaintext output
Fig 2: Source code showing nolog=True on input (line 105) vs unprotected output (line 127)
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
community.generalto a version that resolves this vulnerability.Fixed in 13.0.0 - Configuration
When calling community.general keyring_info, set task-level or module invocation no_log: true so the module result (including result["passphrase"]) is not logged; the report contrasts keyring_password declared with no_log=True at line 105 versus passphrase written to result at line 127.
Ansible task using community.general keyring_info no_log = true - Compensating control
Avoid storing or persisting the retrieved passphrase in fact caches: if fact caching is enabled with Redis, JSON file, or memcached backends, disable/stop those cache mechanisms for this workflow to prevent passphrase persistence.
- Operational
Treat any existing Ansible runs where the output was registered/debugged (e.g., register: keyring_result followed by debug: var=keyring_result) as credential exposure events; rotate any leaked secrets such as master passwords, SSH key passphrases, and service credentials.
Event History
Frequently Asked Questions
What is the severity of CVE-2026-11819?
CVE-2026-11819 has a medium severity rating of 5.5 based on the CVSS 3.1 scoring system.
How do I fix CVE-2026-11819?
To mitigate CVE-2026-11819, ensure to update to the latest version of the community.general module where this issue is addressed.
What vulnerabilities are associated with CVE-2026-11819?
CVE-2026-11819 exposes the OS keyring passphrase in plaintext, which can lead to unauthorized access to sensitive information.
Which software is affected by CVE-2026-11819?
CVE-2026-11819 affects the community.general module in Ansible version 13.0.0.
What types of systems are impacted by CVE-2026-11819?
Systems using OS native keyrings such as GNOME Keyring, macOS Keychain, or Windows Credential Manager are impacted by CVE-2026-11819.