← База знаний

Безопасность · октябрь 2026

PHP2Shell и чёрный октябрь: ИИ ломает софт быстрее, чем его чинят

В октябре исследователи вместе с ИИ нашли в PHP две дыры, через которые сервер можно захватить одним запросом без пароля. Финляндия выключала госсайты, Франция сайты МВД. Разбираем, что случилось, почему взломать теперь быстрее, чем починить, и что сделать со своим сайтом, ботом или навайбкоженным сервисом уже сегодня.

PHP2Shell и чёрный октябрь: число новых CVE в месяц растёт с весны 2026 года

В апреле я писал в телеграме, что новые модели найдут дыры почти во всём софте, а в айти-отделах начнутся разговоры «мы это обновление ставить не будем, у нас вся система рухнет». Тогда это звучало как паранойя. В октябре это случилось почти дословно, причём с языком, на котором работает большинство сайтов.

Ниже разбор: что произошло с PHP, почему это не история про один язык, как изменилась скорость атак и, самое практичное, минимальный набор шагов, чтобы проверить свой проект и закрыть очевидное.

~70%
сайтов с известным серверным языком работают на PHP: WordPress, Битрикс, Drupal, Joomla
1 запрос
столько нужно, чтобы через PHP2Shell выполнить свой код на сервере, без пароля и логина
9,2 из 10
оценка опасности обеих дыр по шкале CVSS
с 2024
с этого года команда PHP знала об ошибке, которая легла в основу одной из дыр

01Что случилось

PHP - язык, на котором работает большинство сайтов, у которых вообще известен серверный язык. Вы его не видите, но он работает под капотом блога на WordPress, сайта салона на Битриксе, Википедии и тысяч интернет-магазинов. 21 октября команда PHP выпустила экстренные обновления: в самом ядре языка нашли две критические уязвимости, их назвали PHP2Shell.

словарик

Уязвимость удалённого выполнения кода (RCE) - дыра, через которую посторонний может запустить на вашем сервере свою программу. По сути, получить ключи от машины. Хуже класса уязвимостей почти не бывает.

2024

Core-разработчик PHP при аудите находит ошибку, связанную с нехваткой памяти. Её не исправляют: команда не договорилась о фиксе, а способа её использовать никто не знал.

август 2026

Исследователь компании Calif в рамках проекта OpenAI проверяет исходники PHP вместе с GPT-5.6 Sol и находит дыру. Независимо от него то же находит Wiz, используя GPT-5.6 Sol и Gemini.

17 октября

Amazon видит в своих ханипотах (серверах-приманках для атак) первую попытку атаки, за четыре дня до раскрытия.

20 октября

Новость утекает раньше срока, в сети появляется видео с рабочим эксплойтом.

21 октября

Выходят исправленные версии PHP. ФБР и АНБ советуют обновиться или выключить сайт, пока не обновились. Cloudflare фиксирует миллионы попыток атак в первые часы.

21–22 октября

Финляндия выключает все публичные госсервисы, Франция - сайты МВД, Нидерланды - госпортал. Временно ложатся часть сервисов Wikimedia и Internet Archive.

Главное тут другое. Ошибку под одной из дыр люди видели ещё в 2024 году. Её не починили, потому что не договорились, как чинить, и потому что никто не знал, как её использовать. ИИ нашёл, как.

Код с ошибкой старый, саму ошибку заметили в 2024-м. Claire Zau описывает это так:

«Баг сидел больше десяти лет, его считали слишком сложным для эксплуатации, пока ИИ-аудит его не вскрыл». Claire Zau, инвестор Lightspeed, ролик «Cyber Armageddon» (перевод наш)

02Это не история про PHP

Октябрь можно прочитать как «у PHP случилась беда». Мне кажется, правильнее читать иначе: поменялась экономика поиска дыр. Раньше найти серьёзную уязвимость и превратить её в рабочую атаку стоило недель работы сильных специалистов. Теперь это стоит часов и денег на API.

6 часов
за столько модель Anthropic Mythos Preview написала рабочие эксплойты для 18 из 21 известной дыры в ядре Windows. Первый был готов через 31 минуту
6 дней и $40 тыс.
за столько команда XBOW с агентами собрала цепочку взлома Chrome. По оценке их исследователя, раньше на такое уходило 6–9 месяцев работы четырёх специалистов
больше 5 месяцев
в среднем закрывают дыру в сложном корпоративном софте (Cloud Security Alliance)
45%
уязвимостей в компаниях не закрыты и через год (там же)

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

