CVE-2026-88062
KrytyczneCVSS 9.5Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 72 - wyżej niż 72% wszystkich znanych CVE
Streszczenie
W OmniRoute w wersji 3.8.49 i wcześniejszych endpoint POST /api/acp/agents przyjmował kontrolowane przez atakującego wartości binary i versionCommand, a po sprawdzeniu spójności execFileSync uruchamiał wybrany interpreter. Przy requireLogin=false lub w oknie bootstrapu zdalny anonimowy atakujący mógł wykonać dowolny kod w kontenerze serwera.
Ocena ryzyka
Możliwe jest zdalne wykonanie kodu w kontenerze serwera bez uwierzytelnienia, co może prowadzić do pełnego przejęcia środowiska.
Rekomendacja
Do czasu wydania poprawki należy ograniczyć dostęp do endpointu /api/acp/agents, wymusić requireLogin=true oraz rotować klucze API i hasła zarządzające.
Inne podatności w OmniRoute
Zobacz wszystkie- CVE-2026-118984Średnie
OmniRoute w wersjach od 3.8.0 do przed 3.8.52 zawiera podatność niezweryfikowanej zmiany hasła, pozwalającą posiadaczom kluczy API o zakresie manage lub admin albo tokenów dostępu oma_ na zmianę hasła zarządzania bez podania obecnego hasła. Atakujący może wysłać żądania POST do /api/settings/require-login, aby zablokować operatora, przejąć logowanie do panelu lub całkowicie wyłączyć wymóg logowania.
- CVE-2026-116634Średnie
OmniRoute w wersjach od 3.8.50 do 3.8.52 zawiera podatność braku uwierzytelniania, która pozwala nieuwierzytelnionym atakującym na wystawianie tokenów synchronizacji przez POST /api/sync/tokens, gdy requireLogin jest wyłączone. Tokeny te można następnie wykorzystać do pobrania odszyfrowanych poświadczeń dostawców i kluczy API w postaci jawnej, a tokeny pozostają ważne po ponownym włączeniu logowania.
Oryginalny opis (angielski, źródło NVD)
OmniRoute is an open-source AI gateway providing a single endpoint for multiple model providers. In 3.8.49 and earlier, the OmniRoute POST /api/acp/agents custom ACP agent endpoint accepted attacker-controlled binary and versionCommand values and used only a self-consistency check before execFileSync executed the selected interpreter and arguments. The same request called refreshAgentCache, and resolveVersionProbe accepted the matched command before the execFileSync sink ran it. The tokenizeVersionCommand function and DISALLOWED_VERSION_COMMAND_CHARS filter rejected a limited set of shell metacharacters but still allowed interpreter evaluation arguments. The isAuthenticated function relied on isAuthRequired, which accepted anonymous requests when requireLogin was false, while api/acp/ was absent from LOCAL_ONLY_API_PREFIXES and SPAWN_CAPABLE_PREFIXES. With requireLogin=false or during a fresh-instance bootstrap window, a remote anonymous request could supply an interpreter evaluation argument and execute arbitrary code in the server container. With requireLogin=true and a configured management password, exploitation instead required a management session or management-scoped API key. No fixed version is available as of this review.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

