Инструкции в подсказке заставляют агента MaxKB выполнять команды на хосте

MaxKB

MaxKB, платформа для сборки чат-ботов и ассистентов на базе моделей искусственного интеллекта, передаёт команды операционной системы на исполнение, если модель получает подходящий текст. Уязвимость CVE-2026-77521 затрагивает сборки до 2.10.3-lts включительно. Для публичных ассистентов, доступных без входа в систему, оценка по шкале CVSS v3.1 доходит до 10.0. Исправление вошло в версию 2.10.5-lts.

Уязвимость CVE-2026-77521

Проблема проявляется не в каждой конфигурации. Обычный чат без подключённых инструментов работает в отдельном режиме и до агентской логики не доходит. Картина меняется, когда к ассистенту добавляют инструмент, навык или вложенное приложение. Тогда разговор начинает обрабатывать агент, собранный на библиотеке deepagents. Вместе с ним в сборку попадает компонент SandboxShellBackend - серверная часть, отвечающая за запуск команд в изолированной среде.

Отдельный случай - интеграции по протоколу MCP (Model Context Protocol, способ подключения внешних сервисов к модели). Они ведут туда же. Этот компонент автоматически выдаёт модели инструмент запуска команд в командной оболочке (shell, интерфейс для работы с операционной системой текстовыми командами). Разработчики MaxKB его не исключили. Механизм подтверждения человеком настроен только на действия с файлами: запись, чтение, правку. Запуск команд под этот контроль не попал. Значит, модели достаточно текста, который она воспримет как указание.

Так открывается путь для внедрения инструкций в подсказку. Специалисты Lasso Security выяснили, что сложная атака здесь не нужна. Во время проверки простые служебные просьбы заставили агента выполнить команды сбора сведений о системе и записать результат в файл. Модель отказалась лишь тогда, когда в имени файла прямо намекали на проверку уязвимости. Есть и второй сценарий. Ассистенту не обязательно общаться с атакующим напрямую. Достаточно документа, который он обработает при поиске по базе знаний (подход retrieval-augmented generation, при котором модель дополняет ответ фрагментами из загруженных источников). Внедрённая в такой документ инструкция срабатывает так же надёжно.

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

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

Картину усугубляет отсутствие директивы USER в образе. Контейнер стартует с идентификатором 0 и работает от имени суперпользователя. Из-за этого любая попытка выйти за пределы песочницы даёт максимальные права. По совокупности причин проблему отнесли к трём категориям: внедрение команд операционной системы, работа с лишними привилегиями и открытая доступность опасной функции.

Первое, что нужно сделать администраторам, - обновиться до версии 2.10.5-lts или более поздней. Затем пересмотрите всех ассистентов, к которым подключены инструменты, интеграции MCP, навыки или вложенные приложения. Отдельно проверьте публичные боты: писать в них может любой желающий без авторизации, и именно они дают максимальную оценку риска.

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

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

Ссылки

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