Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain local write access to backing file
-
DeliveryPoison slot/reverse/arena index, keep header valid
-
ExploitVictim calls id_of/intern/string lookup
-
Executionsi_idx_find dereferences chain out of bounds
-
Persiststring() returns file-controlled bytes
-
ImpactDisclose adjacent process memory
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK
1 technique across 1 tactic: Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires local write access to the module's shared memory-mapped backing file: the attacker must be a local peer able to modify that segment while leaving si_validate_header's header checks satisfied (valid magic, version, offsets, total_size, count, arena_used) and poison one of the unvalidated values - a slot id, a reverse arena offset, or an arena record length prefix. Exploitation is also gated on a victim process subsequently calling id_of, intern, or a string lookup on the tampered table, so a live consumer of the shared segment must perform a lookup after the file is poisoned. Limiting factors: no network reachability (the published AV:N is contradicted by the 'local peer that can write the backing file' requirement), the attacker needs pre-existing write permission to the file, and impact is confined to reads of adjacent memory rather than code execution or integrity loss. |
| Impact | The signals conflict sharply and this is the most important caveat for triage. The published CVSS 9.1 vector is AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H, implying remote unauthenticated network exploitation, but the description explicitly requires 'a local peer that can write the backing file' - a local, authenticated-write prerequisite that is inconsistent with AV:N/PR:N. Treat the network/unauthenticated framing as unreliable; the realistic vector is local with write access to the shared segment. Supporting a lower real-world priority: EPSS is only 0.17% (7th percentile), the vulnerability is not in CISA KEV, and no public exploit code is identified. Technical impact is genuine (adjacent process memory disclosure, CWE-125) but gated behind the ability to tamper with the mmap'd file, which typically means the attacker already shares a trust boundary with the victim process. Net assessment: a legitimate confidentiality bug worth patching, but not an internet-facing, mass-exploitable emergency despite the 9.1 headline score. |
| Exploit ScenarioDerived | A low-privileged local user who shares write access to the interning module's backing file leaves the header structurally valid but overwrites a slot id, a reverse offset, or an arena length prefix with attacker-chosen values. When a higher-privileged process using Data::Intern::Shared performs an id_of, intern, or string lookup, si_idx_find follows the poisoned arena[reverse[slots[i].id]] chain out of bounds and string() returns a file-controlled byte length from adjacent process memory, disclosing secrets to the attacker. No public exploit is identified at time of analysis, and low CVSS attack complexity means the write-and-trigger sequence is straightforward once file write access is obtained. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 22, 2026
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.
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.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
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.
Know when Data gets its next vulnerability
- 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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
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.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
4DescriptionCVE.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.
Executive ViewAI
Organizations running Perl applications with Data::Intern::Shared module versions before 0.02 face a critical data exposure risk; the vulnerability allows local attackers with file-write privileges to leak sensitive information from other processes in shared environments. This poses particular concern in containerized and multi-tenant deployments. Immediate patching to version 0.02 is required to eliminate this exposure.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
The Data::Validate::IP module through 0.29 for Perl does not properly consider extraneous zero characters at the beginni
Stack buffer overflow in the Perl module Data::RingBuffer::Shared before 0.04 lets a local peer with write access to the
Out-of-bounds read and write in the Perl module Data::DisjointSet::Shared before version 0.02 lets a local actor who can
Out-of-bounds read and write in the Perl module Data::SpatialHash::Shared before 0.02 lets a local peer with write acces
Entropy source compromise in Data::Entropy (Perl) before version 0.010 allows any on-path network attacker to fully cont
Out-of-bounds read in Data::RoaringBitmap::Shared before version 0.02 for Perl allows a local peer with write access to
World-readable mmap backing files and absent O_NOFOLLOW protection in Data::Buffer::Shared for Perl (versions before 0.0
Information disclosure in Data::RoaringBitmap::Shared Perl module before 0.02 allows local attackers to read sensitive I
Insecure mmap backing-file creation in Data::DisjointSet::Shared (Perl/CPAN) before 0.02 exposes inter-process IPC paylo
Information disclosure in the Perl Data::Deque::Shared module before version 0.06 exposes inter-process communication qu
World-readable IPC segment exposure in Data::SpatialHash::Shared (Perl) before version 0.02 allows any local user on a m
Insecure file creation in Data::Intern::Shared for Perl (all versions before 0.02) exposes shared memory IPC payloads to
EUVD-2026-46366
GHSA-wwq3-v3pc-8w9p
NVD
CVE.org
EPSS
Exploit-DB