Skip to main content

Data::Graph::Shared CVE-2026-64615

| EUVDEUVD-2026-46371 LOW
Incorrect Permission Assignment for Critical Resource (CWE-732)
2026-07-21 CPANSec GHSA-w2x9-vqwg-9g25
3.3
CVSS 3.1 · Vendor: CPANSec
View

Attack ChainAIDerived

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

  1. Access
    Gain local user account
  2. Exploit
    Identify mmap backing file path in /tmp or /dev/shm
  3. Execution
    Read world-readable 0644 segment file
  4. Impact
    Extract IPC payload data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V13 - Configuration Permission assignment review
Exploitation Conditions

Requires local, authenticated (low-privilege) access to the host running Data::Graph::Shared - the CVSS vector AV:L/PR:L confirms this. The mmap backing file must be created in a directory writable by other local users, such as /tmp or /dev/shm (the natural location for shared IPC segments). The simpler read-based attack requires only that the world-readable 0644 file exists and the attacker can read it - no race condition required. The O_EXCL/symlink attack additionally requires that the attacker can write to the target directory before the victim process creates the file. Exploitation is limited to the local system - no network vector exists. The sensitive data disclosed is bounded to what the application stores in shared graph structures, which may be non-sensitive coordination data.

Impact

The CVSS 3.1 base score of 3.3 (Low) is well-calibrated for this issue: AV:L requires local system access, PR:L requires a standard (non-root) user account, and C:L reflects partial IPC data disclosure rather than full system compromise. The EPSS score of 0.16% at the 6th percentile confirms this is a theoretical concern with negligible observed exploitation interest in the wild. There is no CISA KEV listing and no known public exploit code. The two attack surfaces are meaningfully distinct in difficulty: passively reading the world-readable 0644 file requires no timing or race condition (AC:L), whereas the O_EXCL/O_NOFOLLOW symlink attack involves a pre-creation race that depends on filesystem layout and process timing. The simpler read-based attack drives the AC:L assessment. Real-world impact is bounded by the sensitivity of data placed in the shared graph structures - if only non-sensitive inter-process coordination data is stored, practical harm is minimal. This is a genuine low-severity fix to adopt at the next patching cycle but not an emergency.

Exploit ScenarioDerived

A local user on a multi-tenant Linux system where Data::Graph::Shared is in use monitors /tmp or /dev/shm for the mmap backing file path used by a target process - or predicts it - and either reads the 0644 file directly to extract IPC payload data, or pre-plants a symlink before the target process starts. Because O_EXCL is absent, the target process silently opens the attacker-controlled path, and the attacker can read or observe the contents of the shared graph segment. No public exploit code is known.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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

Insecure file creation in the Perl CPAN module Data::Graph::Shared before version 0.04 exposes inter-process communication (IPC) payloads to any local user on the system. The mmap backing file used for shared memory segments is created with permissions 0666 (effectively 0644 after umask), making stored IPC data world-readable in shared directories such as /tmp or /dev/shm. Two additional missing flags - O_EXCL and O_NOFOLLOW - allow a local attacker to either win a pre-creation race to substitute their own file or plant a symlink to redirect the open call. No public exploit code has been identified and EPSS is 0.16% (6th percentile), consistent with limited real-world exploitation interest.

RemediationAI

Upgrade Data::Graph::Shared to version 0.04 or later via CPAN (cpan install Data::Graph::Shared or cpanm Data::Graph::Shared); this is the vendor-confirmed fix per the release diff at https://metacpan.org/release/EGOR/Data-Graph-Shared-0.04/changes. If immediate upgrading is not possible, a compensating control is to configure the application to use a dedicated per-application directory (e.g. /run/myapp/ with mode 0700 owned by the service account) rather than /tmp or /dev/shm for the mmap backing file, which eliminates the world-readable exposure and prevents other local users from planting files or symlinks at the expected path. This workaround requires application-level configuration changes and does not fix the underlying O_EXCL/O_NOFOLLOW deficiencies.

Affected VersionsENISA

Data::Graph::Shared 0 <0.04

Affected Packages

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

Data::Graph::Shared is a Perl CPAN module authored by EGOR that implements shared in-memory graph structures via mmap-backed files. The root cause is a CWE-732 (Incorrect Permission Assignment for Critical Resource) in graph.h, where the file open call is open(path, O_RDWR|O_CREAT, 0666). Three distinct insecure practices compound here: the 0666 mode results in world-readable files (0644) after a default umask of 022 is applied, so any local user can read the raw IPC segment contents without any privileges; the absence of O_EXCL means if a file or symlink already exists at the target path, the open silently succeeds against it rather than failing, enabling a pre-creation race attack; and the absence of O_NOFOLLOW means a symlink planted at the expected path is transparently followed, redirecting segment creation or reads to an attacker-controlled file. The affected CPE is cpe:2.3:a:egor:data::graph::shared:*:*:*:*:*:*:*:* for all versions before 0.04.

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

Local attack requiring low-privilege account; world-readable file needs no race condition (AC:L); only partial IPC data disclosed, no integrity or availability impact.

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

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

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

Lifecycle Timeline

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

DescriptionCVE.org

Data::Graph::Shared versions before 0.04 for Perl create a world-readable mmap backing file and open it without O_EXCL or O_NOFOLLOW.

The segment is created in graph.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

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Rare
obscure CPAN module with niche in-memory graph IPC use
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 LOW
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Low

Priority Score

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

Attack Technique

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

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