CVE-2026-40863PhpSpreadsheet是一个纯PHP库,用于读写电子表格文件。在受影响版本中,其SpreadsheetML XML读取器未对ss:Index行属性进行最大行数限制验证。攻击者可通过构造包含超大ss:Index值的恶意XML文件,导致内部缓存行数异常膨胀。当后续调用getRowIterator()方法时,程序将尝试迭代数十亿行,从而耗尽CPU资源,引发拒绝服务攻击。
该漏洞源于PhpSpreadsheet处理SpreadsheetML XML文件时的输入验证缺失。具体而言,Reader\Xml组件在解析<Row>元素的ss:Index属性时,未将其与系统允许的最大行数(AddressRange::MAX_ROW = 1,048,576)进行比对。攻击者可利用此逻辑漏洞,在XML文件中设置ss:Index="999999999"。这会导致程序内部的cachedHighestRow变量被更新为一个极大的数值。一旦应用程序后续尝试遍历行数据,循环逻辑将基于这个巨大的数值执行,导致CPU资源被长时间占用,最终造成服务不可用。