Description
A flaw was found in ansible-core. When a task marked `no_log: true` fails, the task result is censored before being emitted, but the `exception` field is retained because it is present in the PRESERVE allow-list in lib/ansible/_internal/_task.py, and the default stdout callback prints it through CallbackBase._handle_exception. As a result, sensitive values the operator explicitly asked to hide can be disclosed: module argument-validation errors echo the argument value, templating errors print an Origin source snippet (the failing line plus the two preceding lines of the variables file, exposing neighbouring secrets from an -e @secrets.yml file), and fail/assert messages are printed in full. Secret material supplied as extra variables or variables files can therefore leak to terminal output, CI logs, and the stdout logs of any automation wrapping ansible-playbook, even though every task touching the secrets is marked no_log: true. This is a regression introduced with the ansible-core 2.19 data-tagging/templating rework; the behaviour does not occur on 2.16, where the error text is correctly censored.
Published: 2026-11-05
Score: 5.5 Medium
EPSS: n/a
KEV: No
Impact: Sensitive Data Leakage
Action: Patch Now
AI Analysis

Impact

A defect in ansible-core causes sensitive data to be exposed when a task marked no_log: true fails. The bug stems from the exception field being allowed in the PRESERVE list, leading the default stdout callback to display module argument‑validation errors, templating errors, and fail/assert messages that contain hidden secrets. Consequently, secrets supplied as extra variables or variable files can appear in terminal output, CI logs, and automation wrapper logs, violating confidentiality even though no_log was specified.

Affected Systems

The issue affects Red Hat ansible-core, specifically versions starting with ansible‑core 2.19 and later. The regression does not exist in 2.16, indicating the problem arose during the 2.19 data‑tagging and templating overhaul.

Risk and Exploitability

The CVSS score of 5.5 indicates a medium severity vulnerability; no EPSS data is available, and the vulnerability is not listed in CISA’s KEV catalog. An attacker who can trigger failure in a no_log task—such as by supplying malformed input or forcing a templating error—can cause the system to emit secrets in logs that are accessible to anyone who can read those logs. This risk is amplified in shared or automated environments where log output may be stored long‑term or transmitted to remote services.

Generated by OpenCVE AI on November 5, 2026 at 10:20 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update ansible-core to the most recent release where the regression has been addressed.
  • If an immediate update is not possible, change the stdout_callback to a minimal or metadata mode that suppresses exception output, reducing the chance of secret leakage.
  • Review playbook designs to ensure that no_log tasks are accompanied by strict variable filtering and that secrets are handled outside of error‑producing contexts.

Generated by OpenCVE AI on November 5, 2026 at 10:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 05 Nov 2026 10:45:00 +0000

Type Values Removed Values Added
Title Sensitive Data Leakage Exploited by Exception Handling in ansible-core

Thu, 05 Nov 2026 09:45:00 +0000

Type Values Removed Values Added
Description A flaw was found in ansible-core. When a task marked `no_log: true` fails, the task result is censored before being emitted, but the `exception` field is retained because it is present in the PRESERVE allow-list in lib/ansible/_internal/_task.py, and the default stdout callback prints it through CallbackBase._handle_exception. As a result, sensitive values the operator explicitly asked to hide can be disclosed: module argument-validation errors echo the argument value, templating errors print an Origin source snippet (the failing line plus the two preceding lines of the variables file, exposing neighbouring secrets from an -e @secrets.yml file), and fail/assert messages are printed in full. Secret material supplied as extra variables or variables files can therefore leak to terminal output, CI logs, and the stdout logs of any automation wrapping ansible-playbook, even though every task touching the secrets is marked no_log: true. This is a regression introduced with the ansible-core 2.19 data-tagging/templating rework; the behaviour does not occur on 2.16, where the error text is correctly censored.
Weaknesses CWE-209
References
Metrics cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: redhat

Published:

Updated: 2026-11-05T09:38:31.304Z

Reserved: 2026-11-05T07:01:00.146Z

Link: CVE-2026-123036

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-11-05T10:16:38.220

Modified: 2026-11-05T10:16:38.370

Link: CVE-2026-123036

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-11-05T10:30:15Z

Weaknesses
  • CWE-209

    Generation of Error Message Containing Sensitive Information