Cloaked plaintext leaks through a non-sensitive action argument in AshCloak
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 sourcePublished 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"
}