{"id":"CVE-2026-31988","details":"yauzl (aka Yet Another Unzip Library) version 3.2.0 for Node.js contains an off-by-one error in the NTFS extended timestamp extra field parser within the getLastModDate() function. The while loop condition checks cursor \u003c data.length + 4 instead of cursor + 4 \u003c= data.length, allowing readUInt16LE() to read past the buffer boundary. A remote attacker can cause a denial of service (process crash via ERR_OUT_OF_RANGE exception) by sending a crafted zip file with a malformed NTFS extra field. This affects any Node.js application that processes zip file uploads and calls entry.getLastModDate() on parsed entries. Fixed in version 3.2.1.","aliases":["GHSA-gmq8-994r-jv83"],"modified":"2026-03-17T07:44:11.095842Z","published":"2026-03-11T23:16:00.530Z","related":["CGA-46f4-r7mm-232v"],"references":[{"type":"WEB","url":"https://www.codeant.ai/security-research/yauzl-denial-of-service-zip-file-crash"},{"type":"WEB","url":"https://www.npmjs.com/package/yauzl"},{"type":"ADVISORY","url":"https://www.vulncheck.com/advisories/yauzl-denial-of-service-via-off-by-one-error-in-ntfs-timestamp-parser"},{"type":"FIX","url":"https://github.com/thejoshwolfe/yauzl/commit/c4695215b05c6adffda613b9051a2a85429b33fe"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/thejoshwolfe/yauzl","events":[{"introduced":"0"},{"fixed":"c4695215b05c6adffda613b9051a2a85429b33fe"}]}],"versions":["1.1.1","2.0.0","2.0.1","2.0.2","2.0.3","2.1.0","2.10.0","2.2.0","2.2.1","2.3.0","2.3.1","2.4.0","2.4.1","2.4.2","2.4.3","2.5.0","2.6.0","2.8.0","2.9.0","2.9.1","2.9.2","3.0.0","3.1.0","3.1.1","3.1.2","3.1.3","3.2.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31988.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X"}]}