Skip to main content

Data::RoaringBitmap::Shared CVE-2026-59143

| EUVDEUVD-2026-46364 MEDIUM
Out-of-bounds Read (CWE-125)
2026-07-21 CPANSec GHSA-96m7-w48r-fx74
6.3
CVSS 3.1 · Vendor: CPANSec
View

Attack ChainAIDerived

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

  1. Access
    Obtain write access to shared bitmap file
  2. Delivery
    Craft valid header with poisoned bucket (container_off/cardinality)
  3. Exploit
    Wait for victim process membership query
  4. Execution
    rb_contains_locked computes wild pointer
  5. Impact
    Read adjacent process memory or crash

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 three concurrent conditions: (1) the attacker controls a local process with write permissions to the shared bitmap backing file used by the victim process - this is a same-host, same-user or same-group file write primitive, not a remote attack; (2) the victim application actively performs membership queries (rb_contains_locked calls) after the file is poisoned - the vulnerability is only triggered on query, not on attach; (3) Data::RoaringBitmap::Shared version 0.01 (pre-0.02) must be installed. What limits exploitation: the CVSS-assigned AV:N appears inconsistent with the description - the actual vector is local file access, which confines the attack to co-located processes. No network-facing exploitation path is described. The victim must also re-query the bitmap after the poisoning event, introducing a timing dependency. Remote unauthenticated exploitation is not supported by the available description or CPE data.

Impact

The assigned CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L = 6.3) contains a notable inconsistency: the description explicitly states the threat actor must be 'a local peer that can write the backing file,' which is an AV:L (local) primitive, not AV:N (network). The I:L integrity impact in the assigned vector is also unsupported - an out-of-bounds read does not confer write capability. This inflates the score relative to the actual attack surface. Correcting for local access and dropping the unsupported integrity dimension yields a materially lower real-world severity. EPSS at 0.17% (7th percentile) confirms low exploitation probability. There is no CISA KEV listing and no public proof-of-concept. The product is a niche Perl module with limited enterprise deployment. The realistic risk is LOW: exploitation requires co-location, write access to the shared file, and an active membership query, limiting the blast radius to multi-process Perl applications that specifically use shared roaring bitmaps.

Exploit ScenarioDerived

An attacker controls a process running as the same user (or in the same group) as the victim Perl application and writes a crafted roaring bitmap backing file with a structurally valid header but a poisoned bucket containing an out-of-range container_off. When the victim process calls a membership query on the shared bitmap, rb_contains_locked computes pool + crafted_offset * 8192, dereferences an out-of-bounds pointer, and scans up to crafted_cardinality entries - potentially reading heap contents such as adjacent data structures or crashing with a segmentation fault. No public proof-of-concept has been identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
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 23, 2026

Out-of-bounds read in Data::RoaringBitmap::Shared before version 0.02 for Perl allows a local peer with write access to the shared backing file to redirect memory reads to arbitrary locations. The module's attach-time header validator (rb_validate_header) checks structural metadata but skips bucket content validation, so rb_contains_locked blindly trusts file-stored container offsets and cardinalities. On the next membership query, the process dereferences a fully attacker-controlled pointer and iterates over an attacker-controlled count, exposing adjacent heap or stack memory and potentially crashing the querying process. No public exploit exists and EPSS sits at 0.17% (7th percentile), indicating low real-world exploitation activity.

RemediationAI

Upgrade Data::RoaringBitmap::Shared to version 0.02 or later via CPAN (cpan install Data::RoaringBitmap::Shared or cpanm Data::RoaringBitmap::Shared). The fix in 0.02 adds bucket-level validation of container_off and cardinality against the actual pool capacity and slot size, closing the gap left by rb_validate_header. The release diff is available at https://metacpan.org/release/EGOR/Data-RoaringBitmap-Shared-0.02/diff/EGOR/Data-RoaringBitmap-Shared-0.01#roaring.h. If an immediate upgrade is not feasible, restrict filesystem permissions on the bitmap backing file so that only the owning process or a tightly controlled group can write to it - this prevents the file-poisoning prerequisite entirely. As a secondary control, audit any inter-process trust boundaries where untrusted peers share the backing file path.

Affected VersionsENISA

Data::RoaringBitmap::Shared 0 <0.02

Affected Packages

euvd data_roaringbitmap_shared fix: 0.02

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::RoaringBitmap::Shared (CPE: cpe:2.3:a:egor:data::roaringbitmap::shared) is a Perl module implementing the Roaring Bitmap compressed bitset data structure over a shared memory-mapped backing file, enabling multiple processes to query the same bitmap concurrently. The file format stores a header and a pool of fixed 8192-byte container slots. The attach-time validator rb_validate_header verifies the header scalars (region count, file size bounds) but stops short of validating the per-bucket container_off and cardinality fields embedded in the file body. The membership query function rb_contains_locked then computes a container pointer as pool + container_off * 8192 and iterates over cardinality - both values read directly from the untrusted file - without bounding them against the actual pool allocation or the 8192-byte slot limit. CWE-125 (Out-of-Bounds Read) accurately captures the root cause: missing validation of externally sourced array indices before pointer arithmetic and memory traversal.

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 6.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
vuln.today AI 4.4 MEDIUM

Local file write access is the attack primitive (AV:L, PR:L); no integrity impact from an OOB read; availability loss from potential crash.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
Low

Lifecycle Timeline

3
CVSS changed
Jul 23, 2026 - 13:23 NVD
6.3 (MEDIUM)
Patch available
Jul 21, 2026 - 21:18 EUVD
CVE Published
Jul 21, 2026 - 19:04 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

Data::RoaringBitmap::Shared versions before 0.02 for Perl allow an out-of-bounds read via an unvalidated container offset and cardinality in rb_contains_locked.

The attach-time validator rb_validate_header checks the header scalars and region layout against the file size, but does not validate the bucket contents it then trusts. rb_contains_locked forms a container pointer as pool + container_off * 8192 from a raw file-stored offset and then searches over a file-stored cardinality, neither bounded against the container pool capacity or the fixed 8192-byte slot size.

A local peer that can write the backing file can leave the header valid while poisoning a bucket, so the next membership query dereferences a file-controlled wild pointer and scans a file-controlled count, reading adjacent memory or crashing the process.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Rare
niche Perl module for shared roaring bitmaps, minimal enterprise footprint
Data Quality
5 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
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
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
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.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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-59144 CRITICAL
9.8 Jul 21

Stack buffer overflow in the Perl module Data::RingBuffer::Shared before 0.04 lets a local peer with write access to the

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