🇰🇷 한글 설명
PhpSpreadsheet 라이브러리의 ODS 파일 읽기 기능에서 table:number-rows-repeated 속성의 제한 없는 처리가 발생합니다. 공격자가 조작한 ODS 파일의 행 반복 횟수를 과도하게 설정할 경우, 서버의 CPU와 메모리를 과다 점유하여 PHP 프로세스를 중단시킬 수 있습니다.
💡 쉬운 설명
엑셀과 유사한 ODS 파일을 읽을 때, 파일 안에 '이 줄을 수만 번 반복하라'는 명령이 들어있으면 컴퓨터가 이를 처리하다가 과부하로 멈춰버리는 문제입니다. 악의적인 파일을 업로드하면 서버를 마비시킬 수 있습니다.
🇺🇸 원문 (English)
PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0, Ods::processTableRow in src/PhpSpreadsheet/Reader/Ods.php accepts an unbounded table:number-rows-repeated attribute from an ODS table row. When the row contains a value, the reader materializes a cell for every repetition without checking the spreadsheet row limit, so a small attacker-controlled ODS file can consume substantial CPU and memory and terminate the PHP worker. Column repetition is separately bounded and is not part of this vulnerability. This issue is fixed in versions 1.30.7, 2.1.19, 2.4.8, 3.10.8, and 5.10.0.
📍 영향받는 시스템
PhpSpreadsheet 버전 1.30.7, 2.1.19, 2.4.8, 3.10.8, 5.10.0 미만 버전
⚔️ 공격 벡터
조작된 table:number-rows-repeated 속성이 포함된 ODS 파일을 서버에 업로드하여 리소스 고갈 유도
🛡️ 대응 방법
PhpSpreadsheet를 최신 보안 패치가 적용된 버전(1.30.7, 2.1.19, 2.4.8, 3.10.8, 5.10.0 이상)으로 업데이트
🔧 검증 코드
출력된 버전 정보가 취약한 버전 범위에 해당하는지 확인
composer show phpoffice/phpspreadsheet