Миллионы агентов и инструментов на базе ИИ по всему миру оказались под угрозой из-за критической уязвимости, которая может позволить хакерам взломать серверы, на которых они работают, и похитить конфиденциальные данные и учетные данные для доступа к сторонним аккаунтам, предупреждает исследователь в области безопасности.
Уязвимость присутствует в Starlette — фреймворке с открытым исходным кодом, который, по словам его разработчика, загружается 325 миллионов раз в неделю. Тысячи других проектов с открытым исходным кодом также уязвимы, поскольку для их работы требуется Starlette. Этот фреймворк является реализацией ASGI (asynchronous server gateway interface), которая позволяет эффективно обрабатывать большое количество запросов одновременно. Starlette лежит в основе FastAPI и других широко используемых фреймворков для создания сервисов в Python-приложениях, а также многих других.
Легко эксплуатировать, миллионы серверов под ударом
ASGI, а следовательно и Starlette, имеют доступ к серверам, работающим по MCP (model context protocol), который позволяет агентам ИИ от крупных провайдеров получать доступ к внешним источникам, включая базы данных пользователей, аккаунты электронной почты и календари, а также всевозможные другие ресурсы. Для подключения к этим внешним системам серверы MCP хранят учетные данные для каждой из них, что делает их особенно ценными хранилищами для взлома злоумышленниками.
Уязвимость, отслеживаемая как CVE-2026-48710 и известная под именем BadHost, тривиальна в эксплуатации и работает против большинства систем, не защищенных должным образом настроенным файрволом. Помимо FastAPI, затронуты и другие широко используемые пакеты, включая vLLM и LiteLLM. BadHost затрагивает версии Starlette до 1.0.1, выпущенной в пятницу.
«Один символ, внедренный в заголовок HTTP Host, обходит авторизацию на основе путей в Starlette, ядре маршрутизации FastAPI», — написали исследователи из Secwest. «Через FastAPI этот примитив (теперь отслеживаемый как CVE-2026-48710 и названный обнаружившими его BadHost) достигает большого сегмента экосистемы инструментов ИИ на Python: vLLM (где был обнаружен баг), LiteLLM, Text Generation Inference, большинство прокси-заглушек OpenAI, серверы MCP, каркасы агентов, панели оценки (eval dashboards) и пользовательские интерфейсы управления моделями».
BadHost имеет рейтинг серьезности 7 из 10. Secwest заявила, что такая классификация «существенно недооценивает» угрозу, которую она представляет для пользователей других приложений, зависящих от Starlette. X41 D-Sec, фирма по безопасности, обнаружившая уязвимость, охарактеризовала ее как «критическую по серьезности». X41 D-Sec объединила усилия с фирмой безопасности Nemesis для создания онлайн-сканера, который может проверить, уязвим ли данный сервер.
,
Исследователь X41 D-Sec Маркус Вервье сообщил, что сканирование выявило следующие типы данных, которые в настоящее время подвергаются риску:
- Биофармацевтический ИИ – базы данных клинических испытаний, данные о слияниях и поглощениях (M&A), SSRF
- Проверка личности – анализ лиц, KYB, личные данные в реальном времени, внутренний исходный код
- IoT/Промышленность – SSH к устройствам через бастион, удаленное выполнение кода
- Электронная почта/SaaS – полное чтение/отправка/удаление почтовых ящиков, экспорт S3, веб-хуки
- HR/Рекрутинг – личные данные кандидатов, данные конвейера найма
- CMS/Маркетинг – списки подписчиков, отправка/планирование массовых email-кампаний
- Управление документами – чтение, загрузка, изменение отсканированных документов
- Облачный мониторинг – топология AWS, распределенные трассировки, запросы метрик
- Кибербезопасность – инвентаризация активов, доступ к сканеру Nuclei в реальном времени
- Личное здоровье/Финансы – журналы питания, расходы, подписки
Суть уязвимости заключается в том, что Starlette принимает недопустимые значения заголовка хоста, что заставляет приложения, использующие объект request.url Starlette для аутентификации, одобрять несанкционированные запросы на доступ. X41 D-Sec обнаружила, что аутентификация может быть обойдена во многих приложениях, которые полагаются на этот вызов. Кроме того, взломы могут привести к эксплойтам SSRF (server-side request forgery) и, в некоторых случаях, к удаленному выполнению кода. X41 D-Sec описала это так:
Starlette реконструирует запрошенный URL на основе заголовка запроса HTTP Host и запрошенного пути, но не выполняет никакой проверки значения заголовка Host. Это позволяет злоумышленникам внедрять пути в часть хоста, предваряя фактический путь. Однако маршрутизация в Starlette основана на фактическом пути запроса. Такая непоследовательная интерпретация HTTP-запросов может привести к таким проблемам, как обход аутентификации, когда аутентификация зависит от пути реконструированного URL. Starlette является основой для Python-фреймворка FastAPI.
Исследователи компании добавили: «Алгоритм маршрутизации Starlette зависит от пути HTTP, но атрибут request.url.path, который предоставляется промежуточному ПО (middlewares) и конечным точкам, основан на реконструированном URL. Для пользователей неожиданно, что request.url.path отличается от фактического пути, запрошенного по HTTP».
Разработчик Starlette не ответил немедленно на электронное письмо с просьбой подтвердить оценку и предоставить дополнительную информацию.
Поскольку уязвимые версии Starlette все еще широко используются в производственных системах, тем, кто полагается на любое приложение, зависящее от Starlette — особенно FastLLM, vLLM и LiteLLM — следует, как минимум, запустить сканер на своих системах, чтобы обнаружить, используется ли все еще уязвимый код Starlette. Дополнительные рекомендации по смягчению последствий приведены по ссылкам Nemesis и X41 D-Sec выше.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Dan Goodin




