CVE-2026-27709
Executive Summary
CVE-2026-27709 is an out-of-bounds read vulnerability in NanaZip, an open-source file archiver for Windows. The flaw resides in the .NET Single File Application parser, specifically during manifest parsing. A crafted bundle can provide a malformed RelativePathLength value, causing the parser to construct a std::string from memory beyond the HeaderBuffer. This leads to a crash and potential in-process memory disclosure. The vulnerability affects versions starting from 5.0.1252.0 up to, but not including, 6.0.1638.0 and 6.5.1638.0. The CVSS score is currently 0.0, indicating insufficient data for scoring, but the impact includes denial of service and information disclosure.
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
Supply Chain & Package Security
NanaZip is distributed via GitHub releases and the Microsoft Store. Users should verify the integrity of downloaded binaries using checksums provided by the maintainers. The vulnerability is in the core parsing logic, not in a dependency, so supply chain risk is limited to the distribution channel.
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0, which typically indicates that the score has not been calculated or is pending. Based on the description, the vulnerability could be scored as follows:
- Attack Vector (AV): Local (L) – requires the user to open a crafted file.
- Attack Complexity (AC): Low (L) – no special conditions.
- Privileges Required (PR): None (N) – no authentication needed.
- User Interaction (UI): Required (R) – user must open the malicious file.
- Scope (S): Unchanged (U) – vulnerability does not cross trust boundaries.
- Confidentiality (C): Low (L) – limited memory disclosure.
- Integrity (I): None (N) – no data modification.
- Availability (A): High (H) – crash leads to denial of service.
Estimated CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H
Threat Level: Medium. Exploitation requires user interaction, but the impact includes both denial of service and potential information disclosure.
Deep Dive & Mechanics
The vulnerability is in the .NET Single File Application parser within NanaZip. When processing a bundle, the parser reads a RelativePathLength field from the header. If this field is malformed (e.g., larger than the remaining buffer size), the parser attempts to construct a std::string from memory beyond the HeaderBuffer. This out-of-bounds read can cause a crash (denial of service) and may leak sensitive in-process memory.
Root Cause: Lack of bounds checking on the RelativePathLength value before using it to read a string.
Attack Vector: An attacker crafts a malicious .NET Single File Application bundle and convinces a user to open it with NanaZip. The parser then reads beyond the buffer, causing undefined behavior.
Impact:
- Availability: Crash of the application.
- Confidentiality: Potential disclosure of memory contents, which could include sensitive data.
Vulnerable vs. Patched Code
The vulnerable code likely looks like this (pseudocode):
// Vulnerable version
void ParseManifest(const uint8_t* HeaderBuffer, size_t HeaderSize) {
uint16_t RelativePathLength = ReadUint16(HeaderBuffer + offset);
// No bounds check
std::string relativePath(reinterpret_cast<const char*>(HeaderBuffer + offset + 2), RelativePathLength);
// ... process relativePath
}
The patched version adds a bounds check:
// Patched version
void ParseManifest(const uint8_t* HeaderBuffer, size_t HeaderSize) {
uint16_t RelativePathLength = ReadUint16(HeaderBuffer + offset);
if (offset + 2 + RelativePathLength > HeaderSize) {
// Handle error
return;
}
std::string relativePath(reinterpret_cast<const char*>(HeaderBuffer + offset + 2), RelativePathLength);
// ... process relativePath
}
The fix ensures that the RelativePathLength does not exceed the remaining buffer size, preventing the out-of-bounds read.
Exploitation & Lab Setup
Red Team
Objective: Craft a malicious .NET Single File Application bundle that triggers the out-of-bounds read.
Steps:
- Obtain a legitimate
.NET Single File Applicationbundle. - Reverse engineer the bundle format to locate the
RelativePathLengthfield. - Modify the
RelativePathLengthto a value larger than the remaining buffer (e.g., 0xFFFF). - Deliver the crafted file to the target via email, download, or other means.
- When the target opens the file with NanaZip, the parser will crash and potentially leak memory.
Proof of Concept (Python):
import struct
def craft_malicious_bundle():
# Assume a minimal valid bundle structure
header = b'\x00' * 100 # Placeholder
# Set RelativePathLength to a large value
offset = 50 # Example offset
malformed_length = 0xFFFF
header = header[:offset] + struct.pack('<H', malformed_length) + header[offset+2:]
# Write to file
with open('malicious.bundle', 'wb') as f:
f.write(header)
craft_malicious_bundle()
Blue Team
Detection:
- Monitor for crashes of NanaZip (Event ID 1000 in Windows Application Event Log).
- Use file integrity monitoring to detect modified
.NET Single File Applicationbundles. - Deploy YARA rules to scan for malformed bundles.
Mitigation:
- Update NanaZip to version 6.0.1638.0 or 6.5.1638.0.
- Implement application whitelisting to prevent execution of untrusted bundles.
- Educate users not to open files from untrusted sources.
Indicators of Compromise (IOCs)
- File Hashes: (None provided, but analysts should generate hashes of known malicious bundles)
- File Names:
*.bundlefiles with unusual sizes or structure. - Behavior: NanaZip crashes when opening a
.NET Single File Applicationbundle. - Network: No network indicators, as the vulnerability is local.
Detection Engineering
YARA Rule
rule CVE_2026_27709_NanaZip_OOB_Read {
meta:
description = "Detects malformed .NET Single File Application bundles exploiting CVE-2026-27709"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2026-27709"
strings:
$magic = { 4E 61 6E 61 5A 69 70 } // "NanaZip" magic bytes (example)
$large_length = { FF FF } // RelativePathLength of 0xFFFF
condition:
$magic at 0 and $large_length
}
Sigma Rule
title: NanaZip Crash Due to Out-of-Bounds Read
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects NanaZip crashes potentially caused by CVE-2026-27709 exploitation
author: Valters IT
logsource:
product: windows
service: application
detection:
selection:
EventID: 1000
ApplicationName: 'NanaZip.exe'
FaultingModule: 'NanaZip.dll' # Adjust as needed
condition: selection
falsepositives:
- Legitimate crashes due to other bugs
level: medium
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-27709 NanaZip Malicious Bundle Download"; flow:to_server,established; content:"|4E 61 6E 61 5A 69 70|"; distance:0; within:7; content:"|FF FF|"; distance:0; within:2; classtype:attempted-user; sid:1000001; rev:1;)
Remediation & Mitigation
- Update NanaZip: Upgrade to version 6.0.1638.0 or 6.5.1638.0 immediately.
- Workaround: If unable to update, avoid opening
.NET Single File Applicationbundles from untrusted sources. - Monitor: Use the provided detection rules to identify potential exploitation attempts.
- User Education: Train users to recognize and avoid opening suspicious files.
Valters IT
Securing Digital Frontiers