Adm Zip
Monthly
Integrity bypass in adm-zip through 0.6.0 allows an unauthenticated attacker who supplies a crafted ZIP to a validate-then-extract application to have getEntry() approve one duplicate entry while extractAllTo() writes a different entry's bytes to disk. The flaw is conditional: the consuming application must inspect a named entry's content via getEntry() and then extract the same archive, and the archive must contain duplicate entry names with the relevant ordering; applications that only extract without a getEntry-based content check are not affected. Public proof-of-concept code is present in the upstream advisory, and no CISA KEV active-exploitation listing is associated with this CVE.
Denial of service in adm-zip 0.6.0 and earlier lets remote attackers terminate the entire Node.js host process by submitting a single malformed ZIP file to any of the library's asynchronous decompression APIs. The flaw sits in inflateAsync (methods/inflater.js), which pipes attacker-controlled DEFLATE bytes into a zlib.createInflateRaw stream without registering an 'error' listener, so a corrupted stream or an over-large inflation surfaces as an uncatchable uncaught exception that kills the process and every in-flight request with it. Only applications that call readFileAsync, readAsTextAsync, extractAllToAsync, or ZipEntry.getDataAsync on untrusted input on versions <= 0.6.0 are exposed; the synchronous APIs are unaffected, and there is no data disclosure or code execution - impact is availability only. No public exploit code was identified at the time of analysis, and the issue is not listed in CISA KEV.
Memory exhaustion in the adm-zip Node.js library before 0.6.1 allows remote, unauthenticated attackers to crash or severely degrade any service that reads entries from untrusted ZIP archives: a 105-byte crafted archive whose central directory declares an uncompressed size of ~1.77 GB forces the library to commit roughly 1.8 GB of resident memory before validation fails, which OOM-kills memory-constrained processes (containers, serverless, small VMs) and, with concurrency, can exhaust larger hosts. Publicly available exploit code exists - the vendor advisory includes a self-contained 105-byte base64 PoC (sha256 980d34356fbb248fe527b9d0ac3eabc5c99393a374014be6199523de16709386) - and the CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5) confirms a network-reachable availability-only impact with no privileges or user interaction required. There is no indication of confirmed active exploitation (not in CISA KEV), and applications that never parse attacker-controlled ZIPs are not exposed; the practical severity is governed by host memory limits rather than by any authentication or configuration bar.
An integrity bypass in the Node.js archiving library adm-zip (through version 0.6.1) allows a crafted ZIP to defeat duplicate-entry validation by registering the same target file under canonically equivalent names such as './hello.txt' and 'hello.txt'. Applications that follow a validate-then-extract pattern - approving an archive by reading an entry with getEntry() or readAsText(), then unpacking it with extractAllTo() - can therefore approve benign content and still write attacker-chosen content to the expected path. This is a medium-severity integrity issue affecting npm consumers of adm-zip at or below 0.6.1; no public exploit code was identified at time of analysis and there is no CISA KEV confirmation of active exploitation, while the vulnerability is inert for applications that extract untrusted archives without relying on a prior content-validation step.
adm-zip versions before 0.6.1 can apply attacker-controlled setuid, setgid, or sticky bits when extracting archives with the non-default keepOriginalPermission option enabled. This is a conditional local privilege-escalation risk: the archive must be extracted in a privileged context such as root and the resulting executable must later be run, so exploitation depends on that specific workflow. No public exploit identified at time of analysis, and the vendor-released patch is adm-zip 0.6.1.
Memory exhaustion in adm-zip 0.6.0 and earlier allows unauthenticated remote attackers to bypass the library's decompression-bomb guard on the asynchronous getDataAsync() path, causing the full decompressed payload to be allocated regardless of an entry's declared uncompressed size. This is a genuine but bounded availability issue: only Node.js applications that read ZIP entries asynchronously and rely on the declared size as their bomb protection are exposed, there is no confidentiality or integrity impact, and meaningful denial of service typically requires repeated or large crafted submissions. Publicly available exploit code exists in the form of a working proof-of-concept published with the GitHub advisory, and the flaw is fixed in adm-zip 0.6.1.
Symlink-following during ZIP extraction in adm-zip 0.5.9 through 0.6.0 allows a local attacker who can plant a symlink inside the extraction directory to overwrite arbitrary files accessible by the extracting process. Utils.writeFileTo calls fs.openSync without O_NOFOLLOW and performs no pre-write lstat check, so a pre-positioned symlink transparently redirects the write - and a subsequent chmod - to any target outside the extraction root without any path-traversal sequence appearing in the archive. No public exploit is identified at time of analysis and the vulnerability is not listed in CISA KEV, but the impact is high in shared or predictable extraction environments such as CI pipelines and multi-tenant temp directories.
adm-zip npm library before 0.4.9 is vulnerable to directory traversal, allowing attackers to write to arbitrary files via a ../ (dot dot slash) in a Zip archive entry that is mishandled during. Rated medium severity (CVSS 5.5), this vulnerability is no authentication required, low attack complexity. Public exploit code available.
Integrity bypass in adm-zip through 0.6.0 allows an unauthenticated attacker who supplies a crafted ZIP to a validate-then-extract application to have getEntry() approve one duplicate entry while extractAllTo() writes a different entry's bytes to disk. The flaw is conditional: the consuming application must inspect a named entry's content via getEntry() and then extract the same archive, and the archive must contain duplicate entry names with the relevant ordering; applications that only extract without a getEntry-based content check are not affected. Public proof-of-concept code is present in the upstream advisory, and no CISA KEV active-exploitation listing is associated with this CVE.
Denial of service in adm-zip 0.6.0 and earlier lets remote attackers terminate the entire Node.js host process by submitting a single malformed ZIP file to any of the library's asynchronous decompression APIs. The flaw sits in inflateAsync (methods/inflater.js), which pipes attacker-controlled DEFLATE bytes into a zlib.createInflateRaw stream without registering an 'error' listener, so a corrupted stream or an over-large inflation surfaces as an uncatchable uncaught exception that kills the process and every in-flight request with it. Only applications that call readFileAsync, readAsTextAsync, extractAllToAsync, or ZipEntry.getDataAsync on untrusted input on versions <= 0.6.0 are exposed; the synchronous APIs are unaffected, and there is no data disclosure or code execution - impact is availability only. No public exploit code was identified at the time of analysis, and the issue is not listed in CISA KEV.
Memory exhaustion in the adm-zip Node.js library before 0.6.1 allows remote, unauthenticated attackers to crash or severely degrade any service that reads entries from untrusted ZIP archives: a 105-byte crafted archive whose central directory declares an uncompressed size of ~1.77 GB forces the library to commit roughly 1.8 GB of resident memory before validation fails, which OOM-kills memory-constrained processes (containers, serverless, small VMs) and, with concurrency, can exhaust larger hosts. Publicly available exploit code exists - the vendor advisory includes a self-contained 105-byte base64 PoC (sha256 980d34356fbb248fe527b9d0ac3eabc5c99393a374014be6199523de16709386) - and the CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5) confirms a network-reachable availability-only impact with no privileges or user interaction required. There is no indication of confirmed active exploitation (not in CISA KEV), and applications that never parse attacker-controlled ZIPs are not exposed; the practical severity is governed by host memory limits rather than by any authentication or configuration bar.
An integrity bypass in the Node.js archiving library adm-zip (through version 0.6.1) allows a crafted ZIP to defeat duplicate-entry validation by registering the same target file under canonically equivalent names such as './hello.txt' and 'hello.txt'. Applications that follow a validate-then-extract pattern - approving an archive by reading an entry with getEntry() or readAsText(), then unpacking it with extractAllTo() - can therefore approve benign content and still write attacker-chosen content to the expected path. This is a medium-severity integrity issue affecting npm consumers of adm-zip at or below 0.6.1; no public exploit code was identified at time of analysis and there is no CISA KEV confirmation of active exploitation, while the vulnerability is inert for applications that extract untrusted archives without relying on a prior content-validation step.
adm-zip versions before 0.6.1 can apply attacker-controlled setuid, setgid, or sticky bits when extracting archives with the non-default keepOriginalPermission option enabled. This is a conditional local privilege-escalation risk: the archive must be extracted in a privileged context such as root and the resulting executable must later be run, so exploitation depends on that specific workflow. No public exploit identified at time of analysis, and the vendor-released patch is adm-zip 0.6.1.
Memory exhaustion in adm-zip 0.6.0 and earlier allows unauthenticated remote attackers to bypass the library's decompression-bomb guard on the asynchronous getDataAsync() path, causing the full decompressed payload to be allocated regardless of an entry's declared uncompressed size. This is a genuine but bounded availability issue: only Node.js applications that read ZIP entries asynchronously and rely on the declared size as their bomb protection are exposed, there is no confidentiality or integrity impact, and meaningful denial of service typically requires repeated or large crafted submissions. Publicly available exploit code exists in the form of a working proof-of-concept published with the GitHub advisory, and the flaw is fixed in adm-zip 0.6.1.
Symlink-following during ZIP extraction in adm-zip 0.5.9 through 0.6.0 allows a local attacker who can plant a symlink inside the extraction directory to overwrite arbitrary files accessible by the extracting process. Utils.writeFileTo calls fs.openSync without O_NOFOLLOW and performs no pre-write lstat check, so a pre-positioned symlink transparently redirects the write - and a subsequent chmod - to any target outside the extraction root without any path-traversal sequence appearing in the archive. No public exploit is identified at time of analysis and the vulnerability is not listed in CISA KEV, but the impact is high in shared or predictable extraction environments such as CI pipelines and multi-tenant temp directories.
adm-zip npm library before 0.4.9 is vulnerable to directory traversal, allowing attackers to write to arbitrary files via a ../ (dot dot slash) in a Zip archive entry that is mishandled during. Rated medium severity (CVSS 5.5), this vulnerability is no authentication required, low attack complexity. Public exploit code available.