ИИ выставил счёт за 40 лет техдолга: что PHP2Shell говорит о старом коде

ИИ выставил счёт за 40 лет техдолга: что PHP2Shell говорит о старом коде

«ИИ заставляет нас выплачивать технический долг за 40 лет», — так IEEE Spectrum назвал свой материал о PHP2Shell. 4 ноября он вышел на первое место Hacker News: больше 900 очков и 550 комментариев. Основная мысль статьи: ИИ находит дыры в старом коде быстрее, чем люди успевают их закрывать.

Механику уязвимостей и хронологию раскрытия мы разбирали 22 октября. Здесь — что история PHP2Shell говорит о старом коде вообще и почему спор о ней вышел далеко за пределы PHP.

Коротко

  • Ошибку, из которой вырос PHP2Shell, заметили ещё в 2024 году. Тогда она выглядела как обычное падение программы и почти два года оставалась без исправления.
  • Летом 2026-го исследователи с помощью ИИ примерно за две недели превратили это падение в критическую уязвимость. На исправление у небольшой команды PHP ушло около двух месяцев.
  • Главная проблема, по мнению экспертов, — асимметрия: находить баги ИИ уже помогает хорошо, а исправлять их по-прежнему приходится людям, и их мало.
  • IEEE Spectrum пишет, что катастрофу удалось предотвратить. Данные Amazon и Cloudflare показывают картину сложнее: попытки атак начались ещё до выхода патча.

Как «просто падение» стало критической уязвимостью

PHP2Shell — это две критические уязвимости в самом PHP, CVE-2026-109618 и CVE-2026-109619. Через них можно без пароля выполнить свой код на сервере. 21 октября их закрыли версии 8.5.12, 8.4.27, 8.3.36 и 8.2.35, сказано в бюллетене php.net.

Предыстория описана в блоге PHP Foundation. В 2024 году PHP прошёл первый за много лет внешний аудит. Исправляя одну из найденных проблем, разработчик ядра заметил ошибку нехватки памяти. Реального пути к атаке тогда не нашли, и задача отошла на второй план.

Ошибка нехватки памяти обычно просто роняет программу. Неприятно, но само по себе не опасно. Профессор Колумбийского университета Суман Джана объясняет в IEEE Spectrum, что в любом проекте копятся отчёты о таких падениях, и их редко воспринимают всерьёз.

Всё изменилось летом 2026-го. PHP Foundation включила PHP в программу OpenAI Patch the Planet, и 30 июля компания Calif начала аудит. Уже 11 августа исследователь Calif сообщил о способе выполнить код на сервере через ту самую ошибку 2024 года. Позже о связанных проблемах независимо сообщили Wiz и сама OpenAI.

В посте OpenAI говорится, что Calif нашла уязвимость с помощью модели GPT-5.6 Sol. IEEE Spectrum подчёркивает: исследователи глубоко знали и безопасность, и сам PHP. ИИ не сделал работу за них, но взял на себя самую кропотливую часть.

Найти быстро, исправить долго

Ключевая мысль статьи — в словах Джаны: «Существует фундаментальная асимметрия между поиском багов и их исправлением». Найти дыру достаточно один раз. Исправление должно закрыть все варианты атаки и при этом ничего не сломать.

История PHP2Shell это хорошо показывает. По словам PHP Foundation, команда безопасности подготовила несколько вариантов исправления, и у каждого был серьёзный минус. Один ломал совместимость, другой создавал риск отказа в обслуживании, третий требовал переписать множество сторонних расширений.

Решения команда принимала консенсусом, и договориться не получалось. Работа месяцами останавливалась и начиналась заново. Фонд прямо называет эту задержку «структурным провалом» — из-за порядка принятия решений и нехватки людей.

Нагрузка растёт и сейчас. С 1 июля команда безопасности PHP опубликовала 15 CVE и разобрала больше 100 отчётов, которые оказались ошибочными, дублями или не воспроизводились. ИИ помогает проверять отчёты и группировать похожие, но каждое решение принимает человек.

Сам фонд тоже пользуется ИИ. В начале года PHP просканировали моделью Anthropic Claude Mythos через программу Alpha-Omega, позже добавили инструмент OpenAI Daybreak Red для проверки отчётов и эксплойтов.

«Катастрофу предотвратили» — не совсем

IEEE Spectrum пишет, что патч вышел раньше, чем злоумышленники получили эксплойт. С этим стоит быть осторожнее.

По данным Amazon, которые приводит BleepingComputer, ловушки компании зафиксировали попытку атаки ещё 17 октября — за четыре дня до патча. Успешна ли она была, неизвестно. После выхода исправления Amazon назвала эксплуатацию PHP2Shell массовой.

Глава Cloudflare Мэтью Принс говорил о тысячах попыток атаки за 10 часов до официального объявления, пишет CSO Online. Подтверждённых массовых взломов при этом публично пока не описано.

