yauzl (также известная как «Еще одна библиотека распаковки») версии 3.2.0 для Node.js содержит ошибку отклонения на единицу в анализаторе дополнительных полей расширенной метки времени NTFS в функции getLastModDate(). Условие цикла while проверяет курсор < data.length + 4 вместо курсора + 4 <= data.length, позволяя readUInt16LE() читать за границей буфера. Удаленный злоумышленник может вызвать отказ в обслуживании (сбой процесса из-за исключения ERR_OUT_OF_RANGE), отправив созданный zip-файл с неверным дополнительным полем NTFS.
Это влияет на любое приложение Node.js, которое обрабатывает загрузку zip-файлов и вызывает метод input.getLastModDate() для анализируемых записей. Исправлено в версии 3.2.1.
Показать оригинальное описание (EN)
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 < data.length + 4 instead of cursor + 4 <= 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.
Характеристики атаки
Последствия
Строка CVSS v4.0