В популярной библиотеке PhpSpreadsheet обнаружена критическая уязвимость типа Server-Side Request Forgery (SSRF), позволяющая злоумышленникам внедрять malicious HTML input при обработке электронных таблиц. Уязвимость, получившая идентификатор CVE-2025-54370, затрагивает несколько версий пакета phpoffice/phpspreadsheet и имеет высокий уровень серьезности с оценкой 7.5 по шкале CVSS v3.1 и 8.7 по CVSS v4.0.
Детали уявимости
Проблема была обнаружена исследователем Алексеем Соловьевым из Positive Technologies в классе PhpOffice\PhpSpreadsheet\Worksheet\Drawing, конкретно в методе setPath. Уязвимость относится к категории CWE-918: Server-Side Request Forgery и возникает при чтении и отображении обработанного HTML-документа в браузере. Это позволяет злоумышленникам использовать возможности библиотеки по обработке HTML в malicious целях.
Механизм эксплуатации уязвимости основан на передаче контролируемых злоумышленником строк в HTML-ридер. Attackers могут создавать специально сконструированное HTML-содержимое, содержащее image tags с malicious src attributes, указывающими на внутренние сетевые ресурсы. При обработке таких файлов библиотека пытается получить ресурсы по указанным URL, что может привести к раскрытию информации о внутренней сетевой инфраструктуре.
Исследователь продемонстрировал работу уязвимости на примере версии 3.8.0 библиотеки, используя простой HTML-файл, содержащий image tag с ссылкой на локальный адрес. При обработке через HTML-ридер и последующем рендеринге такой payload инициирует запросы к указанному внутреннему адресу, подтверждая наличие SSRF-уязвимости.
1 2 3 4 5 | <table> <tr> <img src="http://127.0.0.1:1337"> </tr> </table> |
Эксплуатация данной vulnerability позволяет злоумышленникам получать доступ к внутренним сетевым ресурсам, обходить сетевые security controls, собирать информацию о внутренней инфраструктуре и потенциально эскалировать атаки на внутренние системы. Особую опасность уязвимость представляет для организаций, обрабатывающих пользовательский HTML-контент или файлы электронных таблиц, содержащие HTML-элементы.
Для mitigation рекомендуется немедленное обновление до патченных версий библиотеки. Разработчикам следует уделить особое внимание валидации входных данных и безопасной обработке пользовательского контента в библиотеках для работы с электронными таблицами. Дополнительной мерой безопасности может стать реализация allowlist-based URL filtering для image resources.
Обнаружение данной уязвимости подчеркивает важность регулярного аудита безопасности в open-source библиотеках, особенно тех, которые активно используются в enterprise-средах для обработки документов. Разработчикам следует учитывать, что даже косвенные функции, такие как обработка HTML-контента в spreadsheet-библиотеках, могут стать вектором для серьезных атак.
PhpSpreadsheet является одной из наиболее популярных PHP-библиотек для работы с файлами форматов Excel, ODS и других табличных форматов. Ее широкое распространение в веб-приложениях означает, что уязвимость может затрагивать значительное количество систем по всему миру. Организациям рекомендуется провести инвентаризацию используемых версий библиотеки и принять незамедлительные меры по обновлению.
Инцидент также демонстрирует сохраняющуюся актуальность SSRF-атак как класса уязвимостей. Несмотря на то, что о подобных проблемах известно уже много лет, разработчики продолжают допускать ошибки при реализации функций, связанных с обработкой URL и сетевых запросов. Это свидетельствует о необходимости более строгого подхода к security review кода, особенно в компонентах, работающих с внешними данными.
Эксперты по безопасности рекомендуют организациям не ограничиваться простым обновлением библиотеки, но и реализовать многоуровневую защиту, включая network segmentation, strict firewall rules и monitoring необычной исходящей сетевой активности. Такие меры могут помочь mitigate риски даже в случае, если какие-то уязвимости останутся необнаруженными или неисправленными в используемом программном обеспечении.
Ссылки
- https://github.com/PHPOffice/PhpSpreadsheet/security/advisories/GHSA-rx7m-68vc-ppxh
- https://www.cve.org/CVERecord?id=CVE-2025-54370
- https://github.com/PHPOffice/PhpSpreadsheet/commit/334a67797ace574d1d37c0992ffe283b7415471a
- https://github.com/PHPOffice/PhpSpreadsheet/commit/4050f14521d70634c3320b170236574a6106eb39
- https://github.com/PHPOffice/PhpSpreadsheet/commit/81a0de2261f698404587a6421a5c6eb263c40b31
- https://github.com/PHPOffice/PhpSpreadsheet/commit/ac4befd2f7ccc21a59daef606a02a3d1828ade09
- https://github.com/PHPOffice/PhpSpreadsheet/commit/c2cd0e64392438e4c6af082796eb65c1d629a266