CVE-2026-45034
PhpSpreadsheet: обход File::prohibitWrappers
- Опубликовано
- 22 июн. 2026 г.
- Обновлено
- 23 июн. 2026 г.
- Назначение CNA
- GitHub_M
- Наблюдены доказательства
- 14 авг. 2026 г.
Первичный CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XНизкий · следующие 30 дней
- Процентиль
- 39,2 %
- Дата модели
- 21 сент. 2026 г.
EPSS – это статистическая оценка, а не достоверность или мера воздействия. Объедините это с CVSS, статусом KEV, воздействием и вашей средой.
Резюме
PhpSpreadsheet — это чистая PHP-библиотека для чтения и записи файлов электронных таблиц. До версии 1.30.5 уязвимость CVE-2026-34084 была исправлена с помощью хелпера File::prohibitWrappers. Хелпер вызывает parse_url($filename, PHP_URL_SCHEME), а затем проверяет is_string($scheme) && strlen($scheme) > 1, чтобы отклонить stream-обёртки, такие как phar://, php://, data:// или expect://. Эта проверка не эквивалентна проверке «содержит ли путь обёртку». Когда входные данные имеют форму phar:///path/file.phar/inner с тремя или более слэшами после схемы, parse_url возвращает boolean false вместо строки схемы. Ветка is_string($scheme) пропускается, хелпер возвращается без исключения, и вызывающий код продолжает работу. Однако потоковый слой PHP по-прежнему обрабатывает phar:///... как допустимую phar-обёртку и открывает лежащий в основе phar-файл. В результате IOFactory::load($attackerPath) обходит исправление и всё равно обращается к phar-обёртке. На PHP 7.x простого обращения к phar-обёртке через is_file достаточно, чтобы PHP автоматически десериализовал метаданные phar, что, в свою очередь, вызывает магические методы __wakeup и __destruct объекта, контролируемого атакующим, и даёт полный RCE. На PHP 8.x автоматическая десериализация метаданных для обычных файловых операций была удалена, поэтому цепочка на уровне PhpSpreadsheet сводится к примитиву чтения файла через phar-обёртку, и RCE снова проявляется только в том случае, если нижестоящий потребитель когда-либо вызывает Phar::getMetadata. Эта уязвимость исправлена в версии 1.30.5.
Источники
1PoC-эксплойт для уязвимости десериализации через phar:// в PHPSpreadsheet, обходящий prohibitWrappers для достижения удалённого выполнения кода на уязвимых PHP-приложениях.
Ответственное использование
Используйте информацию об уязвимостях только в тех системах, которыми вы владеете или имеете право тестировать. Kitploit ссылается на метаданные общедоступных исследований и не хранит код эксплойта или вредоносные полезные данные.