Специалисты PT SWARM Алексей Соловьев и Никита Свешников выявили и способствовали устранению двух дефектов безопасности в PHP-компонентах, предназначенных для взаимодействия с базами данных. Этот язык входит в число наиболее востребованных в веб-разработке. В частности, на нем построена одна из ведущих систем управления контентом — WordPress, которая обслуживает свыше 40% всех страниц в мировой сети. В рамках политики ответственного раскрытия информации команда разработчиков языка была проинформирована об угрозах и выпустила патчи, исправляющие недочеты в расширении и драйвере. Эту информацию CNews получили от представителей Positive Technologies.
Язык программирования PHP с открытым исходным кодом занимает 12-ю строчку в мировом рейтинге популярности. Согласно данным w3techs за июль 2026 года, PHP применяется на более чем 70% всех веб-сайтов, где известен серверный язык. К лету 2026 года на GitHub размещено 5,2 миллиона проектов на PHP. На этом языке созданы архитектуры известных маркетплейсов, платформ электронной коммерции, например 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.