W aplikacji 9Router (wersje 0.4.30–0.4.36) middleware proxy.js nie wymuszał uwierzytelnienia dla ścieżek /api/cli-tools/* oraz /api/mcp/*, umożliwiając nieuwierzytelnionym atakującym rejestrację własnych wtyczek i wykonanie dowolnych poleceń systemowych. Podatność otrzymała maksymalny wynik CVSS 10.0, co czyni ją krytycznym zagrożeniem dla każdej instancji 9Router dostępnej z sieci.
▸ Pokaż oryginał (EN)
9Router is an AI router & token saver. From 0.4.30 until 0.4.37, 9Router's src/proxy.js middleware did not protect /api/cli-tools/* and /api/mcp/*, allowing unauthenticated registration of customPlugins through src/app/api/cli-tools/cowork-settings/route.js and command execution through the MCP bridge. This vulnerability is fixed in 0.4.37.
Middleware src/proxy.js nie obejmował ochroną (kontrolą uwierzytelnienia) tras /api/cli-tools/* i /api/mcp/*. Poprzez endpoint src/app/api/cli-tools/cowork-settings/route.js atakujący mógł bez żadnych poświadczeń zarejestrować własną wtyczkę (customPlugin). Następnie, korzystając z mostu MCP (Model Context Protocol), możliwe było wykonanie dowolnego polecenia systemowego w kontekście serwera — co stanowi klasyczny command injection (CWE-78) wynikający z braku wymaganego uwierzytelnienia (CWE-306).
Nieuwierzytelniony atakujący zdalnie może wykonać dowolne polecenia systemowe na serwerze hostującym 9Router, co prowadzi do pełnego przejęcia kontroli nad systemem, wycieku danych, instalacji złośliwego oprogramowania lub dalszego lateral movement w sieci.
Należy zaktualizować 9Router do wersji 0.4.37, w której podatność została naprawiona poprzez zastosowanie odpowiedniej kontroli uwierzytelnienia w middleware proxy.js dla tras /api/cli-tools/* i /api/mcp/*. Szczegóły poprawki dostępne w referencjach producenta na GitHub.
9Router w wersjach od 0.4.30 do 0.4.36 (włącznie)
Poprawka dostępna w commicie 992f4db4a0d858bcc86b4786f2abab117a6ccdf8 w repozytorium GitHub projektu decolua/9router. Szczegółowe advisory opublikowano pod identyfikatorem GHSA-fhh6-4qxv-rpqj.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H