Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain local write access to backing file
-
DeliveryForge header with oversized elem_size
-
ExploitPass incomplete ring_validate_header check
-
ExecutionVictim calls ring_read_seq memcpy
-
PersistOverflow 8-byte stack scalar
-
ImpactCorrupt adjacent stack frames / hijack execution
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Stack buffer bounds checking
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the attacker to be a local peer with write access to the mmap'd backing file of the ring buffer, and a victim process that attaches to that segment and calls ring_read_seq (the read path) after the malicious header is planted. The specific trigger is a header where elem_size is set larger than the 8-byte destination scalar while capacity-overflow and total_size fields remain internally consistent, so the incomplete ring_validate_header still accepts it. Limiting factors: this is not remotely reachable despite the NVD AV:N vector - the attacker must already be able to write the shared file locally, so it is gated by filesystem permissions on the backing segment and by another process performing a read; it is not exploitable against a segment the attacker cannot write. |
| Impact | The signals conflict and must be reconciled. The published CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N, score 9.8) claims unauthenticated network exploitation, but the description explicitly requires 'a local peer that can write the backing file' - i.e. local write access to the shared mmap segment, which is not a network vector and not zero-privilege. This is a material discrepancy: the real attack vector is local (AV:L) with some privilege (PR:L), so the practical severity is high but not the drive-by 9.8 the NVD vector implies - verify with vendor. Supporting this lower-real-risk read, EPSS is only 0.19% (9th percentile), there is no KEV listing, and no POC is present in the references (only upstream diff/changelog links). Technical impact is total for a process that attaches to an attacker-writable segment (stack corruption → potential code execution), but exploitation is gated by the attacker already being a co-located peer with write access to the backing file, which sharply narrows the population of realistically exploitable deployments. |
| Exploit ScenarioDerived | An attacker who already holds a local foothold with write access to the shared ring buffer file (for example a lower-privileged co-tenant process on the same host) crafts a header that passes ring_validate_header's capacity and total_size checks but sets elem_size well above 8 bytes. When a victim process next calls ring_read_seq, the module memcpys the oversized, file-controlled data into an 8-byte stack scalar, smashing adjacent stack frames and potentially redirecting execution in the reading process. No public POC is identified at this time, and the low AC means the corruption triggers reliably once write access is obtained. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 22, 2026
Stack buffer overflow in the Perl module Data::RingBuffer::Shared before 0.04 lets a local peer with write access to the shared memory backing file corrupt adjacent stack frames. The attach-time header validator (ring_validate_header) checks capacity-overflow and total_size consistency but never bounds elem_size, so ring_read_seq memcpys a file-controlled length into a fixed 8-byte destination scalar. No public exploit identified at time of analysis; EPSS is low (0.19%, 9th percentile) and it is not on CISA KEV, but the memory-corruption primitive is unambiguous and a vendor patch (0.04) exists.
RemediationAI
Vendor-released patch: 0.04 - upgrade Data::RingBuffer::Shared to 0.04 or later (e.g. cpanm Data::RingBuffer::Shared@0.04), which adds an elem_size bound check in ring_validate_header; see https://metacpan.org/release/EGOR/Data-RingBuffer-Shared-0.04/changes . Where immediate upgrade is not possible, the effective compensating control is to remove untrusted write access to the mmap backing file: restrict filesystem permissions on the shared segment so only trusted peer processes (ideally same UID, mode 0600) can write it, and place the backing file on a non-world-writable path - the trade-off is that legitimate cross-user IPC via this ring buffer will break if it relied on broader permissions. Additionally, avoid attaching to ring segments sourced from lower-trust processes until patched. Confirm the fix by validating that reads reject headers whose elem_size exceeds the destination scalar size.
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 affected component is a Perl XS/C extension (ring.h) that implements a shared-memory ring buffer over an mmap'd backing segment, letting multiple processes exchange fixed-size elements. The root cause is CWE-121 (stack-based buffer overflow): ring_read_seq performs memcpy(out, ring_slot(h, seq), elem_size) where elem_size is read raw from the untrusted mmap'd header, while the destination 'out' is a fixed 8-byte stack scalar. The validator ring_validate_header enforces capacity-overflow and total_size consistency invariants but omits the critical check that elem_size <= destination size, so any elem_size greater than 8 writes past the buffer. The CPE cpe:2.3:a:egor:data::ringbuffer::shared identifies the single affected CPAN distribution (author EGOR), reported by CPANSec and tracked as EUVD-2026-46365.
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:H/A:H
Description requires a local peer with write access to the backing file, so AV:L and PR:L rather than the NVD's AV:N/PR:N; stack corruption yields high C/I/A in the reading process.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
4DescriptionCVE.org
Data::RingBuffer::Shared versions before 0.04 for Perl allow a stack buffer overflow via an unvalidated elem_size in ring_read_seq.
The attach-time validator ring_validate_header checks the capacity-overflow and total_size consistency of the header but never caps elem_size against the destination size. ring_read_seq does memcpy(out, ring_slot(h, seq), elem_size) with elem_size read raw from the mmap'd segment, copying into a fixed 8-byte destination scalar. An elem_size larger than 8 bytes writes past the destination.
A local peer that can write the backing file can leave the header valid while setting a large elem_size, so the next read copies a file-controlled length into the fixed 8-byte stack buffer, corrupting adjacent stack frames.
Executive ViewAI
Perl module Data::RingBuffer::Shared before version 0.04 contains a critical stack buffer overflow (CVE-2026-59144, CVSS 9.8) affecting applications that rely on this library for shared memory management. Although no active exploitation has been identified and the vulnerability requires local access with prior write permissions to the shared memory backing file, successful exploitation could enable memory corruption and arbitrary code execution in affected processes.
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.
A stack-based buffer overflow occurs when a program writes more data to a buffer located on the stack than it was allocated to hold.
The Data::Validate::IP module through 0.29 for Perl does not properly consider extraneous zero characters at the beginni
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
Insecure file creation in Data::Intern::Shared for Perl (all versions before 0.02) exposes shared memory IPC payloads to
EUVD-2026-46365
GHSA-jxx5-5g59-8f3j
NVD
CVE.org
EPSS
Exploit-DB