🇰🇷 한글 설명
Excelize는 Microsoft Excel 스프레드시트를 읽고 쓰기 위한 Go 언어 라이브러리입니다. 2.11.0 이전 버전에서는 공유 문자열 셀 값을 strconv.Atoi로 파싱하면서 상한만 검사하고 하한은 검사하지 않아, 값이 -1인 셀을 포함한 XLSX 파일을 GetCellValue 또는 GetRows로 읽을 때 sharedStrings[-1] 인덱싱으로 패닉이 발생할 수 있습니다. 이 문제는 2.11.0 버전에서 수정되었습니다.
💡 쉬운 설명
엑셀 파일을 처리하는 프로그램 라이브러리에서 잘못된 값을 제대로 걸러내지 못하는 문제입니다. 악의적으로 조작된 엑셀 파일을 열면 프로그램이 비정상 종료될 수 있습니다.
🇺🇸 원문 (English)
Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. Prior to 2.11.0, Excelize parses shared-string cell values with strconv.Atoi and checks only the upper bound before indexing the shared string slice, allowing an XLSX file containing a shared-string cell with -1 to trigger sharedStrings[-1] and panic when read through GetCellValue or GetRows. This issue is fixed in version 2.11.0.
📍 영향받는 시스템
Excelize 2.11.0 미만 버전을 사용하는 Go 애플리케이션 전반
⚔️ 공격 벡터
셀 값이 -1인 조작된 XLSX 파일을 대상 애플리케이션이 GetCellValue 또는 GetRows로 읽도록 유도하여 서비스 거부(패닉)를 일으킴
🛡️ 대응 방법
Excelize 라이브러리를 2.11.0 이상으로 업그레이드 (go get github.com/xuri/excelize/[email protected])
🔧 검증 코드
출력된 버전이 v2.11.0 이상이면 패치된 상태이며, 그 미만이면 취약하므로 업그레이드가 필요합니다.
go list -m github.com/xuri/excelize/v2 2>/dev/null