Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 28 жовтня 2026

Як розкривали критичні вразливості PHP: погляд зсередини і в цифрах

Що оновити після жовтневих RCE-вразливостей PHP, ми вже розповіли. Тепер з'явилося дві розповіді про те, як усе відбувалося: Фолькер Душ (Tideways, AI Security Engineer in Residence в Ecosystem Security Team PHP Foundation) поговорив з Еріком Барнсом в інтерв'ю для Laravel News, а моніторинговий сервіс Oh Dear опублікував графіки того, що бачив у ті дні. Разом вони добре пояснюють, як працює розкриття вразливостей у PHP і чому воно таке повільне й крихке.

Від одного листа до двох CVE

PHP Foundation домоглася, щоб PHP потрапив до програми OpenAI Patch the Planet, і в її межах безпекова компанія Calif почала аудит мови. Невдовзі Calif написала Фолькеру з проханням терміново зустрітися: у них був мінімальний експлойт, що працював у Docker-контейнері. Щойно команда безпеки PHP його побачила, сумнівів, що загроза реальна, не лишилося. Згодом OpenAI і Wiz повідомили про інші вектори атаки з тим самим корінням.

Так з'явилися CVE-2026-109618 (RCE через пошкодження при нестачі пам'яті) і CVE-2026-109619 (RCE через застарілий глобальний стан), обидві з оцінкою 9.2 за CVSS v4.0. Технічну суть ми розбирали в попередньому матеріалі, тут важливіше інше: вада повторювалася в коді в багатьох місцях. Як сказав Фолькер, "треба виправити кожне місце, де це трапляється. Пропустиш одне - і це проблема", тобто ще один випуск.

Чому патч іде довше, ніж оновлення браузера

Браузер оновлюється сам, і виробник контролює весь шлях до користувача. З PHP так не виходить. Проєкт PHP випускає вихідний код, а не той PHP, який стоїть у вас на сервері. Виправлення має пройти через Debian, Ubuntu, Red Hat, офіційні образи Docker Hub і всі образи, збудовані поверх них. Тому дистрибутиви отримали патч заздалегідь: щоб оновлені пакети були готові тієї ж хвилини, коли вразливості стануть публічними.

Через серйозність ситуації команда допомогла підготувати бекпорти і для версій, які PHP офіційно вже не підтримує. До великих хмарних хостингів, з якими в команди не було прямих контактів, звернулися OpenAI і Wiz. А з вендорами WAF, зокрема Cloudflare, працювали окремо, щоб правила з'явилися до дня випуску і захистили сайти, які не оновляться одразу.

20 жовтня php.net оголосив випуск на 21 жовтня, 14:00 UTC, без жодних деталей, і застеріг, що може випустити його раніше, якщо подробиці стануть публічними або з'являться ознаки атак.

Ембарго, яке не втрималося

Уся схема з раннім доступом тримається на тому, що ніхто не публікує виправлення до узгодженого часу. Chainguard це ембарго порушив: опублікував виправлені образи більш ніж на шість годин раніше. Фолькер пояснює, чому це небезпечно саме зараз: перетворити патч, а то й бінарник, на експлойт сьогодні можна значно швидше, ніж раніше. Його оцінка: "Важко стверджувати, що ти займаєшся безпекою, якщо лишаєш більшість людей беззахисними".

Окрема історія - "доказові" скриншоти експлойтів, що розходилися соцмережами. Кілька з тих, які Фолькер перевіряв, працювали лише проти спеціально модифікованого Docker-контейнера і нічого не робили зі стандартним образом із Docker Hub. Тож скриншот із терміналом ще не означає, що вразливий саме ваш сервер, хоча й не скасовує потреби оновитися.

Як це виглядало з боку моніторингу

Більшість сайтів, які моніторить Oh Dear, написані на PHP, тож його дані - це не весь інтернет, а саме PHP-світ. І в ньому 21 жовтня сталося те, чого сервіс раніше не бачив:

  • Частка недоступних сайтів зросла з звичних 0,9-1% до 18,8% о 14:30 UTC, тобто якраз у півгодини виходу патчів. Сайтом "що лежить" Oh Dear вважає той, що провалив щонайменше половину перевірок за півгодини.
  • Down-алертів на піку було в 25 разів більше, ніж у звичайні півгодини.
  • Код 503 серед недоступних сайтів давали 7,7% до початку подій і 43,4% на піку. Тобто власники свідомо ставили сторінку обслуговування: зупиняли php-fpm і лишали Nginx чи Apache віддавати заглушку або гасили вебсервер цілком. Так зробив і сам Oh Dear, віддаючи статичну HTML-сторінку з зупиненим php-fpm.
  • Хто віддавав 503: найчастіше Cloudflare (27,8%), далі відповіді без заголовка Server (25%), nginx (23,6%) і Apache (12%). Cloudflare, за спостереженням Oh Dear, ще й швидко додав WAF-правило для всіх клієнтів.
  • Тривалість: відключення на 4-12 годин мали 11,3% сайтів проти 0,1% тижнем раніше, на 1-4 години - 6,8% проти 0,6%. Станом на ранок 23 жовтня 1,4% сайтів досі лежали.