03Агенты уже атакуют сами

ЧтоЧто произошло
Один человек и 1200 сайтов (Reuters, 19 октября)Оператор натравил ИИ-агентов на 1200+ сайтов и попал на сайты больше 100 компаний, среди них John Deere. Потратил несколько тысяч долларов.
Агент сбежал из песочницы (июль)На внутреннем тесте OpenAI модели вышли из изолированной среды через дыру нулевого дня в прокси Artifactory и взломали серверы Hugging Face.
Агент и австралийский Medicare (июнь - сентябрь)Агент OpenAI, которого отправили изучать госрасходы на лекарства, обошёл защиту портала и загрузил туда свои файлы. Австралию предупредили почти через три месяца.
ИИ-черви на дешёвых устройствах (Anthropic, 12 октября)Небольшая модель запустилась на 15 ТВ-приставках по $55. Полного самораспространения пока нет, авторы считают, что до него месяцы.

Я сам каждый день работаю с агентами: у меня открыто по 5–9 сессий Claude и Codex, каждая раздаёт подзадачи помощникам. Это огромная скорость. Но ровно ту же скорость теперь получил любой, кто хочет найти дыру в чужом сайте, в том числе в моём.

04Дыры в чужом коде, на котором вы стоите

Октябрь ударил не только по PHP. Сразу несколько историй про код, который вы не писали, но на который опираетесь.

  • LiteLLM - популярная прослойка для работы с языковыми моделями, стоит во многих AI-проектах. В пакеты подложили вредонос, который крадёт облачные ключи, пароли и ключи от AI-сервисов.
  • eMudhra - удостоверяющий центр, который выдаёт сайтам сертификаты (тот самый замочек в браузере). Ключи у восьми сертификатов оказались настолько слабыми, что их подбирали перебором из 256 вариантов. Браузеры заблокировали сертификаты за пару дней, а боты и скрипты на серверах, которые не проверяют отзыв, остаются уязвимыми.
  • Node.js - закрыл четыре серьёзные дыры, одна даёт выполнить код на сервере.

Для вайбкодеров это самое важное: большую часть кода в наших проектах мы не писали. Её притащили зависимости, которые агент поставил за секунду.

05Сколько уязвимостей публикуют

Новые CVE в месяц, база NVD

январь 2024 - октябрь 2026, октябрь неполный (по 24.10)

05 00010 00015 000янв 2024: 2 647фев 2024: 2 906мар 2024: 3 352апр 2024: 3 735май 2024: 5 103июн 2024: 3 173июл 2024: 3 174авг 2024: 2 945сен 2024: 2 540окт 2024: 3 595ноя 2024: 4 086дек 2024: 3 448янв 2025: 4 415фев 2025: 3 831мар 2025: 4 166апр 2025: 4 142май 2025: 4 264июн 2025: 3 799июл 2025: 3 933авг 2025: 3 737сен 2025: 4 537окт 2025: 4 389ноя 2025: 3 116дек 2025: 5 643янв 2026: 5 143фев 2026: 4 808мар 2026: 6 304апр 2026: 5 885май 2026: 6 985июн 2026: 8 001июл 2026: 9 919авг 2026: 12 719сен 2026: 15 074окт 2026: 13 803 (за 24 дня, месяц неполный)202420252026апр 2026: Anthropic показал Mythos15 074окт 2026: 13 803 за 24 дня (неполный)05 00010 00015 000янв 2024: 2 647фев 2024: 2 906мар 2024: 3 352апр 2024: 3 735май 2024: 5 103июн 2024: 3 173июл 2024: 3 174авг 2024: 2 945сен 2024: 2 540окт 2024: 3 595ноя 2024: 4 086дек 2024: 3 448янв 2025: 4 415фев 2025: 3 831мар 2025: 4 166апр 2025: 4 142май 2025: 4 264июн 2025: 3 799июл 2025: 3 933авг 2025: 3 737сен 2025: 4 537окт 2025: 4 389ноя 2025: 3 116дек 2025: 5 643янв 2026: 5 143фев 2026: 4 808мар 2026: 6 304апр 2026: 5 885май 2026: 6 985июн 2026: 8 001июл 2026: 9 919авг 2026: 12 719сен 2026: 15 074окт 2026: 13 803 (за 24 дня, месяц неполный)202420252026апр 2026:Anthropic показал Mythos15 074окт 2026: 13 803 за 24 дня (неполный)
до апреля 2026с апреля 2026октябрь, неполный месяц

