Crypt::Age versions before 0.004 for Perl allow CPU exhaustion via an unbounded number of recipient stanzas, each costing an X25519 scalar multiplication in unwrap_file_key. The header parser accepts any number of recipient stanzas, and unwrap_file_key tries every identity against every X25519 stanza. Each attempt runs a scalar multiplication, an HKDF and a ChaCha20-Poly1305 open. The header MAC cannot be checked first, because its key comes from the file key, which only a successful unwrap produces. Each stanza is 98 bytes of attacker-chosen header and buys one scalar multiplication per identity held, and the file is rejected only after every one of them has run. A caller reaches this through decrypt, decrypt_file or decrypt_filehandle whenever it decrypts a file it did not write.
Fix
Nothing published yet: no patch, vendor advisory or mitigation reference on NVD, no vendor advisory in the News for this CVE, not in CISA's KEV, no fixed package version. BaselineWatch does not guess at one.
Change history 5
- StatusReceived → Awaiting AnalysisNVD modified 2026-10-22 17:21
- References+1 references (now 2)NVD modified 2026-10-21 01:17
- StatusPublished → ReceivedNVD modified 2026-10-21 01:17
- StatusReceived → PublishedNVD modified 2026-10-20 21:29
- First seenunscoredNVD modified 2026-10-20 22:20
Affected (CPE criteria) 0
NVD has not attached CPE configurations yet.