آسیبپذیری بحرانی BadHost در Starlette؛ دور زدن احراز هویت
خلاصهٔ کاملتر
یک آسیبپذیری بحرانی، میلیونها ایجنت و ابزار هوش مصنوعی را در معرض خطر قرار داده. این نقص در Starlette است؛ فریمورک متنباز پایتون که به گفتهی توسعهدهندهاش هفتهای ۳۲۵ میلیون دانلود داره و پیادهسازی ASGI و پایهی FastAPI و بسیاری فریمورک دیگه است. هزاران پروژهی دیگه هم چون به Starlette نیاز دارن، آسیبپذیرن.
ریشهی مشکل یک ناهماهنگی در تفسیر درخواست HTTP است: Starlette آدرس درخواست را بر اساس هدر Host و مسیر بازسازی میکنه اما هدر Host را اعتبارسنجی نمیکنه. این اجازه میده مهاجم مسیر را داخل بخش host تزریق کنه. از طرفی مسیریابی Starlette بر اساس مسیر واقعی درخواسته، اما request.url.path که در اختیار middleware و endpointها قرار میگیره بر اساس URL بازسازیشده است. وقتی احراز هویت به این مسیر بازسازیشده تکیه کنه، با یک کاراکتر تزریقشده در هدر Host دور زده میشه.
این نقص که با نام BadHost و شناسهی CVE-2026-48710 ردیابی میشه، بسیار ساده قابلبهرهبرداریه و علیه بیشتر سیستمهایی که پشت فایروال درست پیکربندیشده نیستن کار میکنه. علاوه بر FastAPI، بستههای پرکاربردی مثل vLLM (که باگ آنجا کشف شد)، LiteLLM، Text Generation Inference، بیشتر پراکسیهای سازگار با OpenAI و سرورهای MCP هم متأثرن.
خطر برای سرورهای MCP جدیتره، چون این سرورها برای اتصال به منابع بیرونی (دیتابیس کاربر، ایمیل، تقویم) اعتبارنامه ذخیره میکنن و به انبار ارزشمندی برای مهاجم تبدیل میشن. اسکنها دادههای افشاشدهای از دیتابیس کارآزمایی بالینی تا دسترسی SSH به دستگاههای صنعتی و خواندن/ارسال کامل ایمیل را نشون دادهان؛ در برخی موارد SSRF و حتی اجرای کد از راه دور ممکنه. BadHost در Starlette نسخهی ۱.۰.۱ (منتشرشده جمعه) وصله شد و یک اسکنر آنلاین هم برای بررسی سرورها در دسترسه.
نکات کلیدی:
- یک کاراکتر در هدر HTTP Host، احراز هویت مبتنی بر مسیر در Starlette را دور میزنه
- پایهی FastAPI، vLLM، LiteLLM و سرورهای MCP؛ هفتهای ۳۲۵ میلیون دانلود
- علت: تفاوت request.url.path با مسیر واقعی درخواستشده
- وصله در نسخهی ۱.۰.۱؛ کاربران FastAPI/vLLM/LiteLLM فوراً اسکن و ارتقا بدن




