POST /mcp-rest/test/connectionPOST /mcp-rest/test/tools/listOba punkty końcowe przyjmują pełną konfigurację serwera MCP w ciele żądania JSON, w tym pola Cmd, args i env, których transport stdio używa do uruchamiania procesów serwera . Gdy uwierzytelniony użytkownik wywoła jeden z tych punktów z tą konfiguracją, LiteLLM bierze podaną wartość Cmd i uruchamia ją jako podproces na maszynie hosta, z takimi samymi uprawnieniami systemu operacyjnego, jakie ma sam proces proxy LiteLLM
.
Pierwotnie BerriAI ujawniło to jako błąd uwierzytelnionego zdalnego wykonania kodu – atakujący potrzebował ważnego klucza API, aby dotrzeć do tych punktów końcowych, i nie było żadnej kontroli opartej na rolach, aby ograniczyć, kto może je wywołać. Nawet wewnętrzny użytkownik z niskimi uprawnieniami i dowolnym ważnym kluczem API proxy mógł wykonać dowolne polecenia na hoście . Ale na tym historia się nie skończyła.
Drugą luką jest CVE-2026-48710, nazwana "BadHost" przez badaczy. Jest to błąd w walidacji nagłówka Host w Starlette, lekkim frameworku ASGI, który stanowi podstawę dla FastAPI, vLLM i tysięcy innych aplikacji webowych w Pythonie – w tym LiteLLM . Dotyczy to wszystkich wersji Starlette od 0.8.3 do 1.0.0
.
Główną przyczyną jest niezgodność analizy między tym, jak Starlette kieruje przychodzące żądania, a tym, jak rekonstruuje URL dla logiki aplikacji . Warstwa trasowania ASGI używa surowej ścieżki HTTP z żądania, aby zdecydować, który punkt końcowy ma je obsłużyć. Jednakże
request.url – URL, który widzą middleware i dekoratory aplikacji – jest odbudowywany przez połączenie surowej wartości nagłówka Host ze ścieżką żądania, bez odpowiedniej walidacji .
Poprzez wstrzyknięcie znaków rozdzielających autorytet URI od ścieżki, takich jak ? lub #, do nagłówka Host, atakujący może sprawić, że request.url.path będzie wydawał się zupełnie inny niż rzeczywista trasowana ścieżka . Middleware widzi nieszkodliwą ścieżkę, taką jak
/, podczas gdy router przekazuje żądanie do prawdziwego docelowego punktu końcowego za kulisami. Każde middleware uwierzytelniające oparte na ścieżce, które ufa request.url.path, może zostać łatwo ominięte .
Dekorator uwierzytelniania LiteLLM sprawdza request.url.path, aby określić, czy żądanie wymaga ważnego klucza API. Obejście BadHost pozwala atakującemu manipulować tym adresem URL tak, aby middleware uwierzytelniania widziało ścieżkę, która nie wymaga uwierzytelniania, podczas gdy router ASGI jednocześnie wysyła żądanie do jednego z podatnych punktów końcowych wstrzyknięcia poleceń MCP .
To usuwa jedyną bramę kontroli dostępu, która stała między internetem a dowolnym wykonaniem poleceń systemowych. Atakujący bez żadnych poświadczeń i bez wcześniejszego dostępu do sieci może wysłać pojedyncze spreparowane żądanie HTTP, które całkowicie omija uwierzytelnianie i uruchamia polecenia systemu operacyjnego na hoście proxy LiteLLM . Horizon3.ai potwierdziło, że pełny łańcuch działa i nadało mu łączną ocenę CVSS 10.0 – maksymalną dotkliwość – ponieważ umożliwia nieuwierzytelnione zdalne wykonanie kodu
.
Udane wykorzystanie daje atakującym wykonanie poleceń z uprawnieniami procesu proxy LiteLLM. Stąd pole do zagrożeń szybko się rozszerza:
Dodanie przez CISA luki CVE-2026-42271 do katalogu KEV 8 czerwca 2026 roku potwierdza, że luka nie jest teoretyczna – atakujący aktywnie ją wykorzystują w tej chwili . Zgodnie z dyrektywą operacyjną BOD 22-01, wszystkie amerykańskie federalne agencje wykonawcze cywilne muszą załatać luki wymienione w KEV w wyznaczonym terminie. CISA zdecydowanie zaleca również wszystkim organizacjom, publicznym i prywatnym, aby traktowały wpisy do KEV jako priorytet awaryjnego łatania
.
Poprawka dla połączonego exploita wymaga aktualizacji na dwóch frontach, plus kilku dodatkowych środków obrony w głąb, aby zaradzić narażeniu poświadczeń:
Host zgodnie ze specyfikacją URL i ignoruje nagłówki zawierające nieprawidłowe znaki, zapobiegając sztuczce z pomyleniem ścieżki, która napędza obejście uwierzytelnienia POST /mcp-rest/test/connectionPOST /mcp-rest/test/tools/listHost Połączona ocena CVSS 10.0, aktywne wykorzystanie w środowisku naturalnym i oznaczenie CISA w katalogu KEV oznaczają, że organizacje korzystające z LiteLLM lub usług opartych na Starlette powinny traktować to jako zdarzenie awaryjne wymagające łatania i rotacji kluczy. Czas między aktywnym wykorzystaniem a kradzieżą poświadczeń jest już otwarty.
Comments
0 comments