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.
{
"cna_assigner": "CPANSec",
"cwe_ids": [
"CWE-126",
"CWE-191"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/8xxx/CVE-2026-8463.json"
}{
"extracted_events": [
{
"cpe": "cpe:2.3:a:leont:crypt\\:\\:argon2:*:*:*:*:*:perl:*:*",
"range": [
{
"introduced": "0.017"
},
{
"fixed": "0.031"
}
],
"source": "CPE_RANGE"
},
{
"range": [
{
"fixed": "92eac03ce63d541e0ead7ea5a89b9b67ce0c0e64"
}
],
"source": "REFERENCES_COMMIT"
}
]
}