Skip to main content

Crypt::Age CVE-2026-85783

| EUVDEUVD-2026-106854 HIGH
Asymmetric Resource Consumption (Amplification) (CWE-405)
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Deliver crafted age file with many stanzas
  2. Exploit
    Victim invokes decrypt/decrypt_file/decrypt_filehandle
  3. Execution
    unwrap_file_key runs X25519 mult per stanza per identity
  4. Impact
    CPU exhaustion / service unavailability

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Asymmetric resource consumption control
Exploitation Conditions

Triggered specifically when the application decrypts an age file it did not create - i.e. any call to Crypt::Age decrypt, decrypt_file, or decrypt_filehandle on attacker-influenced input. The amplification requires that the caller hold one or more X25519 identities (cost scales as stanzas × identities) and that the attacker can supply an age header with an arbitrarily large count of 98-byte X25519 recipient stanzas; the header MAC cannot short-circuit this because its key is derived from the yet-unrecovered file key. LIMITING FACTORS: impact is confined to CPU/availability (no RCE, no data exposure); the victim must actively attempt decryption of the malicious file (automated or service-side decryption pipelines are the realistic high-risk target); and only Crypt::Age versions before 0.004 are affected - upgrading to 0.004+ removes the condition. Authentication requirements not confirmed from available data (no CVSS vector provided).

Impact

This is a denial-of-service (CPU exhaustion / asymmetric resource amplification, CWE-770 + CWE-405) in the Perl Crypt::Age module, not a code-execution or data-disclosure flaw. No CVSS vector, EPSS score, KEV listing, or public POC was provided in the input, so there are NO exploitation-probability or active-exploitation signals to weigh - exploitation status is therefore 'no public exploit identified at time of analysis.' Severity must be inferred entirely from the description. The real-world risk is moderate-to-low and is gated almost entirely by prevalence: Crypt::Age is an obscure CPAN distribution, so the exposed population is small. The technical issue is legitimate and clearly described - the header parser accepts an unbounded number of recipient stanzas and unwrap_file_key tries every held identity against every X25519 stanza (each attempt = one X25519 scalar multiplication + HKDF + ChaCha20-Poly1305 open), and the header MAC cannot be verified first because its key is derived from the file key that only a successful unwrap produces. That design makes the amplification genuine. However, impact is bounded to availability/CPU, there is no memory-unbounded allocation claimed, and the victim must actively decrypt an attacker-supplied file. MISSING DATA to flag explicitly: no official CVSS vector (NVD shows N/A), no EPSS, no KEV, no POC - all severity metrics below are this analyst's independent assessment, not vendor-confirmed.

Exploit ScenarioDerived

An attacker crafts an age-encrypted file containing a very large number (unbounded) of 98-byte X25519 recipient stanzas and delivers it to a victim or service that decrypts files it did not author via decrypt, decrypt_file, or decrypt_filehandle. Because every stanza forces a full X25519 scalar multiplication per held identity before the (unverifiable-first) header MAC can reject the file, decryption consumes CPU proportional to stanza_count × identities, exhausting the processing host. No public exploit code was identified, but the attack is trivial to construct from the description.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 20, 2026

CPU exhaustion in Perl Crypt::Age versions before 0.004 lets remote, unauthenticated attackers force repeated X25519 scalar multiplications by supplying age files with an unbounded number of recipient stanzas. Each 98-byte stanza costs one scalar multiplication, HKDF, and ChaCha20-Poly1305 open per configured identity during decrypt, decrypt_file, or decrypt_filehandle, and the header MAC cannot be checked until a successful unwrap. No public exploit code or CISA KEV entry is identified at time of analysis; impact is confined to availability (CVSS 3.1 AV:N/AC:L/PR:N/UI:N/A:H), with the highest realistic risk in automated or service-side decryption of untrusted age files.

RemediationAI

Upgrade to Crypt::Age 0.004 or later; vendor-released patch: 0.004, documented at https://metacpan.org/release/GETTY/Crypt-Age-0.004/changes and https://metacpan.org/dist/Crypt-Age. If immediate upgrade is not possible, avoid decrypting attacker-controlled age files with Crypt::Age, or enforce a strict maximum header size and recipient-stanza count before calling decrypt, decrypt_file, or decrypt_filehandle; this may reject legitimate files that use many recipients. Run decryption of untrusted files in a CPU- and time-limited worker or sandbox with request timeouts, accepting added latency and operational complexity, and do not expose automated service-side decryption of untrusted age files without such limits.

Affected ProductsAI

Crypt::Age (CPAN distribution Crypt-Age) versions before 0.004 are affected. The vendor fix is in Crypt-Age 0.004, and 0.005 also contains related header-parsing hygiene changes. The distribution is published at https://metacpan.org/dist/Crypt-Age and the VCS repository is at https://github.com/Getty/p5-crypt-age; no CPE strings were supplied in the available data. The upstream advisory is at https://seclists.org/oss-sec/2026/q4/271 and the release changes are at https://metacpan.org/release/GETTY/Crypt-Age-0.004/changes.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Crypt::Age is a Perl implementation of the age file encryption format, in which a file header carries recipient stanzas that wrap the file key. In the X25519 recipient scheme, unwrap_file_key tries every configured identity against every X25519 stanza; each attempt performs an X25519 scalar multiplication, an HKDF step, and a ChaCha20-Poly1305 authenticated decryption. The header MAC cannot be verified first because its key is derived from the file key, which is only recovered after a successful unwrap, so the parser must complete all attempts before rejecting the file. The root cause maps to CWE-770 (Allocation of Resources Without Limits or Throttling) and CWE-405 (Asymmetric Resource Consumption/Amplification): the attacker controls a cheap 98-byte header stanza that buys one expensive scalar multiplication per identity held by the victim, and cost scales as stanzas times identities. The assessed vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, so the flaw is remote and unauthenticated but limited to availability with no confidentiality or integrity impact.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

vuln.today AI 7.5 HIGH

Attacker-supplied file is typically received/processed remotely with no auth (AV:N/PR:N), low complexity to craft stanzas (AC:L); impact is CPU-exhaustion availability only (A:H), no C/I; UI:N assumes automated/service-side decryption.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Estimated by vuln.today — no official severity rating has been published for this CVE yet.

Description PRE-NVD

Disclosed via oss-security. NVD scoring and full description are pending.

Executive ViewAI

Why It Matters

Perl Crypt::Age releases before 0.004 can be driven to consume excessive CPU when decrypting attacker-supplied age files, creating a denial-of-service risk for automated or service-side decryption workflows. The issue is remotely triggerable without authentication, but no public exploit identified at time of analysis and no CISA KEV entry is present, and no vendor-released patch identified at time of analysis. Leadership should care because any externally facing or batch service that decrypts untrusted age files could experience slowdowns or outages until input controls and process isolation are in place.

Business Impact: Medium
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: pre-parse age headers and reject files that exceed a strict recipient-stanza or header-size limit before calling Crypt::Age; enforce per-request CPU/time quotas, process isolation, and rate limiting for decrypt, decrypt_file, and decrypt_filehandle; avoid automated or service-side decryption of untrusted age files until a fix is available; and monitor CPU saturation, queue depth, and timeout failures for affected services.

Threat Intelligence Overview

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Rare
obscure Perl CPAN crypto module, tiny real-world deployment footprint
Data Quality
1 sources
Confidence: Low

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy