В Ruflo нашли критическую уязвимость CVE-2026-59726: при стандартном развёртывании через docker-compose злоумышленник мог выполнять команды без аутентификации. Проблема затрагивает версии ниже 3.16.3 и опасна не только удалённым доступом к контейнеру, но и утечкой ключей к AI-сервисам.
Это уже история не про абстрактную «дыру в ИИ», а про вполне приземлённый DevOps-риск: сервис подняли с настройками по умолчанию, порт оказался доступен снаружи, дальше атакующему остаётся отправить запрос.
Проблема была в стандартной схеме развёртывания
Ruflo — open source-проект для оркестрации AI-агентов, ранее известный как Claude Flow. По описанию CVE, в штатном docker-compose уязвимый MCP-мост открывал эндпоинты POST /mcp и POST /mcp/:group без аутентификации.
Дополнительно конфигурация по умолчанию публиковала сервисы на всех сетевых интерфейсах. В релизе с исправлением разработчики отдельно предупредили операторов закрыть порты 3001 и 27017, если инстанс раньше был доступен из интернета.
Что именно мог сделать атакующий
По данным GitHub Advisory и NVD, атакующий мог вызвать цепочку tools/call → terminal_execute, получить оболочку внутри bridge-контейнера, прочитать ключи провайдеров из переменных окружения и вмешаться в хранилище AgentDB.
Речь не только о краже секретов. Разработчики Ruflo прямо пишут о риске «отравления» AgentDB: злоумышленник мог сохранить вредоносные шаблоны в learning store, чтобы они влияли на дальнейшую работу агентов уже после перезапуска. Параллельно нужно проверять и MongoDB на предмет подмены данных.
Оценка серьёзности тоже говорит сама за себя: GitHub присвоил проблеме 9,8 балла по CVSS 3.1, а в карточке NVD отображается CNA-оценка 10,0.
Как закрыли дыру в версии 3.16.3
В версии 3.16.3 MCP-мост теперь слушает только 127.0.0.1 по умолчанию. Если администратор всё же хочет открыть его наружу, Ruflo требует задать MCP_AUTH_TOKEN, иначе процесс не стартует.
Разработчики также добавили Bearer-аутентификацию, сделали выполнение terminal_execute опцией через MCP_ENABLE_TERMINAL=true, включили аутентификацию MongoDB по умолчанию и потребовали задать MONGO_INITDB_ROOT_PASSWORD при запуске.
Что проверить администраторам
Если Ruflo разворачивали в тестовом или рабочем контуре с конфигурацией по умолчанию, обновления до 3.16.3 мало. Нужно закрыть внешние порты, сменить ключи OPENAI, GOOGLE, OPENROUTER и ANTHROPIC, проверить AgentDB на внедрённые записи и отдельно просмотреть MongoDB на следы вмешательства.
Для команд из России и СНГ вывод простой: AI-инструменты всё чаще несут обычные инфраструктурные риски, только цена ошибки выше, потому что вместе с доступом к контейнеру утекают ещё и платные API-ключи.
Следующий шаг очевиден: после таких инцидентов проекты вокруг AI-агентов будут жёстче закрывать настройки по умолчанию, а безопасная публикация MCP-сервисов быстро станет обязательной, а не «на потом».
Источники: NVD, GitHub Advisory, релиз Ruflo 3.16.3.