CVE-2026-81638
Improper Handling of Alternate Encoding vulnerability in ash-project ash_double_entry allows an attacker to submit several distinct string spellings of the same identifier. AshDoubleEntry.ULID renders a 128-bit ULID as 26 Crockford base-32 characters, but the first character encodes only 3 bits, so canonical values are 0 to 7. decode/1 in lib/ulid.ex masks the first character to its low 3 bits and valid?/1 accepts all 32 characters in that position, so 0..., 8..., G... and R... decode to the identical 16-byte value and resolve to the same row. When the type is exposed as a public ID over an HTTP or API boundary, an attacker-supplied ID can be spelled differently from the record it actually reads or writes, desynchronizing or bypassing string-level checks such as idempotency and deduplication keys, deny-lists, audit correlation, or signatures computed over the submitted ID. This issue affects ash_double_entry: from 0.1.0 before 1.0.19.
Scoring
- Severity
- LOW
- CVSS base score
- 2.1
- CVSS vector
- CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N
- EPSS probability
- 0.13%
- CWE
- CWE-173
- Published
- 2026-09-07
- Last modified
- 2026-09-08
Affected products
- ash-project ash_double_entry
- ash-project ash_double_entry
Weakness type
Related vulnerabilities
- CVE-2026-19611 — Wildfly-elytron: org.wildfly.security/wildfly-elytron-password-impl: wildfly-elytron: password keyspace reduction via nfkc fullwidth folding
- CVE-2026-10050 — Digest authentication lossy encoding
- CVE-2024-54158 — In JetBrains YouTrack before 2024.3.52635 potential spoofing attack was possible via lack of...
- CVE-2023-26303 — markdown-it-py crash on null assertions
- CVE-2023-26302 — markdown-it-py CLI crash on invalid UTF-8 characters