CVE-2026-40902PHPOffice PhpSpreadsheet是一款广泛使用的PHP电子表格处理库。在修复前的版本中,其XLSX阅读器组件存在严重漏洞。由于未对读取的行号进行最大值验证,攻击者可构造包含超大数据行号的恶意XLSX文件。解析该文件时,程序会尝试执行数十亿次循环操作,瞬间消耗大量CPU资源,导致服务不可用。
该漏洞的核心在于`ColumnAndRowAttributes::readRowAttributes()`方法在处理XLSX文件XML数据时的逻辑缺陷。具体而言,该方法直接从XML属性中读取行号赋值给`cachedHighestRow`,且未与系统定义的最大行限制(`AddressRange::MAX_ROW = 1,048,576`)进行校验。攻击者可利用此缺陷,构造一个体积极小(约1.6KB)的恶意XLSX文件,其中嵌入`<row r="999999999"/>`等超范围行号标签。当受影响版本的库解析此文件时,会将`cachedHighestRow`更新为异常巨大的数值。后续若代码执行行迭代逻辑,将被迫尝试运行近10亿次循环,导致CPU资源瞬间耗尽,系统陷入瘫痪,从而实现拒绝服务攻击。