Новые CVE в базе NVD по месяцам. Выгрузка heg.ai через NVD API, 25.10.2026. Октябрь неполный.

данные таблицей
МесяцНовых CVE
янв 20242 647
фев 20242 906
мар 20243 352
апр 20243 735
май 20245 103
июн 20243 173
июл 20243 174
авг 20242 945
сен 20242 540
окт 20243 595
ноя 20244 086
дек 20243 448
янв 20254 415
фев 20253 831
мар 20254 166
апр 20254 142
май 20254 264
июн 20253 799
июл 20253 933
авг 20253 737
сен 20254 537
окт 20254 389
ноя 20253 116
дек 20255 643
янв 20265 143
фев 20264 808
мар 20266 304
апр 20265 885
май 20266 985
июн 20268 001
июл 20269 919
авг 202612 719
сен 202615 074
окт 202613 803 (за 24 дня)

Весь 2024 и 2025 было стабильно 3–5 тысяч в месяц. С весны 2026 объём удваивается примерно за четыре месяца: в сентябре 2026 вышло 15 тысяч против 4,5 тысячи годом раньше.

Честная оговорка: это число показывает, сколько дыр ищут и регистрируют, а не насколько плох софт. Реально в атаках используют малую часть, по оценке Google около 0,23%. Но сам рост и есть сигнал: дыры теперь ищут машины, и найденное достаётся всем, включая атакующих.

моя ставка Думаю, через год-два выиграют не те, у кого нет дыр, а те, кто закрывает их так же быстро, как их находят. У меня релизы идут по несколько раз в день, и обновление - ещё один релиз среди прочих. Для команды, которая месяц согласует патч, каждая такая новость будет пожаром.

06Что мы делаем у себя

У нас в HegAI каждый день десятки агентов пишут код, проверяют друг друга и выкатывают изменения. Поэтому безопасность мы строим не разовым аудитом, а набором правил, которые агент не может обойти. Ниже то, что реально работает, и почему каждое правило появилось.

Доступы и ключи

01

Узкий ключ на каждую задачу

Что делаемУ каждого сервиса и агента свой ключ, который умеет только своё. Генерация картинок получает токен только на картинки. Ключ для деплоя умеет одну команду и не даёт консоль сервера.

ПочемуЕсли такой ключ утечёт, через него можно сделать одну операцию, а не всё.

02

Ни одного секрета в git

Что делаемКлючи и пароли живут только в переменных окружения на серверах. Агентам прямо запрещено читать и выводить файлы с секретами.

ПочемуПравило появилось после ревью, которое нашло два ключа прямо в коде.

03

Живые логины не выставляем в сеть

Что делаемБраузер и телефон с личными аккаунтами доступны агентам только локально и только с правами администратора машины, без сетевого порта. Песочницам сотрудников туда нельзя.

ПочемуОткрытый порт отдал бы чужие залогиненные сессии любому пользователю машины.

04

Входящие запросы проверяем подписью

Что делаемВебхуки Telegram и Zoom и наши внутренние callback'и сверяются криптографически. Файлы скачиваем только с доверенных доменов.

ПочемуИначе любой, кто узнал адрес, может прислать поддельное событие.

Агенты и ревью

05

На прод только после зелёной проверки

Что делаемДеплой отказывает, пока коммит не прошёл автотесты и независимое ревью другой моделью. Если ревью не отработало, это «не проверено», а не «зелёный».

ПочемуОднажды проверки три недели молча не работали, и агенты всё это время выкатывали код без них.

06

Последнее слово за человеком

Что делаемРелиз платформы я выкатываю кнопкой. Бот присылает карточку: какие коммиты, какие изменения базы, что сказал ревьюер. Кнопка подписана и действует 15 минут.

ПочемуМежду пушем агента и продом нужен барьер, которым владеет человек.

07

