Vulnerability advisory

CVE-2026-77970

Sensitive fields nested in embedded values are not redacted in AshPaperTrail versions

Published Updated OSV record ↗

Also known as EEF-CVE-2026-77970GHSA-v645-6jm6-cgpj

Severity
  • CVSS 4.0CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Affected versions

Repository

Affected commitsFixed by commit
GIT github.com/ash-project/ash_paper_trail ↗
ffe5e03b14d26b73bff17f3eca811591788aba9c to before 0cd4acfe7f48397673d8594fb5e2cd0f1bda6e400cd4acfe7f48397673d8594fb5e2cd0f1bda6e40
fd8c9a661b8ec97d592c53207c96b5547e0e811c to before e03925c19365697ceb099d2ceca9ee1f5ce8c8b8e03925c19365697ceb099d2ceca9ee1f5ce8c8b8
Also listed as affected (10)
  • v0.6.0
  • v0.5.7
  • v0.5.6
  • v0.5.5
  • v0.5.4
  • v0.5.3
  • v0.5.2
  • v0.5.1
  • v0.5.0
  • v0.3.0

Description

Cleartext Storage of Sensitive Information vulnerability in ash-project ash_paper_trail allows an attacker with read access to the generated version resource to recover sensitive values nested inside embedded resources, unions, or lists.

sensitive_attributes :redact and :ignore only act on the tracked resource's top-level attributes. maybe_redact_changes/3 and the stored-action-input path in AshPaperTrail.Resource.Changes.CreateNewVersion derive the sensitive set from the resource's own attributes and never descend into embedded, union, or list values, so a non-sensitive attribute or action argument that holds an embed with a sensitive? field (for example an accepted credentials embed carrying a token) is written to the version table in cleartext.

This issue affects ash_paper_trail: from 0.3.0 before 0.7.0.

References

  • Codex
  • Claude Code
  • VS Code
  • GitHub Copilot
  • Cursor
  • Cline
  • Windsurf
  • Google Anti-gravity
  • OpenCode
  • Pi
  • Gemini CLI
  • Hermes Agent
  • Zed
  • Junie
  • Qwen Code
  • Kiro
  • Kilo Code
  • Factory Droid

Set up GitHits for your agents

Run this command:

<> bash
npx githits@latest init

What happens next:

  1. Opens your browser to authorize GitHits
  2. Asks whether to set up GitHits at the user or project level
  3. Detects your supported AI coding tools
  4. Lets you choose which tools to configure
  5. Configures the selected tools