Skip to main content

Perl EUVDEUVD-2026-54935

| CVE-2026-15534 MEDIUM
Integer Overflow or Wraparound (CWE-190)
2026-08-09 CPANSec GHSA-2cxw-qmfc-3vx3
5.7
CVSS 3.1 · Vendor: CPANSec
Share

Severity by source

Vendor (CPANSec) PRIMARY
5.7 MEDIUM
AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H
vuln.today AI
5.7 MEDIUM

AV:L and AC:H reflect highly specific local input control requirements; A:H for crash, I:L for heap corruption potential, C:N as no data exposure applies.

3.1 AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H
4.0 AV:L/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N
Red Hat
5.7 MEDIUM
qualitative

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

Attack Vector
Local
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
High

Lifecycle Timeline

5
Source Code Evidence Fetched
Aug 12, 2026 - 20:59 vuln.today
Analysis Generated
Aug 12, 2026 - 20:59 vuln.today
CVSS changed
Aug 12, 2026 - 18:22 NVD
5.7 (MEDIUM)
CVE Published
Aug 09, 2026 - 17:49 cve.org
MEDIUM 5.7
CVE Published
Aug 09, 2026 - 17:49 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

Perl versions through 5.45.1 have out-of-bounds heap reads and writes during regular expression matching via an undersized superlinear cache in S_regmatch.

The regex engine's superlinear cache holds one bit per subject position for each participating WHILEM node, so the bit count is the subject length plus one times the number of nodes. Nothing checks that product for positive overflow of the signed 32-bit count: a 286331153 byte subject matched against a pattern with 15 participating nodes stores the count as 14, leaving a two byte cache. The cache is then indexed from the real match position and node number, so reads go past the end of the allocation, and on failure CACHEsayNO sets a bit past it.

A caller that matches an attacker controlled subject of this size against a pattern of this shape can crash the process or corrupt heap memory.

AnalysisAI

Heap out-of-bounds reads and writes in Perl's regular expression engine through version 5.45.1 arise from a signed 32-bit integer overflow when computing the superlinear cache size in S_regmatch. When a subject string of approximately 286,331,153 bytes is matched against a pattern containing 15 or more WHILEM-participating nodes, the bit-count product overflows to 14, producing a two-byte cache allocation that is then indexed far beyond its bounds. A caller passing attacker-controlled input of this size to such a pattern can crash the Perl process or corrupt heap memory; no public exploit has been identified at time of analysis, and the vulnerability is not listed in CISA KEV.

Technical ContextAI

The vulnerability is rooted in regexec.c within Perl's NFA-based backtracking regex engine, specifically the S_regmatch function's superlinear cache. This cache stores one bit per subject position per WHILEM node to prevent exponential backtracking complexity; the total bit count is (subject_length + 1) × node_count. This product is stored as a signed 32-bit integer with no overflow check: at approximately 286,331,153 bytes subject length times 15 nodes, the result wraps around to 14 (CWE-190 Integer Overflow), causing a two-byte heap allocation. Cache reads and writes are then indexed using the actual match position and node number, reading and writing well past the allocation. The patch commits to regexec.c correct the poscache_iter counter management - replacing post-decrement comparisons against zero and negative with pre-checked equality tests - to prevent both underflow and the upstream miscalculation. The CPE cpe:2.3:a:leont:perl:*:*:*:*:*:*:*:* covers all Perl releases through 5.45.1; note that the 'leont' vendor string in this CPE is atypical for the main Perl interpreter and may reflect a CPE data quality issue rather than a specific CPAN distribution.

RemediationAI

Two upstream fix commits are available on the perl5 GitHub repository: https://github.com/Perl/perl5/commit/568e6fd238867bb9e99fa3f47cba3169009239e0.patch and https://github.com/Perl/perl5/commit/54cf3d44cbbedd17d774e9a37921963e8fd5d0cb.patch, both modifying the poscache_iter counter logic in regexec.c. A specific tagged release version incorporating these fixes has not been independently confirmed from available references; administrators should monitor Perl's official release channels and CPAN for a patched stable release. As compensating controls where immediate patching is not feasible, applications should enforce a hard maximum on input string length before passing to regex matching - strings approaching or exceeding 100MB should be rejected outright, as this directly prevents overflow of the 32-bit cache size. Developers should additionally audit application code for regex patterns with deeply nested quantifiers (patterns like (a+)+ or equivalent WHILEM-heavy constructs) and avoid applying such patterns to unbounded user input. These input-length restrictions carry minimal functional impact for legitimate use cases while eliminating the overflow precondition.

More in Perl

View all
CVE-2012-6329 HIGH POC
7.5 Jan 04

The _compile function in Maketext.pm in the Locale::Maketext implementation in Perl before 5.17.7 does not properly hand

CVE-2017-12814 CRITICAL POC
9.8 Sep 28

Stack-based buffer overflow in the CPerlHost::Add method in win32/perlhost.h in Perl before 5.24.3-RC1 and 5.26.x before

CVE-2015-8608 CRITICAL POC
9.8 Feb 07

The VDir::MapPathA and VDir::MapPathW functions in Perl 5.22 allow remote attackers to cause a denial of service (out-of

CVE-2018-18314 CRITICAL POC
9.8 Dec 07

Perl before 5.26.3 has a buffer overflow via a crafted regular expression that triggers invalid write operations. Rated

CVE-2018-18312 CRITICAL POC
9.8 Dec 05

Perl before 5.26.3 and 5.28.0 before 5.28.1 has a buffer overflow via a crafted regular expression that triggers invalid

CVE-2018-18313 CRITICAL POC
9.1 Dec 07

Perl before 5.26.3 has a buffer over-read via a crafted regular expression that triggers disclosure of sensitive informa

CVE-2016-2381 HIGH
7.5 Apr 08

Perl might allow context-dependent attackers to bypass the taint protection mechanism in a child process via duplicate e

CVE-2023-31484 HIGH POC
8.1 Apr 29

CPAN.pm before 2.35 does not verify TLS certificates when downloading distributions over HTTPS. Rated high severity (CVS

CVE-2016-6185 HIGH POC
7.8 Aug 02

The XSLoader::load method in XSLoader in Perl does not properly locate .so files when called in a string eval, which mig

CVE-2018-12015 HIGH POC
7.5 Jun 07

In Perl through 5.26.2, the Archive::Tar module allows remote attackers to bypass a directory-traversal protection mecha

CVE-2015-8853 HIGH
7.5 May 25

The (1) S_reghop3, (2) S_reghop4, and (3) S_reghopmaybe3 functions in regexec.c in Perl before 5.24.0 allow context-depe

CVE-2017-12883 CRITICAL
9.1 Sep 19

Buffer overflow in the S_grok_bslash_N function in regcomp.c in Perl 5 before 5.24.3-RC1 and 5.26.x before 5.26.1-RC1 al

Vendor StatusVendor

Share

EUVD-2026-54935 vulnerability details – vuln.today

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