Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain write access to shared bitmap file
-
DeliveryCraft valid header with poisoned bucket (container_off/cardinality)
-
ExploitWait for victim process membership query
-
Executionrb_contains_locked computes wild pointer
-
ImpactRead 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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::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
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Local file write access is the attack primitive (AV:L, PR:L); no integrity impact from an OOB read; availability loss from potential crash.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.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
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.
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
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-46364
GHSA-96m7-w48r-fx74
NVD
CVE.org
EPSS
VulDB
Exploit-DB