Спецпроекты

Безопасность Новости поставщиков

Эксперты Positive Technologies обнаружили уязвимости в одном из самых популярных языков для разработки сайтов PHP

Эксперты PT SWARM Алексей Соловьев и Никита Свешников обнаружили и помогли исправить две уязвимости в компонентах PHP для работы с базами данных. Это один из самых популярных языков веб-программирования. В частности, на нем написана одна из самых популярных систем управления содержимым сайтов WordPress, используемая более чем на 40% веб-страниц в глобальном интернете. Команда разработчиков языка была уведомлена об угрозах в рамках политики ответственного разглашения и выпустила обновления, устраняющие недостатки в расширении и драйвере. Об этом CNews сообщили представители Positive Technologies.

Свободный язык программирования PHP занимает 12 место по популярности в мире. По данным w3techs на июль 2026 г., разработчики используют PHP на более чем 70% всех веб-сайтов с известным серверным языком. На лето 2026 г. на GitHub размещено 5,2 млн PHP-проектов. На этом языке написаны архитектуры популярных маркетплейсов, платформ e-сommerce, например, Magento2, на базе которой работают крупнейшие мировые ритейлеры, а также систем управления обучением (LMS) и контентом (CMS). На основе последних, в частности WordPress и Drupal, работает большинство сайтов в глобальном интернете. Так, WordPress используют 41,5% веб-страниц в интернете. В ходе мониторинга актуальных угроз (threat intelligence) эксперты Positive Technologies только в России выявили около 1,8 млн потенциально уязвимых ресурсов, использующих PHP.

В случае успешной эксплуатации недостатков атакующий мог выполнить внедрение SQL-кода либо вызвать отказ в обслуживании (DoS) в любых системах, написанных на PHP и использующих небезопасные элементы.

Уязвимости PT-2025-52599 (CVE-2025-14180) присвоено 7,5 балла из 10 по шкале CVSS 3.1. Недостаток был обнаружен в расширении PHP Data Objects (PDO), которое предоставляет разработчикам унифицированный интерфейс для работы с базами данных в случаях, когда происходит взаимодействие с системой управления ими (СУБД) PostgreSQL. PT-2026-39443 (CVE-2025-14179) получила 9,8 балла, что соответствует критическому уровню опасности. Ошибка содержалась в одном из компонентов PDO — драйвере pdo_firebird, необходимом для подключения PHP к широко распространенной системе управления базами данных Firebird.

Из-за недостатков под угрозой могло оказаться любое программное обеспечение, в котором язык PHP работает как с СУБД Firebird, так и с PostgreSQL. Согласно исследованию Stack Overflow, в 2025 г. СУБД PostgreSQL была самой распространенной в мире. Возможный сбой мог подорвать доверие к сервису, а восстановление процессов потребовало бы дополнительных временных и финансовых ресурсов.

Успешно проэксплуатировав уязвимость PT-2026-39443, нарушитель смог бы внедрить произвольный SQL-код на этапе подготовки запроса. Атака становилась возможной из-за недостаточно корректной обработки NUL-байта (\x00), который позволял «отсекать» закрывающуюся кавычку контекста строки и выходить за ее пределы.

В свою очередь, неправомерный итоговый SQL-запрос с инъекцией в зависимости от контекста, то есть конкретного действия, которое совершала бы СУБД при выполнении этого запроса в языке, открывал доступ к любым деструктивным операциям с базой данных — от скрытого чтения конфиденциальных таблиц до их полной модификации или удаления. Дальнейшие последствия зависели от архитектуры системы, подвергшейся взлому: к примеру, это могли быть захват панели администратора с последующим повышением привилегий или компрометация персональных данных. При этом, получив доступ к панели управления, злоумышленник мог бы использовать легитимные функции (например, загрузку исполняемых файлов) либо другие уязвимости веб-приложения, чтобы выполнить произвольный код на сервере и таким образом захватить полный контроль над атакованной инфраструктурой.

Уязвимость PT-2025-52599 могла бы позволить атакующему вызвать аварийное завершение процесса (падение интерпретатора) путем передачи некорректных данных, например невалидных символов. До выпуска обновлений успешная эксплуатация бреши была возможна при включенном режиме эмуляции подготовленных запросов (emulated prepared statements) в драйвере pdo_pgsql, с помощью которого осуществляется взаимодействие с PostgreSQL. В этом состоянии SQL-шаблон и его параметры связываются на стороне PHP, а не самой СУБД. Поскольку падение происходит на системном уровне ядра, стандартные языковые конструкции вроде try-catch оказываются бессильны. В сложных распределенных системах или бизнес-цепочках без сквозных транзакций внезапная «смерть» процесса на критическом этапе приводит к десинхронизации данных: одна часть операции (например, отправка запроса во внешнюю систему) успевает выполниться, а последующий код обработки ответа так и не запускается.

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

«Уязвимость в языке программирования представляет гораздо более серьезную опасность, чем дефект в отдельном продукте. Из-за недостатков в защите PHP под угрозой могли бы оказаться миллионы систем на его основе по всему миру — от публичных веб-ресурсов до внутренних автоматизированных скриптов и серверных утилит, — сказал Алексей Соловьев, руководитель группы экспертизы отдела анализа защищенности веб-приложений, Positive Technologies. — Уникальность проведенного исследования заключается в том, что бреши были обнаружены в расширении PDO и драйвере pdo_firebird — в фундаментальном механизме, созданном именно для защиты от внедрения SQL-кода. Это объясняет крайнюю сложность обнаружения подобных багов: инструменты статического анализа (SAST) сканируют только высокоуровневый код самого приложения и компоненты его зависимостей, если доступен их исходный код. В данном сценарии исходный код разработчиков оставался абсолютно чистым и легитимным, что делало уязвимость PT-2025-52599 на уровне интерпретатора полностью невидимой для стандартных средств защиты».

Чтобы устранить ошибки, необходимо обновить используемую версию языка до актуальной. Альтернативный вариант: для исправления уязвимости PT-2025-52599 скачать PHP версии не ниже 8.1.34, 8.2.30, 8.3.29, 8.4.16 и 8.5.1, для исправления PT-2026-39443 — не младше 8.2.31, 8.3.31, 8.4.21, 8.5.6.

Короткая ссылка