Неделя стала свидетелем беспрецедентной волны атак на критически важный программный стек: уязвимости PHP2Shell и Node2Shell, а также компрометация проекта LiteLLM демонстрируют, как быстро теоретические баги превращаются в реальные угрозы. Совпадение пика атак с выходом патчей и рост числа эксплойтов, созданных ИИ, создают ситуацию, когда традиционные методы защиты устаревают быстрее, чем успевают обновляться системы.
Что произошло
В период с 20 по 26 октября 2026 года киберугрозы сфокусировались на уязвимостях в популярных веб-фреймворках и инструментах разработки. Центральное событие — публикация патчей для двух критических уязвимостей в ядре PHP (CVE-2026-109618 и CVE-2026-109619), получивших название PHP2Shell. Эти баги позволяют выполнять произвольный код на сервере без авторизации и затрагивают 70% веб-сайтов в мире. Несмотря на то, что атаки начались только 25 октября, представители Amazon сообщали о попытках эксплуатации уже за четыре дня до выпуска патчей. В ряде стран были предприняты превентивные меры, включая отключение государственных сервисов.
Параллельно с этим, разработчики Node.js выпустили обновления для всех поддерживаемых веток (22.x, 24.x и 26.x) для устранения десяти уязвимостей, среди которых наиболее опасной стала проблема в декодере Brotli (CVE-2026-111497). Эта уязвимость, получившая названия Node2Shell и Brocolli2Shell, затрагивает не только Node.js, но и Bun, Python-пакеты, Envoy и Istio. Угроза заключается в возможности удаленного выполнения кода при обработке специально подготовленных сжатых данных.
Отдельным инцидентом стала атака на цепочку поставок проекта LiteLLM. Злоумышленники скомпрометировали инфраструктуру выпуска релизов и распространили вредоносную версию 1.107.0 в PyPI, Docker Hub и GHCR. В установочные пакеты были внедрены инфостилер и бэкдор, которые похищали учетные данные и позволяли выполнять код еще до импорта библиотеки. Проект насчитывает более 61 800 звезд на GitHub и 92 млн ежемесячных загрузок.
Также была выявлена критическая уязвимость в GitLab (CVE-2026-110264) с оценкой 10,0 баллов CVSS, связанная с целочисленным переполнением в компиляторе регулярных выражений Onigmo. Проблема затрагивает все self-managed версии GitLab начиная с 7.0, выпущенной в 2014 году, то есть последние 12 лет.
Почему это важно
Главная опасность заключается в синхронизации появления уязвимостей, их раскрытия и начала активной эксплуатации. В случае с PHP2Shell ожидания были предельно пессимистичными: предполагалось, что атаки начнутся в течение 15 минут после выпуска патчей. Хотя массовой эксплуатации сразу не произошло, подтвержденные атаки с работающими эксплойтами начались 25 октября. Для уязвимости, затрагивающей 70% веб-сайтов, это создает критическое окно риска.
Развитие ИИ-ассистентов для поиска уязвимостей привело к тому, что проблем в софте обнаруживают больше, но также упростилась разработка эксплойтов. В результате практически исчезла задержка между выпуском патча и появлением рабочих методов эксплуатации. Это означает, что даже наличие патча не гарантирует безопасности, если обновление не установлено немедленно.
Ситуация усугубляется тем, что многие организации используют устаревшие версии ПО. Например, для PHP официальные исправления доступны только для поддерживаемых версий (8.2 и новее). Если используется версия 8.1 или более ранняя, патчи не получат, и единственным вариантом остается немедленное обновление до поддерживаемой версии. Аналогично, для GitLab уязвимость затрагивает релизы за последние 12 лет, и хотя разработчики подготовили бэкпорты для не поддерживаемых веток, неизвестно, сколько из 2700 инстансов GitLab Community Edition уже получили обновления.
Компрометация LiteLLM демонстрирует, как атаки на цепочку поставок могут проникать в инфраструктуру даже без изменений исходного кода самого проекта. Вредоносный код запускался еще до импорта библиотеки, что делало защиту практически невозможной без полной пересборки окружения.
Что за этим стоит
За этими инцидентами стоит системная проблема: уязвимость в популярном программном обеспечении становится точкой входа для атак на всю экосистему. PHP используется в значительной части веб-технологий, включая WordPress, Drupal, Laravel и пользовательские приложения. Node.js является основой для множества серверных приложений, а LiteLLM служит шлюзом к ИИ-моделям.
Специалисты «Лаборатории Касперского» и CrowdStrike отмечают, что баги в PHP являются проблемой и в домашней инфраструктуре. Патчи доступны, но демонстрационный код эксплойта находится в открытом доступе, что ускоряет распространение атак. В случае с Node.js уязвимость в декодере Brotli затрагивает широкий спектр технологий, включая Python-пакеты и прокси-серверы, что требует комплексного подхода к обновлению.
Атаки на цепочку поставок, как в случае с LiteLLM, становятся все более изощренными. Злоумышленники использовали штатные механизмы Python для запуска вредоносного кода, что делало обнаружение сложным. Вредоносный cook.pth содержал команду import cook, которая загружала cook.py и тем самым запускала инфостилер. Это позволяет активировать малварь даже при запуске pip во время проверки или удаления скомпрометированного пакета.
В контексте GitLab, уязвимость связана с целочисленным переполнением в компиляторе регулярных выражений Onigmo. Проблема возникает при определенных условиях, когда атакующий может передать специально подготовленное регулярное выражение и добиться выполнения произвольного кода на сервере. Хотя условия эксплуатации пока не раскрыты, наличие более 2700 инстансов GitLab Community Edition в сети создает значительный риск.
Что наблюдать дальше
Ключевым вопросом остается скорость обновления инфраструктуры. Для PHP необходимо провести инвентаризацию всех систем, включая установленные пакеты, которые могут не считаться "PHP-серверами" (экземпляры WordPress, административные панели, устаревшие приложения). Если используется версия PHP 8.1 или более ранняя, необходимо немедленно обновить до поддерживаемой версии 8.2+.
Для Node.js важно убедиться, что все поддерживаемые ветки (22.x, 24.x и 26.x) обновлены до последних патчей. Для веток 20.x и более ранних, поддержка которых прекращена, рекомендуется переход на актуальные версии. Уязвимость в Brotli требует внимания не только к Node.js, но и к другим проектам, использующим этот декодер.
В случае с LiteLLM необходимо проверить все установочные пакеты и окружения на наличие вредоносных файлов cook.pth, cook.py и sitecustomize.py. Рекомендуется использовать правила детектирования, опубликованные разработчиками, для выявления подозрительной активности.
Для GitLab администраторам необходимо установить обновления для всех поддерживаемых версий и проверить наличие бэкпортов для не поддерживаемых веток. Специалисты GitLab опубликовали два правила детектирования — Onigmo native worker crash и Org mode render error burst, которые входят в опенсорсный фреймворк TLDR и используют логи GitLab для выявления подозрительной активности.
Важно отметить, что для PHP, если вы используете версии 8.1 или более ранние, официальные исправления будут недоступны, и вам следует немедленно обновить PHP до поддерживаемой версии. Если вы не можете обновить PHP немедленно, Фонд PHP предложил меры, которые вы можете предпринять для снижения риска атак по определенным каналам. Это не гарантирует безопасность вашей установки PHP, и вам следует рассмотреть возможность использования альтернативных решений или временных мер защиты.
В целом, ситуация требует от организаций пересмотра подходов к безопасности, особенно в части управления обновлениями и мониторинга цепочек поставок. Использование ИИ-ассистентов для поиска уязвимостей и разработки эксплойтов требует от специалистов более быстрого реагирования и внедрения автоматизированных процессов защиты.