CVE Catalog

CVE-2026-82723

LowCVSS 1.8
Published: Translated: NVD NIST

Summary

A vulnerability in the AshAuthentication library (audit_log add-on) causes the full user record, including the hashed_password attribute, to be stored in the audit log when an audited action is invoked with an actor set. Marking the attribute as sensitive does not help because redaction only applies to inspect/1 output, not JSON encoding or raw-term storage. The issue affects versions from 4.12.0 before 4.15.0 and from 5.0.0-rc.0 before 5.0.0-rc.2.

Risk Assessment

Anyone with read access to the audit store (e.g., database credentials, an audit role, a backup, or a log shipper) can obtain password digests for all active accounts and perform offline password attacks. There is no remote attack vector, but the exposure of authentication data poses a serious risk to the organization.

Recommendation

Update the ash_authentication library to version 4.15.0 or 5.0.0-rc.2 (or later); if that is not possible, restrict access to the audit store and consider filtering actor data before storage. Additionally, verify whether existing audit logs already contain stored password digests.

Other vulnerabilities in AshAuthentication

See all
Original NVD description (English source)

Insertion of Sensitive Information into Log File vulnerability in team-alembic AshAuthentication allows disclosure of user password digests to readers of the audit store. The audit_log add-on builds each entry's extra_data in AshAuthentication.AddOn.AuditLog.Auditor.build_extra_data/4, which takes :actor from the action callback context verbatim. Any audited action invoked with actor: set to a user record therefore deposits that record, including its hashed_password attribute, into the audit entry. The same module already collapses the audited identity to an opaque string via AshAuthentication.user_to_subject/1 and filters params against the strategy's configured allow-list, so the actor is the only stored value that reaches the audit store unfiltered. Marking the attribute sensitive?: true does not help, because that redacts inspect/1 output rather than JSON encoding or raw-term storage. There is no attacker-controlled trigger and no network disclosure path: entries accumulate from ordinary authenticated activity, and an attacker's own requests deposit only their own digest. Exploitation requires independent read access to the audit store, such as database credentials, an audit role, a backup, or a log shipper, at which point the digests support offline password attack against every active account. Whether the material persists depends on the data layer, since raw-term stores keep it verbatim while a SQL store raises Protocol.UndefinedError and drops the entry unless the user resource derives Jason.Encoder. This issue affects ash_authentication: from 4.12.0 before 4.15.0 and from 5.0.0-rc.0 before 5.0.0-rc.2.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS