🇰🇷 한글 설명
Excelize 라이브러리(2.7.0~2.11.0 버전)에서 조건부 서식 추출 시 구조적 검증이 미흡하여 발생하는 취약점입니다. 악의적으로 조작된 엑셀 파일을 처리할 때 인덱스 범위 초과 또는 nil 참조 오류가 발생하여 프로세스가 강제 종료될 수 있습니다.
💡 쉬운 설명
잘못 만들어진 엑셀 파일을 열려고 하면 프로그램이 예상치 못한 오류를 일으키며 갑자기 꺼질 수 있는 문제입니다. 공격자가 이 기능을 이용해 서비스 운영을 방해할 수 있습니다.
🇺🇸 원문 (English)
Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.7.0 to 2.11.0, conditional-format extraction indexes required child slices or dereferences an optional colorScale child without validating malformed rule structure. GetConditionalFormats reaches extractCondFmtCellIs and also indexes ColorScale.Cfvo, DataBar.Cfvo, and DataBar.Color without complete structural checks. When a crafted worksheet supplies a cellIs, dataBar, or colorScale rule missing expected children and the application calls GetConditionalFormats, missing formula, color, value-object, or colorScale data reaches an out-of-range index or nil dereference, allowing an attacker to panic and terminate an unprotected process. No fixed version is available as of this review.
📍 영향받는 시스템
Excelize Go library (versions 2.7.0 to 2.11.0)
⚔️ 공격 벡터
조작된 조건부 서식 규칙(cellIs, dataBar, colorScale 등)이 포함된 엑셀 파일을 애플리케이션에 업로드하거나 처리하도록 유도
🛡️ 대응 방법
현재 수정 버전이 없으므로, 입력 파일의 구조를 사전에 검증하거나 라이브러리 업데이트가 제공될 때까지 주의가 필요함
🔧 검증 코드
출력된 버전이 2.7.0 이상 2.11.0 이하인지 확인하여 취약 여부를 판단합니다.
go list -m github.com/xuri/excelize/v2 2>/dev/null