Skip to main content

Data::RingBuffer::Shared CVE-2026-59144

| EUVDEUVD-2026-46365 CRITICAL
Stack-based Buffer Overflow (CWE-121)
2026-07-21 CPANSec GHSA-jxx5-5g59-8f3j
9.8
CVSS 3.1 · Vendor: CPANSec
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain local write access to backing file
  2. Delivery
    Forge header with oversized elem_size
  3. Exploit
    Pass incomplete ring_validate_header check
  4. Execution
    Victim calls ring_read_seq memcpy
  5. Persist
    Overflow 8-byte stack scalar
  6. Impact
    Corrupt 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Data::RingBuffer::Shared 0 <0.04

Affected Packages

euvd data_ringbuffer_shared fix: 0.04

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

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

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.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/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
High
Availability
High

Lifecycle Timeline

4
CVSS changed
Jul 22, 2026 - 20:22 NVD
9.8 (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.8

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 91% exploitable
Prevalence
Rare
obscure single-author CPAN module, negligible enterprise footprint
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

49
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +49
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

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-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-59145 CRITICAL
9.1 Jul 21

Out-of-bounds memory disclosure in Data::Intern::Shared before 0.02, a Perl shared-memory string interning module, lets

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

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