Ревьюер в изоляции

Что делаемМодель, которая проверяет код, работает в отдельном контейнере без учётных данных и с минимальной сетью. Код она получает как недоверенные данные.

ПочемуКод из чужой ветки не должен уметь управлять тем, кто его проверяет.

08

Две модели из разных семей

Что делаемЗаметную правку проверяют параллельно Claude и Codex, находки сверяем с кодом.

ПочемуУ моделей разные слепые зоны, и то, что пропустила одна, часто ловит другая.

Бэкапы и мониторинг

09

Бэкапы со сторожем

Что делаемКаждый день база, файлы и зашифрованный архив почты уходят во внешнее хранилище, ключ шифрования лежит отдельно. Если успешного бэкапа нет больше 30 часов, приходит тревога.

ПочемуБэкап, который тихо перестал делаться, хуже никакого, потому что на него надеешься.

10

Откат одной командой

Что делаемСервер хранит предыдущую версию и сам возвращает её, если новая не поднялась.

ПочемуТогда обновляться не страшно, а значит, обновляемся быстро.

11

Сломанная проверка тоже тревога

Что делаемМониторинг каждые полчаса смотрит диск, память, базу, сертификаты и уязвимые зависимости. Если проверка сама не смогла отработать, это тоже алерт.

ПочемуСамые дорогие сбои у нас были тихими.

12

Без входа по паролю

Что делаемНа серверы заходим только по ключу, после нескольких неудачных попыток адрес банится.

ПочемуНа одной из наших машин за сутки было почти две тысячи попыток подобрать пароль.

главный урокНе всё у нас доделано, часть правил пока живёт в планах. Но главный урок я для себя вынес: правило работает, только когда его проверяет машина. Договорённость «давайте не коммитить ключи» живёт до первого аврала. Проверка, которая не пускает такой коммит, живёт всегда.

07Минимальная настройка безопасности: чеклист

Ниже минимум, который я бы сделал в любом проекте, от лендинга на WordPress до бота с агентами. Аудит это не заменит, но самое очевидное закроет.

  1. 01

    Составьте список всего, что у вас крутится

    15 минут

    Сайты, боты, серверы, домены, сервисы на хостингах. Нельзя обновить то, о чём забыл. Особенно старые проекты, которые «собрали и не трогали».

  2. 02

    Проверьте версии PHP и обновитесь

    10 минут на сайт

    Если у вас WordPress, Битрикс или любой сайт на PHP, нужны версии не ниже 8.2.35, 8.3.36, 8.4.27 или 8.5.12 в своей ветке, либо пакет дистрибутива, где в трекере безопасности закрыты CVE-2026-109618 и CVE-2026-109619 (Debian, Ubuntu и RHEL переносят исправления в старые номера версий). Смотрите версию, которая реально обслуживает сайт: php-fpm, модуль apache или настройка в панели хостинга, а не только php -v в консоли, на одном сервере их бывает несколько. После обновления перезапустите php-fpm или apache. Перед переключением версии в панели сделайте бэкап: плагины и модули на новой ветке могут упасть. Для 7.4, 8.0 и 8.1 вышли только исходные патчи без официальных сборок: если обновиться прямо сейчас нельзя, закройте сайт правилом WAF или выключите его, как советовали ФБР и АНБ.

  3. 03

    Обновите зависимости в своих проектах

    20 минут

    Node.js - до последнего патча своей ветки. Python и JS-пакеты - через npm audit и pip-audit. Если в проекте есть LiteLLM, сверьте версию с бюллетенем проекта. Если стояла заражённая версия, считайте утёкшими все ключи, которые были на этой машине или в CI: облачные, от AI-сервисов, токены. Удалите пакет, поставьте чистую версию и проверьте lock-файлы.

  4. 04

    Вынесите и смените секреты

    30 минут

    Ключи API, пароли от баз и токены ботов не должны лежать в коде и в git. Только переменные окружения или менеджер секретов. Если ключ когда-то попадал в репозиторий, считайте его утёкшим и выпустите новый.

  5. 05

    Включите двухфакторную защиту везде, где есть деньги и доступы

    15 минут

    Хостинг, регистратор доменов, GitHub, почта, панели OpenAI и Anthropic, платёжки. Взлом почты и хостинга обходится дороже любой дыры в коде.

  6. 06

    Закройте лишнее снаружи

    20 минут

    На сервере открыты только нужные порты (обычно 80, 443 и SSH по ключу). Базы данных наружу не открывайте вообще. Админки и панели - только с паролем, двухфакторкой и ограничением по IP.

  7. 07

    Настройте автоматические обновления и бэкапы

    30 минут

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

  8. 08

    Поставьте агента дежурить

    1 час один раз

    Раз в неделю агент проверяет зависимости, версии и открытые порты и присылает отчёт. Сам по расписанию он не запустится: нужен cron на сервере или расписание в Claude Code или Codex. Промпт ниже.

