Субботний квест #15. Патч вышел. А вас уже взломали?
Интерактив: Три шага, три минуты.
Среда, утро, день акции. Ваш интернет-магазин на PHP принимает около 3 тысяч заказов в день. В новостях пишут о двух критических дырах в PHP, а патч обещан только на вечер. Руководитель ИТ предлагает закрыть сайт до патча, коммерческий директор возражает: сегодня акция.
Кейс собирательный, детали изменены. Свой выбор можно проверить в интерактиве, а здесь разберём, что стоит за этой ситуацией.
Что произошло
Две критические уязвимости PHP, получившие общее название PHP2Shell, позволяют удалённо выполнить код без аутентификации. Информация о них утекла 20 октября, поэтому разработчики выпустили патчи на день раньше плана. Несколько компаний видели попытки эксплуатации ещё до выхода патчей. Представитель одной из них заявил о массовой эксплуатации. Независимого подтверждения масштаба в открытых источниках пока нет.
Исправления вышли 21 октября в версиях PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35. Уязвимыми считаются более ранние выпуски, начиная с PHP 5.4, а ветки 8.1 и старше проект больше не обновляет.
Патч закрывает дыру, но не отвечает, был ли взлом
После такой новости руководитель обычно спрашивает, поставили ли обновление. Вопросов на самом деле два.
Первый: закрыта ли дыра. Ответ даёт патч.
Второй: не заходил ли кто-то, пока дыра была открыта. Патч на него не отвечает. Один из разработчиков PHP предупреждал, что временные меры не защищают полностью, а постоянная защита только обновление. Но обновление не расскажет, что произошло до него. Период между утечкой информации и установкой патча остаётся неизвестным, пока его не проверят.
Что проверить после срочного патча
Универсальный минимум после любого срочного обновления:
- журналы веб-сервера за период от утечки до установки патча: необычные запросы, всплески ошибок;
- новые и изменённые файлы в каталогах сайта за тот же период;
- новые учётные записи и изменения прав в админ-панели;
- пароли и ключи доступа: сменить, если есть хотя бы подозрение.
Перед любой чисткой снимите копию журналов. Потом доказать, что произошло, будет нечем.
Кто решает, закрывать ли сайт
Потерю выручки за день можно посчитать заранее. Ущерб от утечки данных и последующих разбирательств заранее не посчитать. Но главное не в том, какое решение вернее. Оно не должно рождаться в день акции из спора двух директоров. Заранее определите, кто принимает решение закрыть сайт и по каким признакам: версия PHP на сервере, наличие эксплуатации, готовность патча.
Что должно быть в договоре с подрядчиком
Если вы не знаете, какую версию PHP использует ваш хостинг, это первый вопрос к подрядчику. Дальше проверьте договор: есть ли в нём сроки установки критических обновлений, доступ к журналам и ответственность за пропущенный срок. Если этих пунктов нет, в день инцидента спросить будет не с кого.
Если утекли персональные данные
Об утечке персональных данных оператор обязан уведомить Роскомнадзор в установленные сроки. Сроки и порядок смотрите в действующей редакции 152-ФЗ.
Опрос
Telegram: t.me/corp_fish · Instagram*: mari_kovura
* Instagram принадлежит компании Meta, признанной экстремистской организацией и запрещённой в России.