🇰🇷 한글 설명
Go 언어용 Excel 라이브러리인 Excelize의 특정 버전에서 OLE 복합 파일의 스트림 크기를 검증하기 전에 메모리를 할당하는 취약점이 발견되었습니다. 공격자가 조작된 파일을 통해 음수 또는 매우 큰 크기를 지정하면 프로세스 패닉을 유발하거나 시스템 메모리를 고갈시킬 수 있습니다.
💡 쉬운 설명
엑셀 파일을 읽는 프로그램이 파일에 적힌 잘못된 크기 정보를 그대로 믿고 메모리를 과도하게 사용하려다 발생하는 문제입니다. 이로 인해 프로그램이 갑자기 꺼지거나 컴퓨터의 메모리가 부족해져 시스템이 느려질 수 있습니다.
🇺🇸 원문 (English)
Excelize is a Go language library for reading and writing Microsoft Excel spreadsheets. From 2.3.1 to 2.11.0, extractPart allocates a byte slice directly from an attacker-controlled CFB directory-entry size before validating the sector chain or size domain. extractPart trusts the CFB directory entry streamSize for EncryptionInfo and EncryptedPackage allocations before validating the stream. When a crafted OLE compound file declares a negative or extremely large EncryptionInfo or EncryptedPackage stream size, the declared size reaches make with a negative length or forces a multi-gigabyte allocation, allowing an attacker to panic or exhaust process memory. No fixed version is available as of this review.
📍 영향받는 시스템
Excelize library versions 2.3.1 to 2.11.0
⚔️ 공격 벡터
조작된 OLE 복합 파일(Excel 파일 등)을 Excelize 라이브러리를 사용하는 애플리케이션에 업로드 또는 처리하도록 유도
🛡️ 대응 방법
현재 고정된 버전이 없으므로, 라이브러리 업데이트를 기다리거나 입력 파일의 스트림 크기를 사전에 검증하는 로직을 추가해야 함
🔧 검증 코드
출력된 결과에서 excelize의 버전이 2.3.1에서 2.11.0 사이인지 확인
go list -m all | grep excelize