Один неверный символ, добавленный в HTTP заголовок Host, позволяет неаутентифицированному злоумышленнику обойти все проверки авторизации на основе пути во фреймворке Starlette. В то время как официальный рейтинг CVSS v3.1 оценивает уязвимость как среднюю с 6.5 баллами, исследователи из X41 D Sec и Secwest утверждают...

Create a landscape editorial hero image for this Studio Global article: What is the CVE-2026-48710 "BadHost" vulnerability in the Starlette web framework, how does it allow attackers to bypass path-based authoriz. Article summary: ## Overview. Topic tags: general, general web, user generated. Reference image context from search candidates: Reference image 1: visual subject "A critical vulnerability tracked as **CVE-2026-48710** and nicknamed "BadHost" was disclosed in the **Starlette** ASGI framework, affecting all versions prior to **1.0.1**, sources" source context "Starlette Vulnerability Exposes AI Agent Endpoints | Let's Data Science" Reference image 2: visual subject "# Critical 'BadHost' Flaw in Starlette Exposes Millions of AI Agent Deployments to Auth Bypass. * CVE-2026-48710 ('BadHost') allows unauthenticated attackers to bypass path-based a" source context "Critical 'BadHost'
В основе современной Python-инфраструктуры для искусственного интеллекта лежит незаметный, но критически важный компонент — ASGI-фреймворк Starlette. На днях в нем была раскрыта уязвимость под идентификатором CVE-2026-48710, получившая звучное имя "BadHost". Ее опасность заключается в том, что она позволяет злоумышленнику обойти практически любую защиту, основанную на проверке пути (URL), просто добавив один специально подобранный символ в HTTP-заголовок Host .
Учитывая, что Starlette лежит в основе таких гигантов, как FastAPI, vLLM, LiteLLM и MCP-серверы (Model Context Protocol), последствия этой уязвимости затрагивают миллионы AI-агентов, API-серверов и сред выполнения моделей по всему миру.
Корень проблемы кроется в опасном несоответствии логики маршрутизации и авторизации внутри Starlette. Когда сервер получает HTTP-запрос, его маршрутизатор абсолютно верно определяет, к какому обработчику его направить, основываясь на исходной строке запроса. Но затем, когда в дело вступает промежуточное ПО (middleware) для проверки прав доступа, оно часто использует объект request.url. Starlette же восстанавливает этот URL заново, беря за основу заголовок Host, который полностью контролируется атакующим .
Представьте, что у вас есть защищенный эндпоинт /admin/secure. Злоумышленник отправляет POST-запрос на этот адрес, но в заголовке Host указывает не просто домен, а, например:
Host: legitimate.com/health?x=
Что происходит дальше? Маршрутизатор направляет запрос в /admin/secure. Но когда система авторизации проверяет request.url.path, она видит не /admin/secure, а /health. А поскольку эндпоинт /health часто используется для проверки работоспособности и открыт всем, защита молча пропускает злоумышленника. Ни пароль, ни токен, ни ключ API для этого не нужны .
Как подчеркнули в компании X41 D-Sec, обнаружившей уязвимость, для обмана сервера "достаточно вставить всего один символ в заголовок HTTP Host" . Речь идет о символах вроде
/, ? или #, которые Starlette ранее никак не проверял .
Масштаб проблемы колоссален. Starlette еженедельно скачивают около 325 миллионов раз . Практически каждый крупный проект на Python, связанный с AI, так или иначе от него зависит. Под ударом оказались все версии Starlette от 0.8.3 до 1.0.1
.
Вот лишь некоторые из затронутых систем:
Вокруг официальной оценки этой уязвимости разгорелась нешуточная дискуссия. Разные организации дали ей совершенно разные уровни критичности:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N) предполагает лишь низкое воздействие на конфиденциальность и целостность, а также неизменную область действия CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:NПочему же эксперты не согласны с оценкой "Средняя"? На то есть три веские причины:
Исправление уже выпущено. Версия Starlette 1.0.1, увидевшая свет 22 мая 2026 года, закрывает уязвимость. Информация о патче отслеживается в рекомендациях GitHub (GHSA-86qp-5c8j-p5mr) и X41 (X41-2026-002) .
Разработчики реализовали два ключевых механизма защиты:
request.url scope["server"]). Это гарантирует, что request.url.path всегда будет соответствовать фактическому пути запроса Создатели FastAPI уже подтвердили эффективность исправления и настоятельно рекомендуют немедленно обновить starlette до версии 1.0.1 или выше .
Обновление пакета Starlette — это первый и самый важный, но не единственный шаг. Для надежной защиты рекомендуется комплексный подход:
pip install --upgrade starlettestarlette>=1.0.1 в ваших файлах requirements.txt, pyproject.toml, poetry.lock и им подобных. Проверьте все окружения командой pip list | grep starletterequest.url.path. Первопричина проблемы — несоответствие пути маршрутизации и request.url.path. Везде, где возможно, перепишите логику авторизации на использование request.scope["path"], который берется из исходных данных ASGI-соединения и не может быть отравлен через заголовок Host. X41 D-Sec вообще рекомендует по возможности внедрять аутентификацию, не основанную на пути запроса Если ваши серверы работают на Debian, уязвимость CVE-2026-48710 отслеживается в Debian Security Tracker с пометкой "важная" (important). Для затронутых версий дистрибутива уже доступны соответствующие пакеты с исправлениями. Просто примените корректирующую транзакцию apt из репозитория bullseye-security (или вашего аналога) и перезагрузите затронутые службы .
Studio Global AI
Use this topic as a starting point for a fresh source-backed answer, then compare citations before you share it.
Один неверный символ, добавленный в HTTP заголовок Host, позволяет неаутентифицированному злоумышленнику обойти все проверки авторизации на основе пути во фреймворке Starlette.
Один неверный символ, добавленный в HTTP заголовок Host, позволяет неаутентифицированному злоумышленнику обойти все проверки авторизации на основе пути во фреймворке Starlette. В то время как официальный рейтинг CVSS v3.1 оценивает уязвимость как среднюю с 6.5 баллами, исследователи из X41 D Sec и Secwest утверждают, что это сильно преуменьшает реальную опасность, предоставляя злоумышленнику...
Исправление выпущено в версии Starlette 1.0.1, которая проводит валидацию заголовка Host в соответствии со стандартами RFC и предотвращает подмену пути.