🇰🇷 한글 설명
Go 언어용 Excel 라이제 라이브러리인 Excelize 2.1.0에서 2.11.0 버전 사이에서 발생하며, 파일에 로드된 열 범위를 확장할 때 최소 및 최대 값을 워크시트 제한과 대조하여 검증하지 않는 취약점입니다. 공격자가 조작된 워크시트를 제공하고 애플리케이션이 열 수정 기능을 호출하면, 과도한 CPU 및 메모리 소비를 유발하거나 OOM(메모리 부족) 오류를 일으킬 수 있습니다.
💡 쉬운 설명
엑셀 파일을 읽고 쓰는 프로그램에서 잘못된 엑셀 파일을 사용하면 컴퓨터의 메모리와 CPU를 과도하게 사용하여 프로그램이 멈추거나 꺼질 수 있는 문제입니다. 공격자가 만든 특수한 엑셀 파일을 열기만 해도 발생할 수 있습니다.
🇺🇸 원문 (English)
Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.1.0 to 2.11.0, flatCols expands file-loaded column ranges without validating Min and Max against the worksheet column limit. SetColWidth reaches flatCols, which expands xlsxCol.Min through xlsxCol.Max without enforcing MaxColumns. When a crafted worksheet supplies an oversized col max attribute and the application invokes a column mutator, flatCols performs a deep copy and append for every attacker-selected column number, allowing an attacker to consume excessive CPU and memory or trigger OOM. No fixed version is available as of this review.
📍 영향받는 시스템
Excelize library versions 2.1.0 to 2.11.0
⚔️ 공격 벡터
조작된 열 범위(col max) 속성을 포함한 엑셀 파일을 애플리케이션에 업로드하거나 처리하도록 유도
🛡️ 대응 방법
현재 고정된 버전이 없으므로, 라이브러리 업데이트를 모니터링하거나 입력 데이터의 열 범위를 사전에 검증하는 로직을 추가해야 함
🔧 검증 코드
출력된 결과에서 excelize의 버전이 2.1.0에서 2.11.0 사이인지 확인
go list -m all | grep excelize