Уязвимость в PHP-расширении phar позволяет вызвать отказ в обслуживании через циклические символьные ссылки

php

В кодовой базе PHP обнаружена уязвимость, связанная с обработкой символьных ссылок внутри phar-архивов. Проблема получила идентификатор CVE-2026-7260 и оценку Moderate по шкале CVSS. При определённых условиях она приводит к переполнению стека и аварийному завершению процесса PHP.

Уязвимость CVE-2026-7260

Уязвимость затрагивает расширение phar, предназначенное для работы с архивами PHP. При обращении к файлу внутри архива расширение следует по символьным ссылкам. Если ссылки образуют замкнутый цикл, например, указывают друг на друга, рекурсивный обход не останавливается. В результате стек вызовов переполняется, и процесс завершается с ошибкой сегментации.

Для эксплуатации злоумышленнику необходимо создать специально сформированный tar-архив, содержащий циклические символьные ссылки, и заставить приложение обработать его через API расширения phar. Вектор атаки - локальный, однако при этом не требуются особые привилегии. Взаимодействие пользователя необходимо, поскольку кто-то должен инициировать открытие файла. В случае успеха атака приводит только к отказу в обслуживании. Конфиденциальность и целостность данных при этом не затрагиваются.

Согласно бюллетеню, опубликованному на площадке GitHub Security Advisory, уязвимость классифицирована как ошибка неконтролируемого потребления ресурсов и неограниченной рекурсии. Эти категории соответствуют слабостям CWE-400 и CWE-674. Основная причина - отсутствие ограничений на глубину рекурсии и проверки на наличие циклов при разрешении символьных ссылок. В частности, расширение не отслеживает, какие ссылки уже были пройдены, и продолжает обработку до тех пор, пока не исчерпает память стека.

Проблему обнаружили исследователи Кэлвин Янг из компании eWalker Consulting (HK) Limited и Энок Чоу из Isomorph Cyber. Они подготовили техническое описание, в котором показали, как с помощью двух взаимно ссылающихся файлов создать архив, приводящий к краху процесса. Это достаточно простой способ вызвать нестабильность работы приложений, использующих phar для обработки непроверенных данных.

Уязвимость затрагивает все версии PHP, предшествующие выпускам 8.2.33, 8.3.33, 8.4.24 и 8.5.9. Разработчики уже включили исправления в перечисленные версии. Пользователям рекомендуется как можно скорее обновить среду выполнения до актуальной сборки. Также стоит проверить, какие компоненты и приложения зависят от phar, чтобы оценить степень влияния обновления на существующую инфраструктуру.

До установки патча следует избегать обработки phar-архивов из непроверенных источников. Особенно это касается сценариев, где пользователи могут загружать файлы на сервер, а приложение затем открывает их через класс PharData или аналогичные средства. В таких случаях вредоносный архив способен вызывать повторяющиеся сбои рабочих процессов, что в конечном счёте приводит к недоступности сервиса. Если расширение phar не используется в проекте, его можно отключить в конфигурации PHP - это снизит поверхность атаки.

Проблема напоминает о важности проверки структуры архивов до их программной обработки. Наличие циклических ссылок редко встречается в обычных данных, поэтому многие разработчики не учитывают такой сценарий при написании кода. Вместе с тем подобные случаи показывают, что даже стандартные операции с файловыми форматами могут содержать скрытые риски, требующие внимания при проектировании безопасных приложений.

Уязвимость имеет умеренный уровень опасности, но её актуальность связана с широким распространением PHP и частым использованием phar-архивов для упаковки приложений. В реальных условиях эксплуатация возможна через загрузку специально подготовленного файла в веб-приложение, которое обрабатывает вложения или импортируемые документы. Отказ в обслуживании не приводит к утечке данных, однако при массовом использовании сервиса может создать серьёзные неудобства для пользователей.

Разработчики оперативно отреагировали на публикацию и выпустили патчи для всех поддерживаемых веток PHP. Администраторам серверов и разработчикам следует включить обновление в ближайший регламент технического обслуживания. Помимо установки исправлений, полезно добавить проверку архивов на наличие циклических символьных ссылок на уровне приложения - это позволит отсекать подозрительные файлы ещё до передачи их в расширение phar. Такой подход снижает вероятность аварийных остановок процесса и повышает общую устойчивость сервиса к подобным атакам.

Ссылки

Комментарии: 0