Bug 2524651 (CVE-2026-80158) - CVE-2026-80158 ansible-collection-community-general: community.general: ipa_getkeytab does not set no_log on the bind_pw parameter, disclosing the IPA bind password in logs and process listings
Summary: CVE-2026-80158 ansible-collection-community-general: community.general: ipa_g...
Keywords:
Status: NEW
Alias: CVE-2026-80158
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-08-26 19:58 UTC by OSIDB Bzimport
Modified: 2026-08-26 20:02 UTC (History)
17 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-08-26 19:58:53 UTC
community.general's ipa_getkeytab module (plugins/modules/ipa_getkeytab.py) declares its bind_pw argument WITHOUT no_log:

      bind_dn=dict(type="str"),
      bind_pw=dict(type="str"),                 # missing no_log
      password=dict(type="str", no_log=True),   # sibling has it

Because the value is neither flagged with no_log nor caught by
ansible-core's name-based redaction heuristic, the IPA simple-bind
password is disclosed through several channels.

Exposure vectors
----------------
  1. Log disclosure (CWE-532): the value appears in cleartext in the target host's journal/syslog "Invoked with" line, in the module's return values / -v output, and in Automation Controller / AWX job output.
  2. Process-list disclosure (CWE-214): the module passes the password to the child helper as `ipa-getkeytab ... --bindpw <cleartext> ...` (bind_pw=cmd_runner_fmt.as_opt_val("--bindpw")), so it is visible in      `ps` / /proc/<pid>/cmdline to local users during execution. This vector is the child process's own argv and is NOT remediated by no_log.
  3. Contributing cleartext storage (CWE-312).

  Why automatic redaction does not apply
  --------------------------------------
  ansible-core's name-based safety net is PASSWORD_MATCH in
lib/ansible/module_utils/basic.py (not parameters.py). Its regex requires a literal "pass" substring:

      ^(?:.+[-_\s])?pass(?:[-_\s]?(?:word|phrase|wrd|wd)?)(?:[-_\s].+)?$

"bind_pw" / "bindpw" contain no "pass" substring, so the pattern does not match: no warning and no auto-redaction. Even when PASSWORD_MATCH does match a name, it only substitutes 'NOT_LOGGING_PASSWORD' in the "Invoked with" line and emits a warning — it does not add the value to no_log_values, so return values and other logging remain unredacted. Explicit no_log=True in the argument spec is therefore the required fix.


Note You need to log in before you can comment on or make changes to this bug.