CVE-2026-39244
adm-zip: Crafted ZIP file triggers 4GB memory allocation
adm-zip before 0.5.18 is vulnerable to denial of service via a crafted ZIP file with a manipulated uncompressed size header field. In zipEntry.js line 103, Buffer.alloc(_centralHeader.size) allocates memory based on the declared uncompressed size from the ZIP central directory header without validating it against the actual compressed data size or imposing any upper bound. The size value is read directly from the binary header at entryHeader.js line 266 with no bounds check. An attacker can craft a ~120-byte ZIP file that declares ~4GB uncompressed size, causing a memory allocation amplification ratio of over 33 million to 1. The allocation occurs before CRC validation, so the malicious payload cannot be rejected early. All extraction and read methods are affected: readFile(), readAsText(), extractEntryTo(), extractAllTo(), extractAllToAsync(), test(), and entry.getData(). Any application accepting untrusted ZIP files via adm-zip is vulnerable to immediate process crash.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
adm-zip before 0.5.18 is vulnerable to denial of service via a crafted ZIP file with a manipulated uncompressed size header field. In zipEntry.js line 103, Buffer.alloc(_centralHeader.size) allocates memory based on the declared uncompressed size from the ZIP central directory header without validating it against the actual compressed data size or imposing any upper bound. The size value is read directly from the binary header at entryHeader.js line 266 with no bounds check. An attacker can craft a ~120-byte ZIP file that declares ~4GB uncompressed size, causing a memory allocation amplification ratio of over 33 million to 1. The allocation occurs before CRC validation, so the malicious payload cannot be rejected early. All extraction and read methods are affected: readFile(), readAsText(), extractEntryTo(), extractAllTo(), extractAllToAsync(), test(), and entry.getData(). Any application accepting untrusted ZIP files via adm-zip is vulnerable to immediate process crash.
- Record
CVE-2026-39244- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
EUVDEUVD-2026-42960
7.5
adm-zip before 0.5.18 is vulnerable to denial of service via a crafted ZIP file with a manipulated uncompressed size header field. In zipEntry.js line 103, Buffer.alloc(_centralHeader.size) allocates memory based on the declared uncompressed size from the ZIP central directory header without validating it against the actual compressed data size or imposing any upper bound. The size value is read directly from the binary header at entryHeader.js line 266 with no bounds check. An attacker can craft a ~120-byte ZIP file that declares ~4GB uncompressed size, causing a memory allocation amplification ratio of over 33 million to 1. The allocation occurs before CRC validation, so the malicious payload cannot be rejected early. All extraction and read methods are affected: readFile(), readAsText(), extractEntryTo(), extractAllTo(), extractAllToAsync(), test(), and entry.getData(). Any application accepting untrusted ZIP files via adm-zip is vulnerable to immediate process crash.
- Record
EUVD-2026-42960- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-xcpc-8h2w-3j85
7.5
adm-zip: Crafted ZIP file triggers 4GB memory allocation
adm-zip before 0.5.18 is vulnerable to denial of service via a crafted ZIP file with a manipulated uncompressed size header field. In zipEntry.js line 103, Buffer.alloc(_centralHeader.size) allocates memory based on the declared uncompressed size from the ZIP central directory header without validating it against the actual compressed data size or imposing any upper bound. The size value is read directly from the binary header at entryHeader.js line 266 with no bounds check. An attacker can craft a ~120-byte ZIP file that declares ~4GB uncompressed size, causing a memory allocation amplification ratio of over 33 million to 1. The allocation occurs before CRC validation, so the malicious payload cannot be rejected early. All extraction and read methods are affected: readFile(), readAsText(), extractEntryTo(), extractAllTo(), extractAllToAsync(), test(), and entry.getData(). Any application accepting untrusted ZIP files via adm-zip is vulnerable to immediate process crash.
- Record
GHSA-xcpc-8h2w-3j85- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-789
- Updated
- 2026-11-02
NVD
7.5
adm-zip before 0.5.18 is vulnerable to denial of service via a crafted ZIP file with a manipulated uncompressed size header field. In zipEntry.js line 103, Buffer.alloc(_centralHeader.size) allocates memory based on the declared uncompressed size from the ZIP central directory header without validating it against the actual compressed data size or imposing any upper bound. The size value is read directly from the binary header at entryHeader.js line 266 with no bounds check. An attacker can craft a ~120-byte ZIP file that declares ~4GB uncompressed size, causing a memory allocation amplification ratio of over 33 million to 1. The allocation occurs before CRC validation, so the malicious payload cannot be rejected early. All extraction and read methods are affected: readFile(), readAsText(), extractEntryTo(), extractAllTo(), extractAllToAsync(), test(), and entry.getData(). Any application accepting untrusted ZIP files via adm-zip is vulnerable to immediate process crash.
- Record
CVE-2026-39244- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSV
7.5
adm-zip before 0.5.18 is vulnerable to denial of service via a crafted ZIP file with a manipulated uncompressed size header field. In zipEntry.js line 103, Buffer.alloc(_centralHeader.size) allocates memory based on the declared uncompressed size from the ZIP central directory header without validating it against the actual compressed data size or imposing any upper bound. The size value is read directly from the binary header at entryHeader.js line 266 with no bounds check. An attacker can craft a ~120-byte ZIP file that declares ~4GB uncompressed size, causing a memory allocation amplification ratio of over 33 million to 1. The allocation occurs before CRC validation, so the malicious payload cannot be rejected early. All extraction and read methods are affected: readFile(), readAsText(), extractEntryTo(), extractAllTo(), extractAllToAsync(), test(), and entry.getData(). Any application accepting untrusted ZIP files via adm-zip is vulnerable to immediate process crash.
- Record
CVE-2026-39244- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVGHSA-xcpc-8h2w-3j85
7.5
adm-zip: Crafted ZIP file triggers 4GB memory allocation
adm-zip before 0.5.18 is vulnerable to denial of service via a crafted ZIP file with a manipulated uncompressed size header field. In zipEntry.js line 103, Buffer.alloc(_centralHeader.size) allocates memory based on the declared uncompressed size from the ZIP central directory header without validating it against the actual compressed data size or imposing any upper bound. The size value is read directly from the binary header at entryHeader.js line 266 with no bounds check. An attacker can craft a ~120-byte ZIP file that declares ~4GB uncompressed size, causing a memory allocation amplification ratio of over 33 million to 1. The allocation occurs before CRC validation, so the malicious payload cannot be rejected early. All extraction and read methods are affected: readFile(), readAsText(), extractEntryTo(), extractAllTo(), extractAllToAsync(), test(), and entry.getData(). Any application accepting untrusted ZIP files via adm-zip is vulnerable to immediate process crash.
- Record
GHSA-xcpc-8h2w-3j85- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-789
- Updated
- 2026-11-02
Show 8 moreShow less
OSVCLSA-2026-1784769498 No score
TuxCare security update for adm-zip (2 CVEs)
TuxCare rebuilt adm-zip to address 2 CVEs. Fixed in 0.4.16-tuxcare.1.
- Record
CLSA-2026-1784769498- Updated
- 2026-11-02
OSVCLSA-2026-1784856024 No score
TuxCare security update for adm-zip (1 CVE)
TuxCare rebuilt adm-zip to address 1 CVE. Fixed in 0.5.18-tuxcare.1.
- Record
CLSA-2026-1784856024- Updated
- 2026-11-02
OSVCLSA-2026-1790161376 No score
TuxCare security update for adm-zip (1 CVE)
TuxCare rebuilt adm-zip to address 1 CVE. Fixed in 0.5.17-tuxcare.1.
- Record
CLSA-2026-1790161376- Updated
- 2026-11-02
OSVCLSA-2026-1790162696 No score
TuxCare security update for adm-zip (1 CVE)
TuxCare rebuilt adm-zip to address 1 CVE. Fixed in 0.5.16-tuxcare.1.
- Record
CLSA-2026-1790162696- Updated
- 2026-11-02
OSVCLSA-2026-1790165044 No score
TuxCare security update for adm-zip (1 CVE)
TuxCare rebuilt adm-zip to address 1 CVE. Fixed in 0.5.12-tuxcare.1.
- Record
CLSA-2026-1790165044- Updated
- 2026-11-02
OSVCLSA-2026-1790176614 No score
TuxCare security update for adm-zip (1 CVE)
TuxCare rebuilt adm-zip to address 1 CVE. Fixed in 0.5.10-tuxcare.1.
- Record
CLSA-2026-1790176614- Updated
- 2026-11-02
OSVCLSA-2026-1791315520 No score
TuxCare security update for adm-zip (1 CVE)
TuxCare rebuilt adm-zip to address 1 CVE. Fixed in 0.4.7-tuxcare.2.
- Record
CLSA-2026-1791315520- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-39244 No score
CVE-2026-39244 in adm-zip - Patched by Root
Root has patched CVE-2026-39244 in the adm-zip package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-39244- Updated
- 2026-11-06
Affected packages
| Package | Affected | Fixed |
|---|---|---|
adm-zipnpm |
before 0.6.0 | 0.6.0 |
adm-zipTuxCare:npm From an advisory covering 2 CVEs |
0.4.16-tuxcare.0 up to 0.4.16-tuxcare.1, plus listed versions 0.4.16 |
0.4.16-tuxcare.1 |
adm-zipTuxCare:npm |
0.5.18-tuxcare.0 up to 0.5.18-tuxcare.1, plus listed versions 0.5.18 |
0.5.18-tuxcare.1 |
adm-zipTuxCare:npm |
0.5.17-tuxcare.0 up to 0.5.17-tuxcare.1, plus listed versions 0.5.17 |
0.5.17-tuxcare.1 |
adm-zipTuxCare:npm |
0.5.16-tuxcare.0 up to 0.5.16-tuxcare.1, plus listed versions 0.5.16 |
0.5.16-tuxcare.1 |
adm-zipTuxCare:npm |
0.5.12-tuxcare.0 up to 0.5.12-tuxcare.1, plus listed versions 0.5.12 |
0.5.12-tuxcare.1 |
adm-zipTuxCare:npm |
0.5.10-tuxcare.0 up to 0.5.10-tuxcare.1, plus listed versions 0.5.10 |
0.5.10-tuxcare.1 |
adm-zipTuxCare:npm |
0.4.7-tuxcare.0 up to 0.4.7-tuxcare.2, plus listed versions 0.4.70.4.7-tuxcare.1 |
0.4.7-tuxcare.2 |
adm-zipRoot:npm |
before 0.5.16-aikido.2 | 0.5.16-aikido.20.5.18-aikido.20.5.10-aikido.10.5.16-aikido.10.5.18-aikido.10.5.10-aikido.20.5.9-aikido.10.5.10-aikido.30.5.10-aikido.40.5.10-aikido.50.5.9-aikido.20.5.18-aikido.30.5.9-aikido.30.5.16-aikido.30.6.0-aikido.10.6.0-aikido.20.6.0-aikido.3 |
@rootio/adm-zipRoot:npm |
before 0.5.16-root.io.2 | 0.5.16-root.io.20.5.18-root.io.20.5.10-root.io.10.5.16-root.io.10.5.18-root.io.10.5.10-root.io.20.5.9-root.io.10.5.10-root.io.30.5.10-root.io.40.5.10-root.io.50.5.9-root.io.20.5.18-root.io.30.5.9-root.io.30.5.16-root.io.30.6.0-root.io.10.6.0-root.io.20.6.0-root.io.3 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-39244 is a high vulnerability (CVSS 7.5) in adm-zip, published July 10, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.84%, the 58th percentile. Fixed in adm-zip 0.6.0.
References
github.com/cthackers/adm-zip
npmjs.com/package/adm-zip
github.com/cthackers/adm-zip/issues/568
nvd.nist.gov/vuln/detail/CVE-2026-39244
github.com/cthackers/adm-zip/commit/2450dcf417aa29df49270237d18c5245794da3e2
github.com/cthackers/adm-zip/releases
github.com/advisories/GHSA-xcpc-8h2w-3j85
github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39244.json