Description
CryptX versions before 0.088_001 for Perl compare AEAD authentication tags in non-constant time in the streaming decrypt_done path.

The decrypt_done($tag) form compares it against the computed tag with memNE (memcmp() != 0), which short-circuits on the first differing byte, so its run time depends on the number of matching leading bytes. This affects all five AEAD modes: GCM, CCM, ChaCha20Poly1305, EAX and OCB. The one-shot *_decrypt_verify helpers are unaffected; they verify the tag inside libtomcrypt with a constant-time comparison.

The timing difference is a tag-verification oracle. An attacker who can submit many candidate tags for the same nonce, ciphertext and associated data while measuring the timing precisely enough may recover the expected tag byte by byte and forge a message that verifies.
Published: 2026-06-29
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

CryptX for Perl implements tag verification in the streaming decrypt_done path by comparing the supplied tag against the computed tag using a non‑constant‑time memNE operation that stops at the first differing byte. This early‑exit behavior creates a timing side‑channel that an attacker can exploit to perform a tag‑verification oracle. By repeatedly submitting candidate tags for the same nonce, ciphertext and associated data while precisely measuring elapsed time, an attacker can recover the expected tag one byte at a time and forge authenticated messages that will be accepted by the library.

Affected Systems

All versions of CryptX for Perl prior to 0.088_001 are affected. The flaw spans the five AEAD modes supported—GCM, CCM, ChaCha20Poly1305, EAX, and OCB—while the one‑shot *_decrypt_verify helpers remain safe because they perform constant‑time comparison internally. The affected vendor is MIK and the product is CryptX, obtainable through CPAN.

Risk and Exploitability

A CVSS score is not provided in the public data, and the EPSS score is reported as unavailable, but the presence of a measurable timing oracle suggests a high potential for successful exploitation in environments where the attacker can observe decryption latency. The flaw is not listed in the CISA KEV catalog. If the application exposes the decrypt_done routine to untrusted clients—such as network services or plugins—it can be targeted remotely. Even in a local context, any privileged code that can supply tags to the library may forge messages, leading to privilege escalation or data tampering.

Generated by OpenCVE AI on June 29, 2026 at 22:22 UTC.

Remediation

Vendor Solution

Upgrade to CryptX 0.088_001 or later.


OpenCVE Recommended Actions

  • Upgrade CryptX to version 0.088_001 or later to eliminate the timing side‑channel.
  • If an upgrade is not currently feasible, replace uses of decrypt_done with the constant‑time one‑shot *_decrypt_verify helpers, which perform secure tag verification.
  • Apply rate limiting or other countermeasures to restrict the frequency of decrypt_done calls for the same nonce so that timing can be obscured and the oracle attack is mitigated.

Generated by OpenCVE AI on June 29, 2026 at 22:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 29 Jun 2026 21:00:00 +0000

Type Values Removed Values Added
Description CryptX versions before 0.088_001 for Perl compare AEAD authentication tags in non-constant time in the streaming decrypt_done path. The decrypt_done($tag) form compares it against the computed tag with memNE (memcmp() != 0), which short-circuits on the first differing byte, so its run time depends on the number of matching leading bytes. This affects all five AEAD modes: GCM, CCM, ChaCha20Poly1305, EAX and OCB. The one-shot *_decrypt_verify helpers are unaffected; they verify the tag inside libtomcrypt with a constant-time comparison. The timing difference is a tag-verification oracle. An attacker who can submit many candidate tags for the same nonce, ciphertext and associated data while measuring the timing precisely enough may recover the expected tag byte by byte and forge a message that verifies.
Title CryptX versions before 0.088_001 for Perl compare AEAD authentication tags in non-constant time in the streaming decrypt_done path
Weaknesses CWE-208
References

Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-06-29T22:24:14.433Z

Reserved: 2026-06-29T17:50:18.724Z

Link: CVE-2026-13758

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-06-29T22:30:05Z

Weaknesses
  • CWE-208

    Observable Timing Discrepancy