Skip to content
Heist/ feed
Back to feed
Low

Cloaked plaintext leaks through a non-sensitive action argument in AshCloak

Type: advisorySources: OSV

Exposure of Sensitive Information to an Unauthorized Actor vulnerability in ash-project ash_cloak allows anyone with access to logs, error trackers, or crash reports, or anyone who can trigger a validation error, to recover the plaintext of a field the library encrypts. AshCloak.Transformers.SetUpEncryption removes each cloaked attribute from the action's accept list and adds an action argument that carries the plaintext into the encryption change. That argument is built with sensitive?: attr.sensitive?, inheriting the flag from the source attribute, so a cloaked attribute declared without sensitive? true produces a non-sensitive argument. It is the only place the cleartext value lives, and the one place Ash will not redact: it appears verbatim in inspect(changeset), Ash.Error.Invalid and validation error messages, telemetry, :sys dumps, and error-tracker payloads. The generated encrypted attribute and decrypt calculation are already hardcoded sensitive. This issue affects ash_cloak: from 0.1.0 before 0.4.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-81322
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 19:28 UTC · Revision 1

Source evidence

Cloaked plaintext leaks through a non-sensitive action argument in AshCloak

core-osv · Original source

Published 30 Aug 2026, 18:06 UTC

Exposure of Sensitive Information to an Unauthorized Actor vulnerability in ash-project ash_cloak allows anyone with access to logs, error trackers, or crash reports, or anyone who can trigger a validation error, to recover the plaintext of a field the library encrypts. AshCloak.Transformers.SetUpEncryption removes each cloaked attribute from the action's accept list and adds an action argument that carries the plaintext into the encryption change. That argument is built with sensitive?: attr.sensitive?, inheriting the flag from the source attribute, so a cloaked attribute declared without sensitive? true produces a non-sensitive argument. It is the only place the cleartext value lives, and the one place Ash will not redact: it appears verbatim in inspect(changeset), Ash.Error.Invalid and validation error messages, telemetry, :sys dumps, and error-tracker payloads. The generated encrypted attribute and decrypt calculation are already hardcoded sensitive. This issue affects ash_cloak: from 0.1.0 before 0.4.0.

osv:CVE-2026-81322
Complete source record
{
  "id": "0d9645ca5b417ef7c47b19d1295887414b1b3e68c941c9044eeb72e049d1a161",
  "url": "https://osv.dev/vulnerability/CVE-2026-81322",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Cloaked plaintext leaks through a non-sensitive action argument in AshCloak",
    "summary": "Exposure of Sensitive Information to an Unauthorized Actor vulnerability in ash-project ash_cloak allows anyone with access to logs, error trackers, or crash reports, or anyone who can trigger a validation error, to recover the plaintext of a field the library encrypts. AshCloak.Transformers.SetUpEncryption removes each cloaked attribute from the action's accept list and adds an action argument that carries the plaintext into the encryption change. That argument is built with sensitive?: attr.sensitive?, inheriting the flag from the source attribute, so a cloaked attribute declared without sensitive? true produces a non-sensitive argument. It is the only place the cleartext value lives, and the one place Ash will not redact: it appears verbatim in inspect(changeset), Ash.Error.Invalid and validation error messages, telemetry, :sys dumps, and error-tracker payloads. The generated encrypted attribute and decrypt calculation are already hardcoded sensitive. This issue affects ash_cloak: from 0.1.0 before 0.4.0.",
    "evidence": "osv:CVE-2026-81322",
    "products": [],
    "severity": "low",
    "structured": {
      "id": "CVE-2026-81322",
      "aliases": [
        "CVE-2026-81322",
        "EEF-CVE-2026-81322",
        "GHSA-qp4v-vvrg-8ggx"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/ash-project/ash_cloak",
              "type": "GIT",
              "events": [
                {
                  "introduced": "f1595a77fdfa9bfc672f84c2f77feb9e7bf895fc"
                },
                {
                  "fixed": "ef49cfc832329fc8bc70ec6542a4dfff5dafd076"
                },
                {
                  "introduced": "848aad4edcae5997784b7dd9f1dd20968ad7aaf3"
                },
                {
                  "fixed": "b20fd3056f0161ccd407e9a2e7bdde1aa069c147"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "f1595a77fdfa9bfc672f84c2f77feb9e7bf895fc"
                      },
                      {
                        "fixed": "ef49cfc832329fc8bc70ec6542a4dfff5dafd076"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0.1.0"
                      },
                      {
                        "fixed": "0.4.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  },
                  {
                    "range": [
                      {
                        "fixed": "ef49cfc832329fc8bc70ec6542a4dfff5dafd076"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.3.1",
            "v0.3.0",
            "v0.2.1",
            "v0.2.0",
            "v0.1.7",
            "v0.1.6",
            "v0.1.5",
            "v0.1.4",
            "v0.1.3",
            "v0.1.2",
            "v0.1.1",
            "v0.1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-81322.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:22.631706504Z",
      "provider": "osv",
      "references": [
        "https://cna.erlef.org/cves/CVE-2026-81322.html",
        "https://github.com",
        "https://osv.dev/vulnerability/EEF-CVE-2026-81322",
        "https://repo.hex.pm",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/81xxx/CVE-2026-81322.json",
        "https://github.com/ash-project/ash_cloak/security/advisories/GHSA-qp4v-vvrg-8ggx",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-81322",
        "https://github.com/ash-project/ash_cloak/commit/ef49cfc832329fc8bc70ec6542a4dfff5dafd076",
        "https://github.com/ash-project/ash_cloak"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-200"
        ],
        "cna_assigner": "EEF",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/81xxx/CVE-2026-81322.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-81322",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 489155,
  "published_at": "2026-08-30T18:06:33.478+00:00"
}