BadHost: дыра в Starlette угрожает миллионам ИИ-агентов
Одна буква — и вся защита рухнула
Представьте: вы строите сложную систему ИИ-агентов, тщательно настраиваете авторизацию, выбираете проверенные фреймворки — и всё это рассыпается из-за одного символа в HTTP-заголовке. Именно так работает уязвимость BadHost, которая на этой неделе взорвала сообщество разработчиков Python и безопасников по всему миру. Это не теоретическая угроза в духе «когда-нибудь кто-нибудь может попробовать» — это уже активно эксплуатируемая дыра в одном из самых популярных open source пакетов планеты.
Что такое Starlette и почему это важно именно сейчас
Starlette — это ASGI-фреймворк для Python, который скачивают 325 миллионов раз в неделю. Для сравнения: это примерно как если бы каждый Python-разработчик на Земле скачивал его несколько раз в день. На его основе построен FastAPI — один из самых любимых инструментов для создания backend-сервисов в мире машинного обучения. Кроме него в зону риска попали vLLM, LiteLLM, Text Generation Inference, большинство OpenAI-совместимых прокси и — что особенно болезненно — серверы на базе MCP (Model Context Protocol).
MCP — это протокол, который позволяет ИИ-агентам от крупных провайдеров подключаться к внешним ресурсам: базам данных пользователей, почте, календарям, корпоративным системам. Грубо говоря, это «нервная система» современного агентного ИИ. И именно там хранятся учётные данные для всех этих подключений — настоящий Клондайк для злоумышленника.
Как это работает: элегантная простота атаки
Технически суть BadHost (CVE-2026-48710) выглядит почти издевательски просто. Starlette восстанавливает полный URL запроса на основе HTTP-заголовка Host и пути — но при этом никак не валидирует значение Host. Приложения, которые используют объект `request.url` для авторизации, получают на вход подделанные данные и радостно пропускают злоумышленника.
Один символ в заголовке — и path-based авторизация обходится полностью. Помимо этого, уязвимость открывает возможности для SSRF-атак (подделка запросов на стороне сервера) и в ряде конфигураций — для удалённого выполнения кода. Это уже не просто «утечка данных», это потенциальный полный захват сервера.
Исследователи из X41 D-Sec, которые обнаружили уязвимость, уже провели сканирование и зафиксировали реально открытые данные: клинические базы данных биофармацевтических компаний с данными об M&A-сделках, системы верификации личности с живыми биометрическими данными, SSH-доступ к промышленным IoT-устройствам, полный доступ к корпоративным почтовым ящикам вплоть до удаления писем, базы кандидатов HR-систем и даже доступ к AWS-топологии облачных инфраструктур.
Рейтинг 7/10 — это преступная скромность
Формально BadHost получила оценку 7 из 10 по шкале CVSS. Сами исследователи из Secwest прямо назвали эту классификацию «существенно занижающей реальную угрозу». X41 D-Sec присвоили ей статус критической — и я с ними согласен полностью.
Дело в том, что CVSS оценивает уязвимость в вакууме, без учёта экосистемного контекста. А здесь контекст — это миллионы MCP-серверов, которые сейчас разворачиваются с космической скоростью по всему миру на волне агентного ИИ-бума. Каждый такой сервер — это потенциально открытый сейф с ключами от десятков корпоративных систем.
Кто под ударом и что делать прямо сейчас
Если вы используете FastAPI, vLLM, LiteLLM или любой другой пакет, который тянет Starlette как зависимость — у вас проблема, если вы не обновились. Патч вышел в пятницу в версии Starlette 1.0.1. Обновление занимает минуты, откладывать его — значит осознанно рисковать.
X41 D-Sec совместно с Nemesis запустили онлайн-сканер для проверки конкретного сервера на уязвимость. Это хороший первый шаг, но не заменяет полноценный аудит конфигурации firewall. Серверы за корректно настроенным брандмауэром защищены лучше, но большинство дев-инстансов и стейджинг-окружений — нет, и именно там утечки случаются чаще всего.
Российский контекст: двойной удар
Для российских разработчиков и компаний ситуация имеет дополнительное измерение. Значительная часть отечественных ИИ-стартапов строит свои решения на FastAPI и vLLM — это де-факто стандарт индустрии, который не обходит стороной никакие географические границы. При этом многие команды работают в режиме «запустить быстро, разберёмся с безопасностью потом» — и BadHost — это именно тот сценарий, где такой подход оборачивается катастрофой.
Обновить Starlette можно без VPN и без зарубежных карт — PyPI работает в России в штатном режиме. Команда `pip install starlette --upgrade` решает проблему мгновенно. Нет ни одной причины тянуть.
Системная проблема глубже, чем один пакет
BadHost — это симптом более широкой болезни. Экосистема агентного ИИ развивается так стремительно, что security-аудит просто не успевает за скоростью внедрения. MCP-серверы разворачиваются тысячами в день, разработчики копируют примеры из документации и туториалов, не задумываясь о том, что авторизация через `request.url` в Starlette — это ловушка.
Антропик, OpenAI и другие крупные провайдеры активно продвигают MCP как стандарт агентного взаимодействия. Это правильно и неизбежно — но вместе с ростом экосистемы растёт и поверхность атаки. Индустрии нужен серьёзный разговор о том, как встраивать security-проверки прямо в процесс разработки агентных систем, а не добавлять их постфактум.
Patch сейчас. Аудит конфигураций — сегодня. Разговор с командой о security-гигиене в agenttic AI — на этой неделе.
Источники
Похожие новости
xAI запустила Grok Build — ИИ-агента для написания кода
Компания Илона Маска выпустила собственного помощника для разработчиков. Конкурент GitHub Copilot и Cursor обещает автономное решение задач.
Microsoft Webwright: терминал вместо браузера — и GPT-5.4 взлетает до 60%
Microsoft Research выпустила Webwright — агентный фреймворк, где ИИ пишет Playwright-скрипты вместо кликов. Результат: 60,1% на Odysseys против базовых 33,5% у GPT-5.4.
Claude Code сам придумал алгоритм ИИ, который люди не додумались бы
Исследователи дали агенту Claude Code свободу поиска — и он нашёл алгоритм, сокращающий вычисления на 70% при той же точности. Открытие обошлось в $40.