Критическая уязвимость в Code Runner MCP Server: отсутствие аутентификации открывает доступ к удалённому выполнению кода

vulnerability

Пятого мая 2026 года в реестре Common Vulnerabilities and Exposure была опубликована информация об уязвимости CVE-2026-5029, затрагивающей Code Runner MCP Server. Речь идёт о продукте, который используется разработчиками для выполнения произвольного исходного кода в среде на основе протокола MCP (Model Context Protocol) - специализированного протокола для контекстного взаимодействия с моделями искусственного интеллекта. Проблема получила высокий уровень опасности по шкале CVSS (Common Vulnerability Scoring System, стандарт оценки критичности уязвимостей) - 8,7 балла из десяти возможных. Важно подчеркнуть, что на момент публикации патча не существует, а уязвимость затрагивает все версии продукта без исключения.

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

Суть проблемы заключается в ошибке конфигурации или, точнее, в отсутствии механизмов проверки подлинности при запуске сервера с ключом "--transport http". В этом режиме работы на порту 3088 открывается конечная точка JSON-RPC (протокол удалённого вызова процедур, использующий формат JSON для передачи данных) по пути /mcp. Злоумышленник, который находится в пределах досягаемости этой конечной точки, может без каких-либо учётных данных отправить запрос на вызов инструмента run-code. Этот инструмент предназначен для выполнения кода, переданного пользователем, через системную функцию "child_process.exec()" с применением указанного интерпретатора языка программирования. Итогом становится возможность исполнить произвольный код с правами того пользователя, под которым запущен сервер.

Чтобы стало понятнее, почему эта ситуация вызывает беспокойство, стоит разобрать механизм эксплуатации. Допустим, сервер работает на машине разработчика или в инфраструктуре компании, где он интегрирован с другими программными средствами. Злоумышленник, получив доступ к порту 3088, может отправить HTTP-запрос, минуя любые формы аутентификации. В теле запроса он укажет вредоносную полезную нагрузку, которая будет выполнена на стороне сервера. Поскольку функция "child_process.exec()" не ограничивает набор допустимых команд, атака может включать в себя загрузку программ-вымогателей, кражу учётных данных, установку бэкдора или полное уничтожение данных на диске. Всё зависит лишь от фантазии и целей нападающего.

Обратимся к классификации. Согласно описанию CWE, данная уязвимость относится к типу CWE-306, который обозначает отсутствие аутентификации для критических функций. Действительно, в данном случае налицо вопиющий пробел в дизайне: инструмент run-code, способный выполнять произвольные команды, не защищён никаким барьером. Если бы разработчики добавили проверку токена или базовую HTTP-аутентификацию, проблема была бы решена на корню. Однако в текущей реализации любой, кто знает IP-адрес сервера и номер порта, может стать полноправным хозяином системы.

Примечательно, что уязвимость не была исправлена в течение длительного времени. Судя по данным реестра, версия 0 продукта уже содержит эту проблему. Неизвестно, ведётся ли работа над патчем, но сам факт отсутствия исправления на момент публикации настораживает. Особенно учитывая, что продукт относится к категории открытого программного обеспечения (open-source), а значит, сообщество разработчиков могло бы оперативно отреагировать. Однако пока пользователям остаётся полагаться только на собственные меры защиты.

Какие последствия может повлечь успешная атака?

В первую очередь - полный компрометация сервера. Злоумышленник получает доступ ко всем файлам, процессам и сетевым соединениям, которые доступны учётной записи, запустившей сервер. Если сервер работает с повышенными привилегиями (что встречается нередко), ущерб может быть катастрофическим. Возможна утечка исходного кода проектов, баз данных, ключей шифрования и прочей конфиденциальной информации. Кроме того, скомпрометированный сервер может стать точкой входа в корпоративную сеть, позволяя злоумышленнику двигаться дальше к другим целям.

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

Специалистам по информационной безопасности стоит немедленно провести аудит своих систем на предмет использования Code Runner MCP Server. Если сервер запущен с опцией "--transport http", необходимо либо отключить этот режим, либо перевести взаимодействие на защищённые протоколы. Кроме того, обязательным требованием становится размещение сервера за сетевым экраном, который блокирует доступ к порту 3088 из внешних сетей. В идеале следует ограничить доступ к этому порту только с доверенных IP-адресов, используя списки контроля доступа. Ещё одной мерой может стать запуск сервера от учётной записи с минимальными привилегиями, чтобы даже в случае компрометации злоумышленник не смог нанести значительного ущерба.

Подводя итог, можно сказать, что уязвимость CVE-2026-5029 является ярким примером того, как одна ошибка в конфигурации - отсутствие аутентификации для критического инструмента - превращает полезный продукт в опасное оружие. На фоне растущей популярности MCP-протоколов и средств автоматизации разработки такие инциденты должны заставить сообщество пересмотреть подходы к безопасности проектов с открытым исходным кодом. Пока патча нет, единственным выходом остаётся ручная настройка защиты и надежда на то, что разработчики оперативно выпустят исправление. В противном случае, количество успешных атак с использованием этой уязвимости может значительно возрасти.

Ссылки

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