Архивный материал перенесён без переписывания. Цифры и утверждения требуют актуальной сверки по ссылкам из исходной публикации.
Фундамент Python для AI-агентов вчера утёк через один символ в HTTP-заголовке.
Немецкая X41 D-Sec в аудите vLLM по гранту OSTIF нашла в Starlette уязвимость BadHost, CVE-2026-48710. Starlette это микропакет, который скачивают 325 миллионов раз в неделю.
На нём держится FastAPI, vLLM, LiteLLM, большинство MCP-серверов и любые обвязки агентов с проверкой прав по URL-пути.
Атака простая: подменяешь Host в заголовке, Starlette склеивает Host и path заново без валидации, проверка прав на пути пропускает в админский периметр. Один символ. Без эксплойта.
Патч вышел 21 мая, версия Starlette 1.0.1. Публичное раскрытие 22 мая. Сейчас открыт сканер на badhost.org. Что делать сегодня, если в команде есть самописный MCP или agent-шлюз:
pip show starlette, увидеть текущую версию. Меньше 1.0.1? обновить. Перед ASGI поставить Nginx или Caddy с явной проверкой Host. Перестать опираться на request.url.path в проверках прав. В FastAPI использовать только Depends и Security. Прогнать badhost.org-сканер по своим публичным эндпоинтам.
15 июня Anthropic вводит счётчик кредитов на программные режимы. Часть бизнесов решит уходить из управляемого окружения в самописный MCP, чтобы контролировать расход. Это нормальный ход. Но переезжать на стек, который сейчас в патч-марафоне, без аудита, это менять подписку на счёт за инциденты. Сначала аудит, потом миграция.
Источники и след
- 01 badhost.org Ссылка из исходной публикации
- 02 Оригинал в канале Under the Hood Происхождение / Telegram / сообщение 290