
Starlette неправильно восстанавливает адрес запроса: фреймворк собирает URL из пути и содержимого заголовка Host, не проверяя корректность его значения. Добавление специальных символов в Host позволяет фактически подменить путь запроса в обработчике приложения.
Маршрутизация использует реальный HTTP-путь, тогда как часть защитных механизмов опирается на request.url.path, который строится из уже изменённого URL. На практике это позволяет обойти защиту панели администратора: запрос к /admin возвращал 403, но символ «?» в заголовке Host открывал доступ к закрытому разделу.
Уязвимость CVE-2026-48710 с оценкой CVSS 6.5 Medium затрагивает версии 0.8.3–1.0.0 и все популярные ASGI-серверы при использовании request.url.path. Исправление вышло в версии 1.0.1, а до обновления рекомендуется использовать request.scope["path"] и проверять заголовок Host на уровне обратного прокси.