Інакше кажучи, значна частина PHP-спільноти обрала простоювати кілька годин, аби не ризикувати даними клієнтів. Це наслідок і серйозності вразливостей, і того, що до виходу патча повного обхідного шляху не було.

Що прийшло вже після випуску

Історія не закінчилася 21 жовтня, але обидва продовження невеликі. 23 жовтня PHP опублікував інформаційне попередження: до наступного планового bugfix-випуску вимкнути session.upload_progress.enabled, щоб закрити ще один малоймовірний шлях до RCE. Це налаштування вже було серед заходів в advisory від 21 жовтня, тож якщо ви його застосували, більше нічого робити не треба. Фолькер називає умови для цього випадку "дуже специфічними" і проблему - незначною на тлі основних. 26 жовтня вийшли оновлені Windows-збірки з виправленням у Brotli. Подробиці обох - у нашому попередньому матеріалі.

Хто це полагодив

Поки Фолькер займався комунікацією, у C-коді PHP вдень і вночі сиділи Ілія Товіло, Арно Ле Блан і Якуб Зеленка. Усі троє працюють на PHP Foundation повний робочий день, і саме тому команда змогла кинути все інше й займатися лише цим. Коли ядро підтримують лише у вільний час, такий темп і пошук кожного місця з тією самою вадою дається значно важче.

Звідси й прохання Фолькера до бізнесу: "Якщо ви заробляєте купу грошей на застосунках поверх PHP, віддати навіть крихітну частку цього - дуже корисно".

Що з цього взяти

  • Знайте свій ланцюжок постачання PHP. Ваш PHP приходить від дистрибутива, образу Docker, хмари чи хостингу, і швидкість оновлення визначає найповільніша ланка. Варто заздалегідь знати, звідки беруться пакети на кожному сервері і хто відповідає за їх оновлення.
  • Майте план на випадок вимкнення. Oh Dear показав, як багато команд за лічені години піднімали сторінку обслуговування. Якщо у вас для цього немає готового сценарію (php artisan down, статична сторінка на рівні Nginx, правило на CDN), його краще підготувати зараз, а не в день наступного advisory.
  • Стежте за першоджерелом. Попередження про випуск з'явилося на php.net за добу до нього. Підписка на новини php.net і advisory репозиторію php/php-src дає цю добу на підготовку.
  • Не вірте скриншотам. Перевіряйте вразливість за офіційним advisory і своєю конфігурацією, а не за відео в соцмережах.
  • Підтримайте PHP Foundation. Якщо ваша компанія заробляє на PHP, спонсорство фонду - це внесок у ту саму роботу, яка цього разу закрила вразливості.
11

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Новини 30 жовтня 2026

Laracon AU 2026 у Брисбені: програма і що варто подивитися

4-6 листопада в Брисбені пройде Laracon AU 2026 - Day 0 з двома воркшопами і два дні доповідей. Марсель Поціот про приховану архітектуру Laravel-застосунків, Метт Стауффер про смак розробника в епоху AI, Джоел Клермонт про тести, яким можна довіряти, Filament поза адмінками.

11

Вакансії за темою

Open Tag LLC Нова
Сьогодні

Magento 2 Backend Developer

Розробник бекенду Magento 2, який створюватиме та підтримуватиме функціонал інтернет-магазинів, виправлятиме помилки та покращуватиме наявний код. Потрібен досвід комерційної роботи з Magento 2 від 6 років, сильні знання PHP, MySQL та архітектури Magento, досвід розробки кастомних модулів і інтеграцій зі сторонніми сервісами. Вимагається активне використання AI-інструментів у розробці та англійська не нижче Upper-Intermediate.

Backend-розробник (PHP / Symfony)

Розробка та супровід API публічного сайту oranta.ua, реалізація сценаріїв оформлення полісів, платежів, особистого кабінету та подання заявок. Інтеграція з внутрішніми системами, CRM, платіжними сервісами і зовнішніми API, підтримка адмінпанелі, фонових задач та логування. Ключовий стек: PHP 8, Symfony 6, Doctrine ORM, REST API, PostgreSQL, Redis, Symfony Messenger або SQS, Docker, PHPUnit. Вимоги: від 2 років комерційного досвіду з PHP, англійська на рівні читання технічної документації.

StableFlow Нова
Сьогодні

PHP developer

Розробник PHP для розробки та підтримки backend-застосунків. Потрібні глибокі знання PHP 7.x/8.x і досвід роботи з legacy-проєктами на Symfony 2.8 та Yii2, а також із модифікованою версією WHMCS і шаблонами Smarty. Бажані сильні SQL-навички та досвід роботи з MySQL/MariaDB і PostgreSQL.

Пакети за темою

Laravel Sail

laravel/sail

Локальне середовище розробки на Docker без знання Docker: PHP, база даних, Redis, Meilisearch і Mailpit піднімаються однією командою. Стандартний спосіб запустити Laravel на новій машині.

1,912 v1.67.0 13 5

Laravel Deploy Operations

thedragoncode/laravel-deploy-operations

Пакет дозволяє виконувати різноманітні операції та дії під час процесу розгортування додатку.

244 7.3.0 13 4