Уязвимость в vBulletin позволяет удалённо выполнить PHP-код без аутентификации

vBulletin

Критическая ошибка в механизме обработки шаблонов движка форумов vBulletin, отслеживаемая как CVE-2026-61511, даёт возможность неавторизованному злоумышленнику выполнить произвольный PHP-код на сервере, где установлено уязвимое приложение. Проблема затрагивает версии 6.2.1 и более ранние, а также ветку 6.1.6 и предшествующие ей. Разработчики выпустили исправление в составе релиза 6.2.2 и в виде отдельных патчей для поддерживаемых версий 6.2.1, 6.2.0 и 6.1.6.

Уязвимость обнаружил независимый исследователь в рамках программы SSD Secure Disclosure. Подтверждение было опубликовано 27 июля 2026 года. На момент раскрытия информации код для эксплуатации уже существовал, что повышает актуальность немедленного обновления для владельцев публичных форумов.

Причина: фильтр, который не фильтрует

Уязвимость локализована в файле "/includes/vb5/template/runtime.php", внутри метода "vB5_Template_Runtime::runMaths()". Эта функция предназначена для вычисления математических выражений, которые используются в шаблонных тегах "{vb:math}". Входная строка проходит через регулярное выражение, которое должно удалять небезопасные символы. Однако фильтр пропускает цифры, скобки, арифметические и бинарные операторы - в том числе оператор XOR. После очистки строка передаётся в вызов PHP "eval()", где исполняется как код.

Как поясняется в отчёте SSD Secure Disclosure, разрешённый набор символов позволяет применять технику "phpfuck" - метод генерации произвольных PHP-функций и полезных нагрузок, используя только разрешённые лексемы. Вместо прямых вызовов функций атакующий строит выражения из чисел, конкатенации и побитовых операций. Эти конструкции обходят фильтр и попадают в "eval()", превращая штатное вычисление математики в вектор удалённого выполнения кода.

Два пути атаки: административный и публичный

Эксплуатировать уязвимость можно двумя способами. Первый требует доступа к панели администратора: администратору достаточно отредактировать шаблон или стиль и вставить тег "{vb:math}" с вредоносным выражением. Однако гораздо более опасным является второй вектор, не требующий аутентификации.

Исследователи обнаружили, что злоумышленник может обратиться к маршруту "ajax/render/[template]", указав шаблон, который использует "{vb:math}" с параметром, контролируемым пользователем. В качестве примера приводится шаблон "pagenav", где значение параметра "pagenav[pagenumber]" присваивается переменной "pagenav.currentpage". Эта переменная затем участвует в математическом выражении для расчёта номера страницы. Передавая вредоносное значение через "pagenav[pagenumber]", атакующий влияет на выражение, которое попадает в "runMaths()" и затем в "eval()".

В публичной концепции, опубликованной исследователем, демонстрируется интерактивное выполнение команд через эндпоинт "ajax/render/pagenav". Эксплойт отправляет POST-запрос с параметром "routestring=ajax/render/pagenav" и значением "pagenav[pagenumber]", содержащим сгенерированную полезную нагрузку.

Последствия и приоритет исправления

Успешная эксплуатация CVE-2026-61511 позволяет атакующему получить полный контроль над веб-приложением в контексте веб-сервера. Это может привести к краже данных (включая учётные записи пользователей, сессионные токены, содержимое базы данных), дефейсу сайта, внедрению вредоносного ПО для посетителей и дальнейшей компрометации сервера.

Поскольку уязвимость не требует аутентификации, угроза для общедоступных форумов крайне высока. Патч должен быть установлен в первую очередь - в отличие от мер, полагающихся на периметровую защиту или ограничение административных действий. Владельцам форумов следует проверить версию установленного vBulletin и при наличии уязвимой версии немедленно обновить её до 6.2.2 или применить патчи для 6.2.1, 6.2.0 и 6.1.6, доступные на официальном форуме разработчика.

Дополнительно специалистам по защите рекомендуется проанализировать журналы веб-сервера и vBulletin на предмет необычных POST-запросов к "routestring=ajax/render/pagenav", аномально длинных значений "pagenav[pagenumber]", содержащих математические операторы и скобки, а также неожиданных вызовов команд от учётной записи веб-службы.

Вывод

Уязвимость в vBulletin - ещё один пример опасности использования функций динамического выполнения кода без должной изоляции пользовательского ввода. Техники вроде "phpfuck" показывают, что даже узкий набор разрешённых символов при продуманной комбинации может привести к полной компрометации системы. Своевременное обновление остаётся основной защитой в таких случаях, особенно когда атака возможна без аутентификации.

Ссылки

Комментарии: 0