OpenCode исправил выполнение кода через MCP-авторизацию в Windows

Разработчики OpenCode устранили критическую уязвимость в версии 1.18.33: вредоносный либо скомпрометированный MCP-сервер мог выполнить произвольный код на компьютере разработчика под Windows или в Windows Subsystem for Linux во время авторизации. По оценке Pillar Security, обнаружившей проблему, предлагаемая оценка серьёзности составляет 9,8 из 10. Под угрозой находятся сборки OpenCode с 1.0.137 по 1.18.32.
Как работала атака
OpenCode подключается к серверам MCP, чтобы дать ИИ-агенту доступ к внешним инструментам. При запуске авторизации сервер передаёт приложению OAuth authorization endpoint — веб-адрес, на который пользователя нужно направить для входа.
В Windows и WSL OpenCode передавал этот адрес вспомогательному компоненту для открытия браузера. Он формировал команду PowerShell без надлежащего экранирования адреса. Поэтому специально подготовленный authorization endpoint мог содержать команду PowerShell, которая выполнялась с правами самого разработчика.
Для эксплуатации недостаточно просто добавить MCP-сервер в конфигурацию или открыть сессию. Пользователь должен инициировать авторизацию, например командой opencode mcp auth или соответствующим запросом. При этом сервер необязательно должен быть вредоносным изначально: риск возникает и при последующем захвате сервера или смене владельца домена.
Почему проверка адреса не решала проблему
macOS и Linux не затронуты: в этих системах OpenCode открывает браузер без передачи адреса через оболочку. На Windows проблема была связана с используемым пакетом open. Риск внедрения команд в его Windows-механизм сообщался ещё в 2023 году и был исправлен в версии 11, однако OpenCode оставался на более старой версии.
Проверка схемы URL на HTTP или HTTPS в данном случае не была достаточной защитой. Атака могла использовать обычный HTTPS-адрес. Исправление было доставлено вместе с обновлением зависимости, хотя pull request описывался как рефакторинг кода запуска браузера, а в примечаниях к выпуску не упоминалась уязвимость.
Что проверить администраторам и разработчикам
Anomaly, компания-разработчик OpenCode, не запрашивала CVE и не выпускала отдельный бюллетень безопасности. Поэтому уязвимые установки не будут автоматически отмечены сканерами уязвимостей и оповещениями зависимостей. Версию OpenCode необходимо проверять напрямую.
Pillar Security сообщила, что не обнаружила признаков эксплуатации и не публиковала индикаторов компрометации. Проблема также не связана с раскрытым примерно в то же время инцидентом в размещаемой Console OpenCode, который мог затронуть сохранённые API-ключи OpenAI, Anthropic и Google.
Организациям, использующим OpenCode на Windows или WSL, следует обновиться до версии 1.18.33 или новее. До обновления стоит удалить из конфигурации непроверенные удалённые MCP-серверы и просмотреть подключённые серверы командой opencode mcp list. Отсутствие CVE в этом случае не снижает необходимость инвентаризации: ключевыми мерами остаются обновление клиента и проверка доверия к каждому настроенному MCP-серверу.

