Vulnerability advisory

EEF-CVE-2026-82759

Reversible IP address pseudonymisation in AshAuthentication audit log hash mode

Published Updated OSV record ↗

Also known as CVE-2026-82759GHSA-cgqj-pcpq-xhfm

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

Affected versions

Repository

Affected commitsFixed by commit
GIT github.com/team-alembic/ash_authentication ↗
255cfc9c0e511b7e0de39f8b3d676ae994fae06c to before d8a9c4b6bde828fdc8346198d5e4f588b5937541d8a9c4b6bde828fdc8346198d5e4f588b5937541
Not specifiedc3a6d5fe0d4fd383ea81b0402db0a96638479478
Also listed as affected (26)
  • v4.14.2
  • v5.0.0-rc.13
  • v4.14.1
  • v5.0.0-rc.12
  • v5.0.0-rc.11
  • v5.0.0-rc.10
  • v4.14.0
  • v4.13.7
  • 5.0.0-rc.9
  • 5.0.0-rc.8
  • v5.0.0-rc.7
  • v5.0.0-rc.6
  • v5.0.0-rc.5
  • v5.0.0-rc.4
  • v5.0.0-rc.3
  • v5.0.0-rc.2
  • v5.0.0-rc.1
  • v5.0.0-rc.0
  • v4.13.6
  • v4.13.5
  • v4.13.4
  • v4.13.3
  • v4.13.2
  • v4.13.1
  • v4.13.0
  • v4.12.0

Description

Summary

Use of a One-Way Hash with a Predictable Salt vulnerability in team-alembic AshAuthentication allows readers of the audit store to recover the client IP addresses that the audit log add-on's :hash privacy mode is meant to pseudonymise.

AshAuthentication.AddOn.AuditLog.IpPrivacy.hash_ip/1 computes a single unkeyed :crypto.hash(:sha256, salt <> ip) and truncates the result to 16 hexadecimal characters. The salt is read from the :audit_log_ip_salt or :secret application config keys, and falls back to the constant "default-salt-change-in-production" published in the library source when neither is set, with nothing warning that the default is in use. The IPv4 space is only 2^32 values and SHA-256 is fast, so the whole hash table is precomputable and every stored value maps back to its source address. Truncating to 16 characters does not help, and even a configured salt leaves the hash cheap enough to enumerate once it leaks.

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.14.

Configurations

Only applications that enable the audit_log add-on and set its ip_privacy mode to :hash store the affected value. Other modes (:none, :truncate, :exclude) do not reach hash_ip/1.

The complete break additionally requires the default salt, that is neither :audit_log_ip_salt nor :secret configured under the :ash_authentication application. This is the out-of-the-box state: no warning or error is raised when the hardcoded salt is in use.

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