🔍 CVE-2026-31988

5.3
CVSS Score
MEDIUM
2026-03-11
2026-06-17 10:34
✅ 완료

🇰🇷 한글 설명

Node.js의 yauzl 라이브러리 3.2.0 버전에서 NTFS 확장 타임스탐프 파서의 off-by-one 에러로 인해 버퍼 경계를 넘어 읽을 수 있습니다. 악의적으로 조작된 zip 파일을 통해 원격 공격자가 프로세스 충돌을 유발하여 서비스 거부 공격을 수행할 수 있습니다.

💡 쉬운 설명

zip 파일을 처리하는 Node.js 프로그램이 버그로 인해 조작된 zip 파일을 받으면 프로그램이 강제 종료됩니다. 프로그램을 최신 버전으로 업데이트하면 이 문제가 해결됩니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

yauzl <= 3.2.0 (Node.js 패키지)

⚔️ 공격 벡터

NTFS 확장 타임스탐프가 조작된 악의적 zip 파일을 업로드하여 entry.getLastModDate() 호출 시 버퍼 오버리드 발생

🛡️ 대응 방법

npm update yauzl 또는 package.json에서 yauzl을 ^3.2.1 이상으로 지정하여 재설치

🔧 검증 코드

3.2.0 이하 버전이 출력되면 취약한 상태이며, 3.2.1 이상이 출력되거나 출력이 없으면 안전합니다.

Shell / Script
npm list yauzl 2>/dev/null | grep -oP 'yauzl@\K[0-9.]+' | head -1

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

💻 영향받는 소프트웨어

Node.js