Критическая уязвимость, получившая название BadHost и идентификатор CVE-2026-48710, обнаружена в веб-фреймворке Starlette. Она открывает доступ к атакам на тысячи приложений с искусственным интеллектом и API-сервисов. Проблему выявила компания X41 D-Sec в ходе аудита безопасности, организованного организацией OSTIF. Суть уязвимости заключается в том, что злоумышленники могут манипулировать обработкой входящих запросов на сервере. Это позволяет обходить механизмы аутентификации и получать несанкционированный доступ к защищённым конечным точкам.
Поскольку Starlette широко используется как основа для FastAPI и других современных Python-сервисов с AI, влияние этой уязвимости на экосистему искусственного интеллекта очень велико. Давайте разберёмся, в чём именно проблема.
Корень уязвимости
Причина кроется в том, как старые версии Starlette обрабатывают HTTP-заголовок Host. Фреймворк формирует объект request.url напрямую из значения этого заголовка, который поступает от пользователя, без должной очистки. Такое небезопасное поведение позволяет атакующему создать вредоносный запрос, меняющий интерпретацию пути в request.url. В результате приложение ошибочно воспринимает защищённые маршруты как легитимные.
Это значит, что промежуточное программное обеспечение аутентификации, основанное на пути запроса (path-based authentication middleware), которое часто используется для ограничения доступа к административным или внутренним API, можно обойти без каких-либо учётных данных. Уязвимость не требует аутентификации для эксплуатации, что повышает её серьёзность.
Кого это касается
Проблема затрагивает прежде всего AI-инфраструктуру, которая сильно зависит от FastAPI и Starlette. В зону риска попадают широко используемые серверы для вывода моделей, такие как vLLM и LiteLLM, серверы протокола MCP (Model Context Protocol - протокол контекста модели), API, совместимые с OpenAI, а также различные фреймворки для создания AI-агентов. Во многих развёртываниях чувствительные конечные точки защищены только проверкой URL-пути. Именно такие системы особенно уязвимы перед данной манипуляцией.
Атакующие, эксплуатирующие BadHost, могут получить доступ к ограниченным AI-моделям, извлечь конфиденциальные данные промптов или использовать вычислительные ресурсы для несанкционированных задач. Исследователи безопасности предупреждают: эксплуатация этой уязвимости относительно проста и не требует аутентификации.
Как это работает на практике
В реальном сценарии атаки специально сформированный заголовок Host заставляет серверные службы неправильно интерпретировать запросы. В результате открываются скрытые или внутренние конечные точки, которые никогда не предназначались для публичного доступа. Более того, это может способствовать латеральному перемещению внутри AI-сред, особенно если сегментация инфраструктуры выполнена слабо.
Представьте: злоумышленник отправляет запрос к серверу, но подставляет в заголовок Host значение, которое изменяет воспринимаемый путь. Система считает, что запрос идёт к разрешённому ресурсу, хотя на самом деле он направлен к административной панели. Аутентификация не срабатывает, потому что проверка пути не видит подмены.
Что делать для защиты
Разработчикам и организациям настоятельно рекомендуется обновить Starlette до версии 1.0.1 или более новой - в ней уже содержится исправление. Кроме того, стоит внедрить строгую проверку заголовка Host как на уровне приложения, так и на уровне обратного прокси. Это поможет снизить риски.
Специалистам по безопасности также следует отказаться от использования только аутентификации на основе пути и перейти к многослойным механизмам проверки. Автоматизированные средства сканирования, например инструменты от Nemesis, способны выявить открытые AI-конечные точки и уязвимые развёртывания во всей инфраструктуре.
Уязвимость BadHost наглядно демонстрирует, как традиционные проблемы веб-приложений пересекаются с современными AI-системами. Поскольку инфраструктура искусственного интеллекта продолжает быстро масштабироваться, даже небольшие ошибки в обработке запросов могут привести к серьёзным последствиям. Своевременное обновление и надёжная проверка входных данных становятся критически важными.
В итоге можно сказать: эта история - ещё один сигнал о том, что безопасность AI не должна сводиться только к защите моделей. Фреймворки, на которых они построены, тоже требуют пристального внимания. И BadHost - далеко не последняя уязвимость такого рода.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-48710
- https://badhost.org/
- https://github.com/pypa/advisory-database/tree/main/vulns/starlette/PYSEC-2026-161.yaml
- https://github.com/Kludex/starlette/security/advisories/GHSA-86qp-5c8j-p5mr
- https://github.com/Kludex/starlette/commit/764dab0dcfb9033d75442d7a359645c9f94648c6
- https://www.x41-dsec.de/lab/advisories/x41-2026-002-starlette