Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain local user account on multi-user host
-
DeliveryIdentify or predict Data::NDArray::Shared segment path in /tmp or /dev/shm
-
ExploitPlant symlink or pre-existing file at segment path before victim process starts
-
ExecutionVictim process opens path without O_EXCL or O_NOFOLLOW
-
PersistRead world-readable mmap backing file
-
ImpactExtract IPC payload contents
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V13 - Configuration Permission assignment review
|
| Exploitation Conditions | Exploitation requires a local user account on the same host as the process using Data::NDArray::Shared before 0.02 (CVSS PR:L, AV:L). The module must be actively creating shared memory segments, and those segments must be placed in a world-writable directory such as /tmp or /dev/shm - the default behavior. Two distinct attack paths exist with different prerequisites: (1) Passive read - no race required; the attacker simply reads the 0644 backing file at any point after it is created, requiring only that they know or can discover the segment path; (2) Pre-creation race or symlink plant - the attacker must create a file or symlink at the expected segment path before the victim process does, which requires write access to the containing directory (satisfied by /tmp or /dev/shm) and either predictable path naming or filesystem monitoring. Exploitation is entirely precluded on systems with only a single trusted local user, in containers with private /tmp namespaces (unshared mount namespaces), or where the backing file is placed in a directory with restricted permissions. The impact is limited to reading whatever data the application stores in the shared segment (CVSS C:L); there is no integrity or availability impact. |
| Impact | The CVSS 3.1 score of 3.3 (Low) with vector AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N correctly characterizes the constrained attack surface: exploitation is local-only (AV:L) and requires at minimum a standard user account (PR:L). The passive disclosure path - simply reading the world-readable backing file after it is created - requires no race and no special skill, making AC:L appropriate for that vector; the pre-plant and symlink attacks add timing requirements but do not raise the overall AC given the simpler passive path also exists. The EPSS score of 0.16% at the 6th percentile is consistent with the niche deployment footprint of this obscure CPAN module and the local-only attack surface. There is no CISA KEV listing and no known POC, reinforcing that this is not under active exploitation. Real-world risk is highest in shared-hosting, CI/CD pipeline workers, or HPC cluster environments where multiple untrusted Unix users coexist on the same host and the module is used to pass data of any sensitivity between cooperating processes. In single-user or containerized environments with proper namespace isolation, practical risk is negligible. |
| Exploit ScenarioDerived | A local attacker with a standard Unix account on a shared system identifies the predictable path that a target process will use for its Data::NDArray::Shared backing file in /tmp. Before the target process starts, the attacker plants a symlink at that path pointing to a file the attacker owns and can read; when the victim process opens the path without O_NOFOLLOW, it follows the symlink, and the attacker subsequently reads the mmap contents containing the shared IPC payload. Alternatively, the attacker simply waits for the backing file to be created and reads it directly, exploiting the world-readable 0644 permissions without any race condition. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 30, 2026
World-readable shared memory segments in Data::NDArray::Shared before 0.02 expose IPC payloads to any local user on the system. The module's ndarray.h creates mmap backing files in shared directories such as /tmp or /dev/shm with effective permissions 0644 (world-readable under umask 022) and omits both O_EXCL and O_NOFOLLOW from the open call, enabling passive eavesdropping on shared memory contents and a pre-creation race or symlink-redirect attack by any unprivileged local account. No public exploit has been identified and the EPSS score of 0.16% (6th percentile) indicates very low exploitation probability; risk is concentrated in multi-tenant or shared-hosting environments where untrusted local users coexist with processes passing sensitive data through this module.
RemediationAI
Upgrade to Data::NDArray::Shared version 0.02 or later via CPAN (cpan install Data::NDArray::Shared or cpanm Data::NDArray::Shared), which is the vendor-released fix confirmed by the published diff and changelog at https://metacpan.org/release/EGOR/Data-NDArray-Shared-0.02/changes. If immediate upgrade is not feasible, operators should redirect the module's backing-file directory to a private path owned exclusively by the running process user (mode 0700) rather than the default /tmp or /dev/shm; this prevents other local users from reading or pre-planting files, though it requires application-level configuration and limits sharing to processes running under the same UID. A secondary compensating control is to avoid passing highly sensitive credentials or cryptographic material through this shared segment, reducing the confidentiality impact of any residual exposure. No trade-off-free workaround exists short of upgrading, as the world-readable permission and missing flags are inherent to the pre-0.02 open call in ndarray.h.
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
Data::NDArray::Shared is a Perl CPAN module (CPE: cpe:2.3:a:egor:data::ndarray::shared) that enables inter-process sharing of N-dimensional arrays via memory-mapped files. The vulnerable code in ndarray.h calls open(path, O_RDWR|O_CREAT, 0666); the mode 0666 is reduced by the process umask (typically 022) to 0644, leaving the backing file world-readable. CWE-732 (Incorrect Permission Assignment for Critical Resource) is the root-cause class. The absence of O_EXCL means that if a file already exists at the path, the open silently proceeds against it rather than failing, enabling an attacker to pre-plant a file before the legitimate process creates its segment. The absence of O_NOFOLLOW means a symlink planted at the expected path is transparently followed, redirecting the segment to an attacker-controlled location. Because shared segments are by design placed in world-writable directories (/tmp, /dev/shm), local users have the write access needed to plant files or symlinks at arbitrary paths within those directories.
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:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
AV:L and PR:L because exploitation requires a local standard user account; C:L only as impact is limited to reading IPC payloads; I:N and A:N confirmed by description.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.org
Data::NDArray::Shared versions before 0.02 for Perl create a world-readable mmap backing file and open it without O_EXCL or O_NOFOLLOW.
The segment is created in ndarray.h with open(path, O_RDWR|O_CREAT, 0666). The mode is 0666, so under the default umask 022 the file is created mode 0644 (world-readable). O_NOFOLLOW is absent, so a symlink planted at the path is followed, and O_EXCL is absent, so the open silently uses a pre-planted file instead of failing.
A "Shared" segment naturally lives in a shared directory such as /tmp or /dev/shm, where any local user can read the IPC payloads stored in the world-readable segment, and a pre-planted file or symlink at the path lets a local attacker win a pre-creation race or redirect the open.
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
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 memory disclosure in Data::Intern::Shared before 0.02, a Perl shared-memory string interning module, lets
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
EUVD-2026-46372
GHSA-8xr7-6jgf-m2rq
NVD
CVE.org
EPSS
VulDB
Exploit-DB