Точнее сказать так: исправление успели подготовить заранее, но окно между утечкой и обновлением всё равно открылось. И закроется оно не скоро — у PHP 8.1 и более старых версий официального исправления нет.

Почему именно «40 лет»

Цифра в заголовке — не про PHP. Ей Мэтт Суиш из стартапа Tolmo описывает всё ПО, которое люди написали за последние десятилетия. По его словам, этот код сейчас вскрывается, и пришло время платить по техническому долгу.

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

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

Спор на Hacker News

В обсуждении на HN сложились два лагеря.

Оптимисты

  • Несколько месяцев будет тяжело, но в итоге ПО станет безопаснее, чем когда-либо.
  • Обещание открытого кода, что «кто-то уже проверил», впервые становится реальностью: ИИ-аудит теперь действительно проходят массово.
  • Разработчики пишут, что сами разбирают с ИИ долг за пять-семь лет: исправление обычно несложное, но раньше на исследование и тесты не было времени.

Скептики

  • Это не выплата долга, а бесконечная беговая дорожка ремонта. Многие проблемы не решаются точечным патчем и требуют переделки архитектуры.
  • ИИ создаёт новый долг быстрее старого: код пишут модели, и никто в команде до конца его не понимает.
  • Исправления от ИИ нужно читать очень внимательно. Патч может проходить тесты, но быть узким и хрупким.

Один из комментаторов напомнил о похожей истории HTTP2Shell, связанной со сжатием Brotli. По разбору Bugsink, ошибка восемь лет жила в коде, а исправление ещё восемь месяцев лежало в Git без релиза. Значит, дело не только в скорости поиска — люди и раньше подолгу не выпускали готовые исправления.

Кто будет платить

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

Джана хвалит лаборатории, которые отдают часть токенов на поиск уязвимостей в открытом ПО, и считает, что таких программ должно быть больше. Он также надеется на формальную верификацию: ИИ пишет патч и доказательство его корректности, а проверяет доказательство строгая программа, а не модель. В пример он приводит инструмент, который Anthropic выпустила 22 октября.

Профессор Университета Джонса Хопкинса Мэтью Грин настроен мрачнее. По его мнению, системно проблему не решат, пока не случится что-то по-настоящему плохое, что заметят обычные люди. Он предполагает, что это может произойти в начале 2027 года. Его совет на ближайшее время простой: ставить обновления сразу, а не откладывать.

Ограничения и оговорки

  • Вклад ИИ трудно измерить. Об использовании GPT-5.6 Sol известно со слов OpenAI и исследователей. Насколько быстро нашли бы уязвимость без ИИ, проверить нельзя.
  • Масштаб атак неясен. Попыток много, но число успешных взломов через PHP2Shell публично не подтверждено.
  • «40 лет» — метафора. Конкретному багу около двух лет, уязвимый код — с 2012 года. Речь о накопленном долге всей индустрии, а не одного проекта.
  • Прогнозы — мнения. И оптимизм Джаны, и предупреждение Грина — оценки экспертов, а не данные.
Открытый вопрос. Если ИИ одинаково ускоряет и защитников, и атакующих, кто выиграет от этой гонки — тот, у кого лучше модель, или тот, у кого больше людей, способных исправить найденное?

Что это значит для разработчиков и бизнеса

  • Инвентаризация среды выполнения. PHP2Shell сидел ниже кода приложения. Чистый код сайта не спасает, если устарел PHP, Node.js или другая среда под ним. Список версий всех сред — первое, что нужно иметь под рукой.
  • Падения — тоже безопасность. Отчёт о падении в ключевой зависимости стоит разбирать не как «неприятность», а как возможную уязвимость. Теперь превратить одно в другое стало дешевле.
  • План для неподдерживаемых версий. Старые ветки рано или поздно остаются без патчей. Миграция с них — работа по безопасности, а не только по обновлению.
  • Проверка ИИ-патчей. Если команда закрывает долг с помощью ИИ, исправления нужно читать так же внимательно, как чужой код. Прошедшие тесты ещё не гарантируют, что дыра закрыта.
  • Поддержка зависимостей. Компании, которые зарабатывают на открытом ПО, могут спонсировать его сопровождение. PHP Foundation прямо просит об этом бизнес, хостинги и государственные организации.

Вывод

PHP2Shell — не обязательно самая разрушительная уязвимость года, но очень показательная. Ошибку знали два года, а ИИ примерно за две недели показал, насколько она опасна. Узким местом оказалась не находка, а небольшая команда людей, которая должна была выбрать и проверить исправление.

Технический долг накапливался десятилетиями, и теперь его будут предъявлять к оплате всё чаще. Выиграют команды, которые знают, что у них работает в продакшене, и умеют быстро обновляться.

Полезная новость?

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

Комментарии

 logo