X41 D-Sec a divulgué CVE-2026-48710 — brandée BadHost — cette semaine, et l'arbre de dépendances c'est le headline. Starlette, l'implémentation ASGI qui underpin FastAPI, accepte des valeurs invalides de HTTP Host header sans validation, donc l'URL qu'il reconstruit (utilisée par le middleware et `request.url.path`) peut être made to differ du path réellement routé. Un seul caractère injecté dans le Host header bypass l'authorization path-based dans n'importe quelle app qui check `request.url`. Starlette ship 325 millions de downloads par semaine. Packages affectés nommés explicitement par les chercheurs : FastAPI, vLLM (où le bug a été originalement découvert), LiteLLM, Text Generation Inference, la plupart des proxies OpenAI-shim, serveurs MCP, harness d'agents, dashboards d'eval, UIs de model-management. CVSS 7/10 — Secwest note que ce rating "materially understates" le vrai risque ; X41 D-Sec le rate critical.
Le primitif d'exploit est trivial. Starlette reconstruit l'URL demandée à partir du Host header + path ; le routing dépend du path HTTP réel ; `request.url.path` utilise l'URL reconstruite. Quand l'authentification est gated sur `request.url.path`, les deux vues inconsistentes laissent un attaquant get le code d'authentification d'approuver une route qu'il ne devrait pas atteindre. Au-delà du bypass d'auth, le primitif enable du SSRF (server-side request forgery) et dans certaines configurations de l'exécution de code à distance. Marche contre la plupart des systèmes pas derrière un firewall correctement configuré pour filtrer les Host headers. Scanner : X41 D-Sec et Nemesis ont co-released un à mcp-scan.nemesis.services qui check n'importe quel serveur donné. Le fix c'est Starlette 1.0.1 (sorti vendredi) — chaque framework downstream doit bump.
Le blast radius du scan initial c'est la partie que les builders devraient lire avant lundi. X41 D-Sec a trouvé des instances live exposées s'étendant à : databases de clinical trial biopharma et données M&A avec SSRF ; stacks d'identity verification avec analyse facial, KYB, PII et accès au codebase interne ; systèmes IoT/Industrial avec SSH-via-bastion et exécution de code à distance ; lecture/envoi/suppression complète de mailbox et export S3 ; pipelines HR avec PII de candidats ; CMS/marketing avec listes d'abonnés et envoi/scheduling de mass-email ; document management avec lecture/upload/modification sur documents scannés ; cloud monitoring avec topologie AWS et queries de métriques ; outils cybersécurité incluant accès live au scanner Nuclei ; données personal health/finance incluant nutrition, dépenses et abonnements. Les serveurs MCP sont particulièrement valuables parce qu'ils tiennent des credentials pour *chaque* système externe à quoi l'agent est wired — single breach, blast radius multi-system.
Lundi matin : si tu shippes quoi que ce soit par-dessus FastAPI, vLLM, LiteLLM, TGI, un serveur MCP, ou n'importe quel proxy OpenAI-shim, pin Starlette à 1.0.1+ immédiatement. La forme du path de patch c'est `pip install --upgrade starlette` (ou ton équivalent) suivi d'un restart de service. Roule mcp-scan.nemesis.services contre tes endpoints avant que tu te couches ce soir — c'est gratuit, prend un seul URL. Si ton infrastructure d'agent expose des serveurs MCP à l'internet, audit la couche credential vault séparément : n'importe quels credentials que ces serveurs tenaient en mémoire devraient être considérés potentiellement compromis sur n'importe quel host qui a run une Starlette vulnérable entre le release de vendredi et ton patch. Le pairing avec la news Anthropic Claude Mythos de ce matin c'est la leçon plus large — les LLMs autonomous vuln-discovery trouvent 10K+ bugs dans l'OSS, et une seule CVE de dépendance transitive vient d'exposer chaque harness d'agent qui utilise le framework Python web dominant. Le patch cadence est maintenant un skill de survie builder, pas une corvée ops.
