Description
Crypt::Argon2 versions from 0.017 before 0.031 for Perl perform a heap out-of-bounds read in argon2_verify on empty encoded input. The auto-detect form of argon2_verify passes encoded_len - 1 as the length argument to memchr without checking that encoded_len is non-zero. When the encoded string is empty, the size_t subtraction underflows to SIZE_MAX and memchr scans adjacent heap memory looking for a '$' separator byte. A caller that invokes argon2_verify against a stored hash that may legitimately be empty (for example a placeholder row or a NULL column materialised as an empty string) reads out-of-bounds heap memory, which can crash the process or leak the position of an adjacent '$' byte into subsequent parsing.
Affected products
leont: crypt\
References3
- github.com/Leont/crypt-argon2/commit/92eac03ce63d541e0ead7ea5a8… Patch
- metacpan.org/release/LEONT/Crypt-Argon2-0.031/changes Release Notes
- www.openwall.com/lists/oss-security/2026/05/13/4 Mailing ListThird Party Advisory
Metrics
- CVSS 3.1
-
5.3
MEDIUM
Score source: NVD
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - EPSS — exploit probability
- 0% percentile: 26 · as of 14 November 2026
- CWE
- CWE-126CWE-191
Could this be exploited in your environment?
A patch closes the known hole. A penetration test shows what an attacker can still reach — with proof.