🔍 CVE-2026-40863

7.5
CVSS Score
HIGH
2026-05-12
2026-10-26 18:10
✅ 완료

🇰🇷 한글 설명

PhpSpreadsheet 라이브러리의 SpreadsheetML XML reader가 행 인덱스 검증을 수행하지 않아, 공격자가 ss:Index="999999999"로 설정된 악의적 XML 파일로 내부 행 수를 약 10억으로 증가시킬 수 있습니다. getRowIterator() 호출 시 수십억 개 행 반복으로 인한 CPU 소진 및 서비스 거부가 발생합니다.

💡 쉬운 설명

PhpSpreadsheet 라이브러리가 엑셀 파일의 행 번호를 검증하지 않아, 공격자가 거짓 행 번호를 포함한 파일로 서버를 속일 수 있습니다. 서버가 수십억 개 행을 처리하려 시도해 CPU가 과부하되어 서비스가 중단됩니다.

🇺🇸 원문 (English)

PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0, the SpreadsheetML XML reader (Reader\Xml) does not validate the ss:Index row attribute against the maximum allowed row count (AddressRange::MAX_ROW = 1,048,576). An attacker can craft a SpreadsheetML XML file with ss:Index="999999999" on a <Row> element, which inflates the internal cachedHighestRow to ~1 billion. Any subsequent call to getRowIterator() without an explicit end row will attempt to iterate ~1 billion rows, causing CPU exhaustion and denial of service. This vulnerability is fixed in 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0.

📍 영향받는 시스템

PhpSpreadsheet 1.30.3 이하, 2.1.15 이하, 2.4.4 이하, 3.10.4 이하, 5.6.x 이하

⚔️ 공격 벡터

악의적으로 조작된 SpreadsheetML XML 파일(ss:Index 속성을 매우 큰 값으로 설정)을 업로드하여 서버 CPU 소진 유발

🛡️ 대응 방법

PhpSpreadsheet를 1.30.4, 2.1.16, 2.4.5, 3.10.5 또는 5.7.0 이상으로 즉시 업데이트

🔧 검증 코드

표시된 버전이 1.30.4, 2.1.16, 2.4.5, 3.10.5, 5.7.0 이상 중 하나이면 안전함

Shell / Script
composer show phpoffice/phpspreadsheet 2>/dev/null | grep -i version

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

PHP