- Автор темы
- #1
Исследователи предупреждают о критической уязвимости CVE-2026-48710, которая была обнаружена в опенсорсном фреймворке Starlette и получила название BadHost. Поскольку Starlette лежит в основе FastAPI и множества популярных ИИ-инструментов, проблема создает риски для миллионов серверов и ИИ-агентов, а эксплуатация бага сводится к одному символу в HTTP-заголовке Host.
Starlette представляет собой реализацию ASGI (Asynchronous Server Gateway Interface), используемую для обработки большого числа одновременных запросов. Согласно данным разработчиков проекта, пакет скачивают около 325 млн раз в неделю.
Проблему обнаружили специалисты X41 D-Sec, а исследователи Secwest дали ей имя BadHost. Хотя уязвимость набрала только 7 баллов по шкале CVSS, специалисты считают эту оценку заниженной и называют проблему критической.
Помимо FastAPI, уязвимость затрагивает vLLM, LiteLLM, MCP-серверы, OpenAI-совместимые прокси, различные среды выполнения ИИ-агентов, панели оценки моделей и другие инструменты ИИ-экосистемы.
Уязвимость связана с тем, как Starlette до версии 1.0.1 собирает объект request.url. Фреймворк берет значение из HTTP-заголовка Host, добавляет к нему путь из запроса и не проверяет, что сам Host валиден. Из-за этого атакующий может передать в Host не только домен, но и фрагмент пути.
Например, запрос может идти на защищенный эндпоинт /protected, но из-за заголовка вида Host: example.com/health?x= Starlette соберет URL таким образом, что request.url.path будет выглядеть как /health. При этом роутинг все равно сработает по настоящему HTTP-пути — /protected.
Если приложение или промежуточное ПО принимает решения об авторизации на основе request.url.path, а не посредством scope["path"], проверка может «увидеть» якобы безопасный путь и пропустить запрос дальше. В результате атакующий сможет обойти механизм авторизации, который опирается на путь запроса.
По словам исследователей, уязвимость позволяет обходить аутентификацию, проводить SSRF-атаки, а в некоторых случаях даже может привести к удаленному выполнению кода.
Особенно опасной специалисты считают ситуацию с MCP-серверами (Model Context Protocol), которые дают ИИ-агентам доступ к внешним системам: почте, календарям, корпоративным сервисам, облачным хранилищам и внутренним базам данных. Такие серверы обычно хранят API-ключи, токены и учетные данные для сторонних сервисов, что делает их крайне привлекательной целью для злоумышленников.
Исследователь X41 D-Sec Маркус Вервир (Markus Vervier) сообщил СМИ, что во время сканирования уязвимых систем уже удалось обнаружить доступ к самым разным данным и инфраструктурам. Среди них:
X41 D-Sec совместно со специалистами компании Nemesis уже запустили онлайн-сканер для проверки серверов на уязвимость перед проблемой BadHost. Исследователи рекомендуют срочно обновить Starlette, а владельцам FastAPI-, LiteLLM- и vLLM-инфраструктуры — проверить свои системы на наличие уязвимых компонентов.
Starlette представляет собой реализацию ASGI (Asynchronous Server Gateway Interface), используемую для обработки большого числа одновременных запросов. Согласно данным разработчиков проекта, пакет скачивают около 325 млн раз в неделю.
Проблему обнаружили специалисты X41 D-Sec, а исследователи Secwest дали ей имя BadHost. Хотя уязвимость набрала только 7 баллов по шкале CVSS, специалисты считают эту оценку заниженной и называют проблему критической.
Помимо FastAPI, уязвимость затрагивает vLLM, LiteLLM, MCP-серверы, OpenAI-совместимые прокси, различные среды выполнения ИИ-агентов, панели оценки моделей и другие инструменты ИИ-экосистемы.
Уязвимость связана с тем, как Starlette до версии 1.0.1 собирает объект request.url. Фреймворк берет значение из HTTP-заголовка Host, добавляет к нему путь из запроса и не проверяет, что сам Host валиден. Из-за этого атакующий может передать в Host не только домен, но и фрагмент пути.
Например, запрос может идти на защищенный эндпоинт /protected, но из-за заголовка вида Host: example.com/health?x= Starlette соберет URL таким образом, что request.url.path будет выглядеть как /health. При этом роутинг все равно сработает по настоящему HTTP-пути — /protected.
Если приложение или промежуточное ПО принимает решения об авторизации на основе request.url.path, а не посредством scope["path"], проверка может «увидеть» якобы безопасный путь и пропустить запрос дальше. В результате атакующий сможет обойти механизм авторизации, который опирается на путь запроса.
По словам исследователей, уязвимость позволяет обходить аутентификацию, проводить SSRF-атаки, а в некоторых случаях даже может привести к удаленному выполнению кода.
Особенно опасной специалисты считают ситуацию с MCP-серверами (Model Context Protocol), которые дают ИИ-агентам доступ к внешним системам: почте, календарям, корпоративным сервисам, облачным хранилищам и внутренним базам данных. Такие серверы обычно хранят API-ключи, токены и учетные данные для сторонних сервисов, что делает их крайне привлекательной целью для злоумышленников.
Исследователь X41 D-Sec Маркус Вервир (Markus Vervier) сообщил СМИ, что во время сканирования уязвимых систем уже удалось обнаружить доступ к самым разным данным и инфраструктурам. Среди них:
- клинические базы данных и M&A-документы биофармацевтических компаний;
- системы верификации личности с PII и кодовыми базами;
- IoT- и промышленные системы с SSH-доступом;
- почтовые сервисы и SaaS-платформы;
- HR-системы с персональными данными кандидатов;
- облачные мониторинговые платформы с данными AWS;
- системы документооборота;
- ИБ-инфраструктура с доступом к сканерам Nuclei и реестрам активов.
X41 D-Sec совместно со специалистами компании Nemesis уже запустили онлайн-сканер для проверки серверов на уязвимость перед проблемой BadHost. Исследователи рекомендуют срочно обновить Starlette, а владельцам FastAPI-, LiteLLM- и vLLM-инфраструктуры — проверить свои системы на наличие уязвимых компонентов.
