По словам исследователей, один некорректно сформированный символ в веб-запросе может позволить неаутентифицированному злоумышленнику обойти средства контроля доступа, защищающие приложения, созданные на базе Starlette — Python-фреймворка с открытым исходным кодом, на котором работает FastAPI.
Уязвимость, отслеживаемая как CVE-2026-48710, может позволить злоумышленникам обойти защиту проверки хоста, используя некорректно сформированные заголовки Host, согласно рекомендации фирмы по кибербезопасности X41 D-Sec.
Злоумышленнику не требуется ни пароль, ни какое-либо действие со стороны жертвы, говорится в сообщении.
Поддерживающий Starlette выпустил исправление через официальное уведомление о безопасности на GitHub после того, как X41 D-Sec раскрыла уязвимость в координации с Open Source Technology Improvement Fund (OSTIF). Они обнаружили ошибку во время несвязанного аудита исходного кода и проследили ее до Starlette, а не до проверяемого приложения.
«Эта ошибка — классический „разрыв ответственности“, когда, если бы поддерживающий не выпустил исправление, тысячам подверженных риску проектов пришлось бы индивидуально защищать свои разработки», — заявили в OSTIF.
Исследователи создали веб-сайт badhost.org, который может проверять веб-сайты на наличие этой уязвимости.
Использование ошибки
Ошибка заключается в том, как Starlette перестраивает адрес входящего запроса, по данным X41 D-Sec. Фреймворк объединяет заголовок Host, отправленный клиентом, с запрошенным путем для формирования полного URL-адреса, но анализирует целостность и части по разным правилам.
Заголовок Host, содержащий слэш, вопросительный знак или символ хеша, смещает начало пути, как заявили исследователи, поэтому путь, о котором сообщает Starlette, больше не соответствует тому, который фактически получил сервер.
Этот разрыв и представляет собой риск, по мнению фирмы. Starlette направляет запрос по реальному пути, но промежуточное ПО (middleware) и конечные точки считывают измененный путь. Приложение, которое ограничивает доступ к конфиденциальным маршрутам, проверяя видимый путь, может пропустить запрос, продолжая при этом выполнять защищенный маршрут за ним.
X41 D-Sec опубликовала демонстрацию вместе со своим уведомлением. Исследователи отправили запрос на защищенную административную страницу и получили ответ «403 Forbidden». Они отправили тот же запрос с одним дополнительным символом в заголовке Host, и страница вернула «200 OK». Та же закономерность проявилась и в других недавних уязвимостях обхода аутентификации в фреймворках ИИ с открытым исходным кодом.
Спор о рейтинге серьезности
Поддерживающий Starlette оценил уязвимость в 6,5 из 10, или «Умеренная», по шкале CVSS в уведомлении GitHub. X41 D-Sec оценила ее в 7,0, или «Высокая», и заявила, что опасность для программного обеспечения на базе Starlette выше, чем предполагают обе цифры.
Ущерб, который может нанести злоумышленник, зависит от того, что каждое приложение делает с подделанным путем. X41 D-Sec сообщила, что обнаружила несколько проектов с открытым исходным кодом, чьи проверки безопасности зависят от реконструированного адреса. В этих проектах ошибка с одним символом могла привести к цепочке событий от «обхода аутентификации до SSRF и других проблем, которые в некоторых случаях даже приводят к удаленному выполнению кода в затронутой системе», — написали исследователи.
Масштаб затрагивает далеко за пределами самого Starlette. В отдельном уведомлении фирмы по безопасности Secwest об этой ошибке говорится, что оценка «существенно занижает последующее воздействие», и предупреждается, что ошибка затрагивает «большую часть инфраструктуры для обслуживания моделей, шлюзов, прокси, eval, агентов и MCP-серверов, развернутой за последние два года».
Затронутое программное обеспечение включает инструменты для обслуживания моделей, API-шлюзы, прокси, совместимые с OpenAI, фреймворки агентов и серверы Model Context Protocol, созданные на базе FastAPI, по данным X41 D-Sec и Secwest.
Приложение может быть скомпрометировано, даже если его разработчики никогда не устанавливали Starlette, поскольку это мог сделать другой компонент, заявила X41 D-Sec. По данным фирмы, Starlette имеет более 400 000 зависимых проектов на GitHub.
Кто наиболее уязвим
Не каждый зависимый проект подвержен одинаковому риску, отметила X41 D-Sec. Возможность атаки на приложение зависит от его конфигурации. Разделительная линия — это обратный прокси-сервер: прокси, такой как nginx или Apache HTTP Server, отклоняет некорректный запрос до того, как он достигнет приложения, а производственные веб-сайты обычно находятся за таким уровнем. Исследовательские, оценочные и среды разработки для программного обеспечения ИИ часто не имеют такой защиты, и многие запускают сервер приложений, обращенный непосредственно к сети, говорится в сообщении.
По данным X41 D-Sec, наибольшему риску подвержены три группы: те, кто запускает приложение FastAPI или Starlette непосредственно на сервере приложений без соответствующего обратного прокси-сервера спереди; те, кто предоставляет прокси для моделей, такой как LiteLLM или vLLM, в качестве непосредственно доступной конечной точки; и те, чей код контроля доступа считывает реконструированный адрес запроса, а не исходный путь.
Исследователи посоветовали командам обновиться до Starlette 1.0.1 или более поздней версии, которая проверяет заголовок Host и отклоняет некорректные значения.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Gyana Swain




