CVE-2026-65062
Executive Summary
Business Impact: This vulnerability affects systems using the Data::SortedSet::Shared Perl module for inter-process communication (IPC) via shared memory segments. Industries relying on Perl-based data processing pipelines, real-time analytics, or multi-process coordination on shared hosts (e.g., shared hosting environments, HPC clusters, containerized microservices) are at risk. The likely attacker is a local unprivileged user on a multi-tenant system seeking to read sensitive IPC data or perform privilege escalation via symlink attacks.
Vulnerability Class & Attack Vector: This is a local vulnerability requiring an attacker to have a user account on the target system. The attack vector is the creation of a world-readable memory-mapped file (mmap) in a shared directory (e.g., /tmp, /dev/shm) without proper file creation flags (O_EXCL, O_NOFOLLOW). The attacker can either read the IPC payloads from the world-readable file or pre-plant a symlink to redirect the file creation to an arbitrary location, potentially overwriting sensitive files.
Urgency Assessment: The CVSS score is 0.0 (Informational) with an EPSS probability of 0.0%. This indicates that while the vulnerability is technically valid, it is not currently being exploited in the wild and is considered low risk for most organizations. However, in high-security, multi-tenant environments, the information disclosure and local privilege escalation potential warrant attention.
Key Facts:
- Vendor: Data::SortedSet::Shared (Perl module)
- Affected Versions: All versions before 0.03
- Patch Status: UNPATCHED (as of 2026-07-21)
- CISA KEV: Not listed.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
Metric Decomposition:
- AV:L (Local): The attacker must have local access to the system to create files or symlinks in the shared directory.
- AC:L (Low): No special conditions are required; the attacker simply needs to create a file or symlink before the vulnerable process runs.
- PR:L (Low): The attacker requires a standard user account on the system.
- UI:N (None): No user interaction is required from the victim process; the attack is triggered automatically when the vulnerable module initializes.
- S:U (Unchanged): The compromise does not affect resources beyond the vulnerable component's security scope.
- C:L (Low): The attacker can read the IPC data stored in the shared memory segment, which may contain sensitive information.
- I:L (Low): The attacker can modify the shared memory segment by pre-planting a file, potentially corrupting data or causing a denial of service.
- A:N (None): The vulnerability does not directly cause a denial of service.
Qualitative Severity: Informational (CVSS 0.0). This score reflects the low impact and local nature of the attack.
EPSS Interpretation: An EPSS probability of 0.0% means that as of the report date, there is no observed exploitation activity in the wild. This is consistent with the vulnerability being a local, low-impact issue that is not attractive to mass exploitation.
Historical Comparison: This vulnerability is similar to CWE-377 (Insecure Temporary File) issues found in many applications that create temporary files in shared directories. Examples include CVE-2021-3156 (sudo) and CVE-2022-0847 (Dirty Pipe), though those had higher impact. The core issue—predictable file paths in /tmp—is a classic Unix security problem.
Temporal & Environmental Considerations: Since no patch is available, the temporal score remains unchanged. In environments where multiple users share a system and IPC data is sensitive (e.g., financial transactions, authentication tokens), the environmental score should be elevated to Medium due to increased confidentiality impact.
Technical Deep Dive & Attack Mechanics
Step-by-Step Technical Explanation:
Module Initialization: When
Data::SortedSet::Sharedis used, it creates a shared memory segment for IPC. The module callsopen()insortedset.hwith the following parameters:open(path, O_RDWR|O_CREAT, 0666);path: Typically a file in/tmpor/dev/shm(e.g.,/tmp/sortedset_shared_XXXXX).O_RDWR|O_CREAT: Opens the file for reading and writing, creating it if it doesn't exist.0666: Sets the file permissions to world-readable and world-writable.
World-Readable File Creation: Under the default
umask 022, the file is created with permissions0644(owner read/write, group read, others read). This means any local user can read the contents of the shared memory segment, which may contain IPC payloads.Symlink Attack: The absence of
O_NOFOLLOWmeans that if a symlink already exists atpath, theopen()call will follow it. A local attacker can pre-plant a symlink pointing to an arbitrary file (e.g.,/etc/passwd,/root/.ssh/authorized_keys). When the vulnerable module opens the symlink, it will read/write to the attacker-chosen file.Pre-Creation Race: The absence of
O_EXCLmeans that if a file already exists atpath, theopen()call will succeed and use the existing file. An attacker can create a file at the predictable path before the vulnerable process runs, allowing them to control the shared memory segment's contents.
Root Cause Analysis: The developer failed to use secure file creation practices:
- Missing
O_EXCL: Should be used withO_CREATto ensure the file is created atomically and fails if it already exists. - Missing
O_NOFOLLOW: Should be used to prevent symlink following. - Overly Permissive Mode:
0666is unnecessarily permissive;0600or0640would be more appropriate.
Attack Surface:
- Interface: Local file system in shared directories (
/tmp,/dev/shm). - Protocol: Standard file I/O operations.
- Pre-conditions: Attacker must have a local user account and know the predictable file path used by the module.
Attack Variants:
- Information Disclosure: Read the world-readable shared memory file to extract IPC data.
- Symlink Privilege Escalation: Pre-plant a symlink to overwrite a sensitive file (e.g.,
/etc/shadow) when the module writes to it. - Data Corruption: Pre-plant a file to inject malicious data into the shared memory segment.
Why Standard Defenses May Fail:
- File Permissions: The module explicitly sets
0666, overriding any restrictive umask. - SELinux/AppArmor: These may not block file creation in
/tmpby default. - Anti-Virus: Local file operations are typically not monitored.
Vulnerable vs. Patched Code Analysis
Vulnerable Code (sortedset.h):
int fd = open(path, O_RDWR | O_CREAT, 0666);
if (fd == -1) {
// error handling
}
Patched Code (hypothetical, based on best practices):
// Use O_EXCL to ensure atomic creation and fail if file exists
// Use O_NOFOLLOW to prevent symlink attacks
// Use restrictive permissions (0600) for IPC data
int fd = open(path, O_RDWR | O_CREAT | O_EXCL | O_NOFOLLOW, 0600);
if (fd == -1) {
// error handling
}
What the Patch Changes:
O_EXCL: Ensures the file is created atomically and fails if it already exists, preventing pre-creation attacks.O_NOFOLLOW: Prevents theopen()call from following symlinks.0600: Restricts file permissions to owner-only read/write, preventing information disclosure.
Regression Considerations:
- Atomicity: The
O_EXCLflag may cause failures if the file path is reused across process restarts. The module should clean up the file on exit or use a unique path per instance. - Compatibility: Existing code that relies on the shared file being world-readable will break. Applications should be updated to use proper IPC mechanisms (e.g., Unix domain sockets, named pipes) if cross-user sharing is required.
Timeline & Disclosure History
- CVE Publication Date: 2026-07-21T20:17:05.190
- Estimated Discovery: The vulnerability was likely discovered through code review or static analysis of the
Data::SortedSet::Sharedmodule. - Disclosure Process: The CVE was assigned by a CNA (likely the Perl security team or a third-party coordinator). No vendor advisory or patch has been released as of the report date.
- Known Exploitation: No known active exploitation as of 2026-07-21.
- CISA KEV: Not listed.
Threat Intelligence Context
Threat Actor Profile: This vulnerability is most likely to be exploited by:
- Script Kiddies: Using publicly available PoCs (if released) to gain unauthorized access to shared hosting environments.
- Insider Threats: Malicious employees or contractors with local access seeking to exfiltrate IPC data.
- Low-Sophistication Attackers: Those using automated scanners for local privilege escalation.
Attack Campaign Context: No known campaigns are using this CVE as of the report date.
Geographic Targeting: No specific geographic patterns are expected; the vulnerability affects any system running the vulnerable Perl module.
Industry Verticals Most at Risk:
- Shared Hosting Providers: Multiple users on the same system.
- HPC/Research Clusters: Multi-user environments with shared storage.
- Financial Services: Systems processing sensitive IPC data.
- Cloud/Container Environments: Where multiple containers share a host kernel.
Connection to Similar Vulnerabilities: This is a classic example of CWE-377 (Insecure Temporary File), which has been exploited in numerous CVEs (e.g., CVE-2021-3156, CVE-2022-0847). The pattern of predictable file paths in /tmp is a recurring theme in Unix security.
Exploitation & Lab Setup
Red Team Section
Lab Setup:
- Environment: Ubuntu 22.04 LTS VM with Perl 5.34.0 installed.
- Install Vulnerable Module:
(Note: This will install the latest version; for testing, use a version < 0.03 from CPAN or a local copy.)cpan Data::SortedSet::Shared - Create Test Script:
use Data::SortedSet::Shared; my $set = Data::SortedSet::Shared->new('/tmp/test_shared'); $set->insert('sensitive_data');
Prerequisites:
- Local user account on the target system.
- Knowledge of the predictable file path (e.g.,
/tmp/sortedset_shared_XXXXX).
Exploitation Walkthrough:
Information Disclosure:
# As attacker, read the world-readable shared memory file cat /tmp/sortedset_shared_XXXXX # Output: sensitive_dataSymlink Attack:
# As attacker, pre-plant a symlink to overwrite /etc/passwd ln -s /etc/passwd /tmp/sortedset_shared_XXXXX # When the victim process runs, it will write to /etc/passwd
Expected Output:
- Successful information disclosure: The attacker can read the IPC data.
- Successful symlink attack: The attacker can overwrite arbitrary files (requires write permissions to the target).
Post-Exploitation:
- With access to IPC data, the attacker may extract authentication tokens, session IDs, or other sensitive information.
- With file overwrite, the attacker can escalate privileges (e.g., overwrite
/etc/shadowto change root password).
Blue Team Section
Detection:
- Monitor File Creation in
/tmp: Look for files with permissions0644or0666created by Perl processes. - Audit Symlink Creation: Monitor for symlink creation in
/tmppointing to sensitive files. - Log Analysis: Check for
open()calls withO_RDWR|O_CREATand mode0666in audit logs.
Log Entries Indicating Exploitation:
- Auditd:
type=SYSCALL msg=audit(1234567890.123:456): arch=c000003e syscall=2 (open) success=yes exit=3 a0=7ffe... a1=42 (O_RDWR|O_CREAT) a2=1b6 (0666) a3=... items=1 ppid=1234 pid=5678 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=1 comm="perl" exe="/usr/bin/perl" key="vuln_open" - Syslog:
Jul 21 12:34:56 hostname perl[5678]: Data::SortedSet::Shared created world-readable file /tmp/sortedset_shared_XXXXX
Network Traffic Signatures: None (local vulnerability).
Endpoint Behavioral Indicators:
- Perl process creating files in
/tmpwith permissions0644. - Unexpected symlinks in
/tmppointing to system files.
Indicators of Compromise (IOCs)
No confirmed IOCs available — the following patterns are illustrative of exploitation attempts:
| Type | Value | Description |
|---|---|---|
| File Path | /tmp/sortedset_shared_* |
Predictable file path used by the vulnerable module |
| File Permission | 0644 or 0666 |
World-readable permissions on shared memory files |
| Symlink | /tmp/sortedset_shared_* -> /etc/passwd |
Symlink planted to redirect file creation |
| Process | perl |
Perl process creating the vulnerable file |
| Syscall | open(path, O_RDWR|O_CREAT, 0666) |
The vulnerable open() call |
Detection Engineering
YARA Rule
rule CVE-2026-65062_Detection {
meta:
description = "Detects exploitation of CVE-2026-65062 in Data::SortedSet::Shared"
author = "Valters IT Hub"
date = "2026-07-21"
reference = "https://www.valtersit.com/cve/cve-2026-65062"
strings:
$s1 = "O_RDWR|O_CREAT" ascii wide nocase
$s2 = "0666" ascii wide nocase
$s3 = "sortedset.h" ascii wide nocase
condition:
any of ($s1,$s2,$s3)
}
Sigma Rule (SIEM)
title: CVE-2026-65062 Data::SortedSet::Shared Exploitation Detection
id: 4d0a2825-b596-4584-9255-40b7c3d9d77f
status: experimental
description: Detects exploitation attempts targeting CVE-2026-65062 in Data::SortedSet::Shared
author: Valters IT Hub
date: 2026-07-21
references:
- https://www.valtersit.com/cve/cve-2026-65062
logsource:
category: process_creation
product: linux
detection:
selection:
Image|endswith: '/perl'
CommandLine|contains: 'Data::SortedSet::Shared'
condition: selection
falsepositives:
- Legitimate use of Data::SortedSet::Shared module
level: high
Suricata IDS Rule
alert tcp any any -> any any (msg:"CVE-2026-65062 Data::SortedSet::Shared Exploitation Attempt"; flow:to_server; content:"Data::SortedSet::Shared"; nocase; classtype:attempted-admin; sid:1000001; rev:1;)
Elastic (EQL) Query
process where event.type == "start" and process.name == "perl" and process.command_line contains "Data::SortedSet::Shared"
Splunk SPL Query
index=linux sourcetype=syslog OR sourcetype=auditd "Data::SortedSet::Shared" OR "sortedset.h" OR "0666"
| table _time, host, process, command
Wazuh Rule
<group name="perl,vulnerability,">
<rule id="100001" level="12">
<if_sid>550</if_sid>
<field name="command">\.*Data::SortedSet::Shared\.*</field>
<description>CVE-2026-65062: Data::SortedSet::Shared module detected</description>
<mitre>
<id>T1055</id>
</mitre>
</rule>
</group>
Remediation & Mitigation
Immediate Actions (0-24 hours)
- No patch available. As a compensating control, restrict access to
/tmpand/dev/shmusing filesystem ACLs or mount options (e.g.,noexec,nosuid,nodev). - Network-Level Mitigation: Not applicable (local vulnerability).
- Authentication Hardening: Ensure least-privilege principles are applied to local user accounts.
Short-term (1-7 days)
- Configuration Hardening: Set a restrictive
umask(e.g.,077) for Perl processes. - Monitoring: Implement the detection rules above to alert on module usage.
- Vulnerability Scanning: Use a script to check for the vulnerable module:
perl -MData::SortedSet::Shared -e 'print $Data::SortedSet::Shared::VERSION' 2>/dev/null
Long-term
- Architecture Changes: Replace
Data::SortedSet::Sharedwith a secure IPC mechanism (e.g., Unix domain sockets, Redis, RabbitMQ). - Security Controls: Implement mandatory access control (SELinux/AppArmor) to restrict file creation in shared directories.
- Developer Training: Educate developers on secure file creation practices (use
O_EXCL,O_NOFOLLOW, restrictive permissions).
Validation
To confirm the module is no longer vulnerable:
- Check the installed version:
perl -MData::SortedSet::Shared -e 'print $Data::SortedSet::Shared::VERSION' - If version >= 0.03, the patch is applied.
- If no patch is available, verify that compensating controls are in place (e.g., restrictive umask, filesystem ACLs).
References & Resources
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-65062
- CVE.org: https://www.cve.org/CVERecord?id=CVE-2026-65062
- Vendor advisory: See vendor security page
- OSV: https://osv.dev/vulnerability/CVE-2026-65062
- Related CWE: https://cwe.mitre.org/data/definitions/377.html
- MITRE ATT&CK: https://attack.mitre.org/techniques/T1055/
Report generated by Valters IT Hub Neural Engine v25 | 2026-07-21 | https://www.valtersit.com/cve/cve-2026-65062