Description
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.
Published: 2026-07-21
Score: 9.1 Critical
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises from an out‑of‑bounds read in the si_idx_find routine of Data::Intern::Shared. Because the function uses slot identifiers, reverse offsets, and arena indices without validating them against the record counters, an attacker can supply crafted values that cause the routine to dereference memory beyond the end of the mapped segment. When the string() accessor reads the length‑prefixed arena record, it copies a file‑controlled length of bytes into the caller’s buffer, potentially exposing arbitrary adjacent memory. This flaw falls under information disclosure and is classified as CWE-125.

Affected Systems

Affects Perl modules distributed by EGOR under the Data::Intern::Shared package. All releases prior to version 0.02 are vulnerable. Specifically, any installation that includes Data::Intern::Shared 0.01 or earlier and uses the shared backing file mechanism in a Perl environment is impacted. No other vendors or product lines are affected according to the CNA data.

Risk and Exploitability

The flaw carries a CVSS v3.1 score of 9.1, indicating critical impact, but the EPSS score is under 1%, signifying low historical exploitation probability. The vulnerability is not listed in CISA’s KEV catalog. Exploitation requires a process that can write to the module’s backing file; an attacker with local write access can corrupt the slot ID, reverse offset or arena length prefix while keeping the header valid. This local attack vector could read sensitive data from adjacent memory, including credentials or other confidential information. An exploit is feasible in environments where the backing file is stored in a world‑writable location or where the attacker can impersonate the owning user.

Generated by OpenCVE AI on August 4, 2026 at 05:31 UTC.

Remediation

Vendor Solution

Upgrade to Data::Intern::Shared 0.02 or later, which bounds the slot id, the reverse offset and the record length before each dereference and caps the hash-slot probe.


Vendor Workaround

For deployments that cannot upgrade to 0.02, place the backing file in a directory writable only by the owning user, so a local peer cannot tamper with the slot, reverse and arena contents the lookup path reads.


OpenCVE Recommended Actions

  • Upgrade Data::Intern::Shared to version 0.02 or later, which bounds the indexes before each dereference and caps the hash‑slot probe.
  • If an upgrade is not available, configure the backing file directory so that only the owning user has write permissions, preventing other local processes from modifying slot, reverse and arena contents.
  • Regularly verify file ownership and permission settings, and consider using filesystem integrity monitoring to detect tampering with the backing file.

Generated by OpenCVE AI on August 4, 2026 at 05:31 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 23 Jul 2026 21:45:00 +0000

Type Values Removed Values Added
First Time appeared Egor
Egor data::intern::shared
Vendors & Products Egor
Egor data::intern::shared

Wed, 22 Jul 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 9.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H'}

ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 21 Jul 2026 19:45:00 +0000

Type Values Removed Values Added
Description 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.
Title 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
Weaknesses CWE-125
References

Subscriptions

Egor Data::intern::shared
cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-07-22T19:35:08.720Z

Reserved: 2026-07-02T16:24:17.913Z

Link: CVE-2026-59145

cve-icon Vulnrichment

Updated: 2026-07-22T19:34:21.314Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-04T05:45:03Z

Weaknesses