Skip to main content

Data::Intern::Shared CVE-2026-59145

| EUVDEUVD-2026-46366 CRITICAL
Out-of-bounds Read (CWE-125)
2026-07-21 CPANSec GHSA-wwq3-v3pc-8w9p
9.1
CVSS 3.1 · Vendor: CPANSec
Share

Severity by source

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

Attack is local via write access to the shared backing file (AV:L, PR:L), low complexity; primary impact is memory disclosure (C:H), possible crash on bad read (A:L), no integrity loss.

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

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

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

Lifecycle Timeline

5
Analysis Generated
Jul 22, 2026 - 21:07 vuln.today
CVSS changed
Jul 22, 2026 - 20:22 NVD
9.1 (CRITICAL)
Patch available
Jul 21, 2026 - 21:18 EUVD
CVE Published
Jul 21, 2026 - 19:04 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 21, 2026 - 19:04 cve.org
CRITICAL 9.1

DescriptionCVE.org

Data::Intern::Shared versions before 0.02 for Perl allow an out-of-bounds read via unvalidated slot, reverse and arena indices in si_idx_find.

The attach-time validator si_validate_header is thorough about the header and layout (magic, version, section offsets, total_size, count and arena_used) but does not validate the three arrays it then trusts. Every lookup in si_idx_find walks a triple indirection read straight from the mmap'd segment, arena[reverse[slots[i].id]], with no bound on slots[i].id against count, on the reverse[id] arena offset against arena_used, or on the arena record's length prefix.

A local peer that can write the backing file can leave the header valid while poisoning a slot id, a reverse offset or an arena length prefix, so an id_of, intern or string lookup dereferences the chain out of bounds; because string() returns a file-controlled length of bytes from the arena, adjacent process memory can be disclosed.

AnalysisAI

Out-of-bounds memory disclosure in Data::Intern::Shared before 0.02, a Perl shared-memory string interning module, lets a local peer who can write the shared backing file leak adjacent process memory. The attach-time validator (si_validate_header) checks header magic, version, offsets, total_size and counts but never bounds-checks the slot, reverse, and arena arrays it subsequently trusts, so a poisoned index in si_idx_find drives a triple-indirection read past valid bounds. No public exploit is identified at time of analysis and EPSS risk is low (0.17%), but a vendor patch (0.02) is available.

Technical ContextAI

The module implements a memory-mapped, shared string-interning table in C (intern.h) where lookups resolve a string through a triple indirection: arena[reverse[slots[i].id]]. The root cause is CWE-125 (Out-of-bounds Read): si_validate_header thoroughly validates the fixed header and layout (magic, version, section offsets, total_size, count, arena_used) but performs no validation of the three variable-length arrays it then relies on. Consequently si_idx_find never bounds slots[i].id against count, never checks the reverse[id] arena offset against arena_used, and never validates the arena record's length prefix. Because string() returns a file-controlled length of bytes from the arena, an attacker who controls those on-disk values dictates both the read location and the number of bytes returned. The affected package is identified by CPE cpe:2.3:a:egor:data::intern::shared covering all versions before 0.02.

RemediationAI

Vendor-released patch: upgrade Data::Intern::Shared to 0.02 or later from CPAN, which adds validation of the slot, reverse, and arena arrays that 0.01 trusted (see the 0.01-to-0.02 intern.h diff and changes file on MetaCPAN). Until upgrading, the practical compensating control is to protect the shared backing file: ensure only the owning process and trusted principals have write permission to the mmap'd segment (restrictive filesystem permissions/ownership and, where possible, a private or per-user directory), since the entire attack depends on a local peer writing poisoned indices into that file. Avoid placing the backing file in world- or group-writable locations such as shared temp directories, and verify no untrusted local account can open it for writing; the trade-off is purely operational tightening with no functional loss. Do not rely on the header being valid as a defense, because the header can be left valid while the arrays are poisoned.

More in Data

View all
CVE-2021-29662 HIGH POC
7.5 Mar 31

The Data::Validate::IP module through 0.29 for Perl does not properly consider extraneous zero characters at the beginni

CVE-2026-59144 CRITICAL
9.8 Jul 21

Stack buffer overflow in the Perl module Data::RingBuffer::Shared before 0.04 lets a local peer with write access to the

CVE-2026-59147 CRITICAL
9.8 Jul 21

Out-of-bounds read and write in the Perl module Data::DisjointSet::Shared before version 0.02 lets a local actor who can

CVE-2026-59146 HIGH
7.8 Jul 21

Out-of-bounds read and write in the Perl module Data::SpatialHash::Shared before 0.02 lets a local peer with write acces

CVE-2026-18536 HIGH
7.5 Aug 01

Entropy source compromise in Data::Entropy (Perl) before version 0.010 allows any on-path network attacker to fully cont

CVE-2026-59143 MEDIUM
6.3 Jul 21

Out-of-bounds read in Data::RoaringBitmap::Shared before version 0.02 for Perl allows a local peer with write access to

CVE-2026-64613 MEDIUM
6.2 Jul 21

World-readable mmap backing files and absent O_NOFOLLOW protection in Data::Buffer::Shared for Perl (versions before 0.0

CVE-2026-65065 MEDIUM
5.5 Jul 21

Information disclosure in Data::RoaringBitmap::Shared Perl module before 0.02 allows local attackers to read sensitive I

CVE-2026-65069 MEDIUM
4.0 Jul 21

Insecure mmap backing-file creation in Data::DisjointSet::Shared (Perl/CPAN) before 0.02 exposes inter-process IPC paylo

CVE-2026-64614 LOW
3.8 Jul 21

Information disclosure in the Perl Data::Deque::Shared module before version 0.06 exposes inter-process communication qu

CVE-2026-65068 LOW
3.8 Jul 21

World-readable IPC segment exposure in Data::SpatialHash::Shared (Perl) before version 0.02 allows any local user on a m

CVE-2026-65067 LOW
3.8 Jul 21

Insecure file creation in Data::Intern::Shared for Perl (all versions before 0.02) exposes shared memory IPC payloads to

Share

CVE-2026-59145 vulnerability details – vuln.today

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