В среду в открытый доступ попали сведения о восьми уязвимостях в NodeBB — популярном движке для форумов. Вместе с описанием проблем разработчики из Aikido Security выложили и рабочий эксплойт-код. Самое любопытное здесь не столько сами дыры, сколько то, как их нашли: ИИ-агенты для пентеста прошлись по исходному коду NodeBB и за шесть часов накопали восемь проблем, каждой из которых Aikido присвоила высокую степень серьёзности. Затронуты все версии программы до 4.14.0 включительно. NodeBB уже всё закрыла, и администраторам форумов советуют обновиться до 4.14.2.
Первая находка выглядит почти оскорбительно простой. Обычный участник форума мог зайти в настройки и указать в качестве домашней страницы адрес админ-панели. После перезагрузки страницы перед ним открывалась панель администратора — без пароля, без какого-либо кода для взлома, просто через смену одной настройки. Вторая уязвимость примыкает к первой: интерфейс форума вроде бы блокировал такую подмену адреса, но делал это только на стороне браузера, и блокировку легко обходили. Правда, большая часть данных, до которых так можно было добраться, оказывалась доступна лишь для чтения — журнал ошибок, экспортированные списки пользователей. Зато логотип сайта злоумышленник вполне мог поменять.
Третья и четвёртая уязвимости не требовали вообще никакой учётной записи. Одна позволяла кому угодно выдать себя за любого пользователя и читать его личные сообщения — по одному за раз, но читать. Другая отдавала содержимое приватных категорий форума всякому, кто правильно оформил запрос — опять же безо всякой авторизации.
Пятая дыра оказалась самой опасной по охвату. Корень проблемы крылся в том, как NodeBB собирает страницу: сначала формируется содержимое, а затем происходит второй проход — движок подставляет переводы текста. К моменту этого второго прохода пользовательский ввод уже находится на странице, и атакующий мог протащить туда код, который система как раз ищет на этом этапе. В результате вредоносную ссылку получалось разместить почти где угодно на сайте, включая обычные посты на форуме. Достаточно было, чтобы кто-то кликнул по такой ссылке — и код атакующего выполнялся в браузере жертвы.
Шестая уязвимость позволяла перехватить чужой уже существующий пост. Седьмая — накрутить количество голосов под постом. А восьмая пара уязвимостей эксплуатировала связь NodeBB с федивёрсом — сетью связанных социальных платформ вроде Mastodon: через поддельный сервер в этой сети злоумышленник внедрял вредоносный код.
Если смотреть на риск в целом, три из восьми уязвимостей не требовали вообще никакой учётной записи на форуме-жертве, две работали при наличии обычного аккаунта участника, а для эксплуатации ещё трёх жертву нужно было заставить кликнуть по ссылке или открыть страницу. По подсчётам издания The Hacker News, пять из восьми проблем сидели в коде федерации — том самом, что связывает форум с Mastodon и другими платформами. Здесь важна деталь: на свежих установках четвёртой версии NodeBB федерация включена по умолчанию, так что новые форумы оказывались уязвимы по всем восьми пунктам. А вот форумы, обновившиеся с третьей версии, получали федерацию отключённой по умолчанию — там актуальными оставались только три уязвимости, не связанные с этой функцией, если только администратор сам не включил федерацию вручную.
Ни Aikido, ни сама NodeBB не присвоили этим восьми проблемам конкретные баллы серьёзности по стандартным шкалам. Зато можно ориентироваться на собственную шкалу NodeBB для программы bug bounty: там межсайтовый скриптинг и захват аккаунта числятся как «высокий» уровень, а получение админского доступа — как «критический».
История с патчами получилась запутанной. NodeBB чинила проблемы по частям, без лишнего шума: в мае закрыли четыре уязвимости, в июне — ещё две, а 9 июля вышла самая крупная правка — переработка того, как программа обрабатывает текст на страницах, затронувшая 325 файлов и вошедшая в версию 4.14.0. При этом в материалах Aikido утверждается, будто проблемы закрыли в начале июля — это не совпадает с реальной хронологией релизов. Более того, ссылка Aikido на исправление админ-панели ведёт на изменение из января 2024 года — то есть за два года до самого исследования, тогда как в релиз-заметках NodeBB это же исправление фигурирует под маем нынешнего года. Ни та, ни другая сторона это расхождение не объяснила.
Администраторам форумов стоит обновиться до версии 4.14.2, вышедшей 23 июля. Стоит учитывать, что версия 4.14.0 поменяла механизм обработки текста в шаблонах страниц, так что кастомные темы и плагины могут потребовать доработки. Отключение федерации не решает проблему целиком — три из восьми уязвимостей к ней вообще не относятся.
Ни одна из восьми найденных уязвимостей не получила номер CVE, и сообщений об атаках, использующих их, пока не поступало. Зато отдельная уязвимость в той же федерационной части NodeBB такой номер имеет — CVE-2026-58593, зарегистрирована 1 июля. Она не входит в восьмёрку от Aikido, но живёт в том же коде: позволяет постороннему серверу публиковать посты и отправлять сообщения от имени любого локального аккаунта, включая администраторский. Работает только при включённой федерации, а исправленной версии в записи CVE пока не указано.
Отдельного упоминания заслуживает политика NodeBB по вознаграждениям за найденные баги: на странице программы прямо сказано, что отчёты, сгенерированные ИИ, к оплате не принимаются — платят только за работу, которую человек выполнил лично. Но это правило касается именно выплат, а не самого факта исправления. Восемь описанных уязвимостей были переданы напрямую разработчикам и залатаны вне зависимости от того, кто их обнаружил.
NodeBB далеко не единственный проект, столкнувшийся с находками ИИ-пентестеров. В июне платформа автоматизации n8n закрыла уязвимость входа в систему, найденную другим ИИ-агентом для тестирования безопасности. Джулиан Лэм, сооснователь NodeBB, в анонсе релиза заметил, что валидные отчёты о безопасности поступали стабильно в течение месяца, «хотя почти все — обнаруженные и составленные ИИ».
Если присмотреться ко всем восьми проблемам сразу, вырисовывается общий шаблон: NodeBB проверяла личность и права пользователя на основном пути к функции, но пропускала эту проверку на обходном маршруте, который вёл к тому же самому месту.
Первая находка выглядит почти оскорбительно простой. Обычный участник форума мог зайти в настройки и указать в качестве домашней страницы адрес админ-панели. После перезагрузки страницы перед ним открывалась панель администратора — без пароля, без какого-либо кода для взлома, просто через смену одной настройки. Вторая уязвимость примыкает к первой: интерфейс форума вроде бы блокировал такую подмену адреса, но делал это только на стороне браузера, и блокировку легко обходили. Правда, большая часть данных, до которых так можно было добраться, оказывалась доступна лишь для чтения — журнал ошибок, экспортированные списки пользователей. Зато логотип сайта злоумышленник вполне мог поменять.
Третья и четвёртая уязвимости не требовали вообще никакой учётной записи. Одна позволяла кому угодно выдать себя за любого пользователя и читать его личные сообщения — по одному за раз, но читать. Другая отдавала содержимое приватных категорий форума всякому, кто правильно оформил запрос — опять же безо всякой авторизации.
Пятая дыра оказалась самой опасной по охвату. Корень проблемы крылся в том, как NodeBB собирает страницу: сначала формируется содержимое, а затем происходит второй проход — движок подставляет переводы текста. К моменту этого второго прохода пользовательский ввод уже находится на странице, и атакующий мог протащить туда код, который система как раз ищет на этом этапе. В результате вредоносную ссылку получалось разместить почти где угодно на сайте, включая обычные посты на форуме. Достаточно было, чтобы кто-то кликнул по такой ссылке — и код атакующего выполнялся в браузере жертвы.
Шестая уязвимость позволяла перехватить чужой уже существующий пост. Седьмая — накрутить количество голосов под постом. А восьмая пара уязвимостей эксплуатировала связь NodeBB с федивёрсом — сетью связанных социальных платформ вроде Mastodon: через поддельный сервер в этой сети злоумышленник внедрял вредоносный код.
Если смотреть на риск в целом, три из восьми уязвимостей не требовали вообще никакой учётной записи на форуме-жертве, две работали при наличии обычного аккаунта участника, а для эксплуатации ещё трёх жертву нужно было заставить кликнуть по ссылке или открыть страницу. По подсчётам издания The Hacker News, пять из восьми проблем сидели в коде федерации — том самом, что связывает форум с Mastodon и другими платформами. Здесь важна деталь: на свежих установках четвёртой версии NodeBB федерация включена по умолчанию, так что новые форумы оказывались уязвимы по всем восьми пунктам. А вот форумы, обновившиеся с третьей версии, получали федерацию отключённой по умолчанию — там актуальными оставались только три уязвимости, не связанные с этой функцией, если только администратор сам не включил федерацию вручную.
Ни Aikido, ни сама NodeBB не присвоили этим восьми проблемам конкретные баллы серьёзности по стандартным шкалам. Зато можно ориентироваться на собственную шкалу NodeBB для программы bug bounty: там межсайтовый скриптинг и захват аккаунта числятся как «высокий» уровень, а получение админского доступа — как «критический».
История с патчами получилась запутанной. NodeBB чинила проблемы по частям, без лишнего шума: в мае закрыли четыре уязвимости, в июне — ещё две, а 9 июля вышла самая крупная правка — переработка того, как программа обрабатывает текст на страницах, затронувшая 325 файлов и вошедшая в версию 4.14.0. При этом в материалах Aikido утверждается, будто проблемы закрыли в начале июля — это не совпадает с реальной хронологией релизов. Более того, ссылка Aikido на исправление админ-панели ведёт на изменение из января 2024 года — то есть за два года до самого исследования, тогда как в релиз-заметках NodeBB это же исправление фигурирует под маем нынешнего года. Ни та, ни другая сторона это расхождение не объяснила.
Администраторам форумов стоит обновиться до версии 4.14.2, вышедшей 23 июля. Стоит учитывать, что версия 4.14.0 поменяла механизм обработки текста в шаблонах страниц, так что кастомные темы и плагины могут потребовать доработки. Отключение федерации не решает проблему целиком — три из восьми уязвимостей к ней вообще не относятся.
Ни одна из восьми найденных уязвимостей не получила номер CVE, и сообщений об атаках, использующих их, пока не поступало. Зато отдельная уязвимость в той же федерационной части NodeBB такой номер имеет — CVE-2026-58593, зарегистрирована 1 июля. Она не входит в восьмёрку от Aikido, но живёт в том же коде: позволяет постороннему серверу публиковать посты и отправлять сообщения от имени любого локального аккаунта, включая администраторский. Работает только при включённой федерации, а исправленной версии в записи CVE пока не указано.
Отдельного упоминания заслуживает политика NodeBB по вознаграждениям за найденные баги: на странице программы прямо сказано, что отчёты, сгенерированные ИИ, к оплате не принимаются — платят только за работу, которую человек выполнил лично. Но это правило касается именно выплат, а не самого факта исправления. Восемь описанных уязвимостей были переданы напрямую разработчикам и залатаны вне зависимости от того, кто их обнаружил.
NodeBB далеко не единственный проект, столкнувшийся с находками ИИ-пентестеров. В июне платформа автоматизации n8n закрыла уязвимость входа в систему, найденную другим ИИ-агентом для тестирования безопасности. Джулиан Лэм, сооснователь NodeBB, в анонсе релиза заметил, что валидные отчёты о безопасности поступали стабильно в течение месяца, «хотя почти все — обнаруженные и составленные ИИ».
Если присмотреться ко всем восьми проблемам сразу, вырисовывается общий шаблон: NodeBB проверяла личность и права пользователя на основном пути к функции, но пропускала эту проверку на обходном маршруте, который вёл к тому же самому месту.