08Проверить, что есть сейчас: промпты для агента

Самый быстрый способ провести аудит - отдать его тому же Claude Code или Codex. Важно: сначала только чтение и отчёт, правки - после того, как вы посмотрели план.

Аудит сервера
Проведи аудит безопасности этого сервера. Пока ничего не меняй, только читай и собирай отчёт.
1. Версии ОС, PHP, Node.js, Python, nginx/apache. Для PHP проверь версию, которая реально обслуживает сайт (php-fpm, модуль apache), а не только php -v в консоли. Для каждой: поддерживается ли ветка и есть ли свежие исправления безопасности. Отдельно проверь PHP на исправления PHP2Shell (CVE-2026-109618, CVE-2026-109619).
2. Какие порты слушают и какие сервисы за ними. Сверь с настройками файрвола (ufw, iptables или панель облака): что реально доступно из интернета и что не должно быть.
3. Как настроен вход по SSH: разрешён ли вход по паролю и под root.
4. Включены ли автоматические обновления безопасности.
5. Есть ли бэкапы, где они лежат и когда был последний.
Выдай таблицу: что нашёл, насколько это опасно (критично / важно / можно позже), как исправить. Потом предложи план и спроси, что из него делать.
Аудит проекта и зависимостей
Проверь этот репозиторий на проблемы безопасности. Ничего не меняй, только отчёт.
1. Запусти проверку зависимостей (npm audit, pip-audit или аналог для этого стека; если инструмента нет, спроси, ставить ли его) и покажи уязвимые пакеты с версиями, где они исправлены.
2. Проверь, есть ли в проекте LiteLLM, и сравни версию с последним бюллетенем безопасности проекта.
3. Найди секреты в коде и в истории git: ключи API, пароли, токены. Не выводи их значения, только файл и тип секрета.
4. Проверь, что .env и файлы с секретами в .gitignore.
5. Найди места, где пользовательский ввод попадает в SQL, команды shell или файловые пути без проверки.
Выдай таблицу по важности и план исправлений. Спроси перед тем, как что-то править.
Еженедельный дежурный
Каждый понедельник (задача запускается по расписанию) проверяй мои проекты: версии рантаймов и зависимостей, новые уязвимости в них, открытые порты на серверах и дату последнего бэкапа. Если появилось что-то критичное, пиши сразу. Если всё спокойно, коротко отчитайся одной строкой. Ничего не обновляй без моего подтверждения.
AIБезопасность

Хочешь обсудить с автором или менторами?

В heg.ai темы из базы знаний разбираются на мастермайндах, в чатах и на 1:1 встречах с менторами.

Подать заявку

Частые вопросы

У меня сайт на Тильде или другом конструкторе. Меня это касается?

Сама платформа обновляется силами её команды, ваша задача - двухфакторная защита аккаунта и доменов. PHP2Shell касается тех, у кого свой хостинг или сервер с PHP.

Я не пишу на PHP, мои проекты на Node и Python. Можно выдохнуть?

Про PHP2Shell - да. Про остальное - нет: в октябре досталось и Node.js, и LiteLLM. Пункты 1 и 3–8 чеклиста для вас.

Если ИИ находит дыры, может, он же их и закроет?

По-моему, да, и это главный вывод. Защищаться от агентов разумно агентами: они читают код, следят за зависимостями и готовят исправления за ночь. Человеку остаётся ставить задачу и проверять.

Насколько всё серьёзно для небольшого проекта?

Атаки теперь массовые и дешёвые, поэтому «я слишком маленький, чтобы меня ломали» больше не работает. Агенты обходят сайты пачками, им всё равно, чей это сайт.