🔍 CVE-2026-59161

7.5
CVSS Score
HIGH
2026-07-10
2026-10-25 15:10
✅ 완료

🇰🇷 한글 설명

Excelize는 Microsoft Excel 스프레드시트를 읽고 쓰기 위한 Go 언어 라이브러리입니다. 2.11.0 이전 버전에서는 Rows 및 GetRows가 사용하는 스트리밍 워크시트 리더가 행 번호(r 속성)에 대한 TotalRows 제한을 적용하지 않아, 셀 좌표가 없는 작은 XLSX 파일로도 공격자가 지정한 인덱스까지 빈 행을 추가하며 과도한 메모리와 CPU를 소모할 수 있습니다. 이 문제는 2.11.0 버전에서 수정되었습니다.

💡 쉬운 설명

엑셀 파일을 처리하는 프로그램에 아주 작은 파일을 넣어도, 악의적인 행 번호 때문에 빈 행이 끝도 없이 만들어져 서버 메모리와 CPU가 과도하게 사용됩니다. 그 결과 프로그램이 느려지거나 멈출 수 있습니다.

🇺🇸 원문 (English)

Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. Prior to 2.11.0, the streaming worksheet reader used by Rows and GetRows does not enforce the TotalRows limit on the row r attribute, allowing a small XLSX file with a row number above 1048576 and no cell coordinate to make GetRows append empty rows up to the attacker-controlled index and consume excessive memory and CPU. This issue is fixed in version 2.11.0.

📍 영향받는 시스템

Go 기반 Excelize 라이브러리 2.11.0 미만 버전을 사용하는 모든 애플리케이션

⚔️ 공격 벡터

행 번호(r)를 1048576 이상으로 설정한 조작된 XLSX 파일을 업로드하거나 처리하도록 하여 GetRows 호출 시 메모리 및 CPU 고갈을 유발

🛡️ 대응 방법

Excelize 라이브러리를 2.11.0 이상 버전으로 업데이트하고, 업로드 파일 검증 및 리소스 제한을 함께 적용

🔧 검증 코드

출력된 Version 값이 2.11.0 미만이면 취약하며, 2.11.0 이상이면 패치가 적용된 것입니다.

Shell / Script
go list -m -json github.com/xuri/excelize/v2 2>/dev/null | grep -E '"Version"'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Microsoft Excel