CVE-2026-61559
KrytyczneCVSS 9.6Streszczenie
Serwer MCP @zereight/mcp-gitlab w wersjach od 0.0.1 do 2.1.26, przy włączonej zmiennej środowiskowej ENABLE_DYNAMIC_API_URL=true, odczytuje nagłówek HTTP X-GitLab-API-URL i używa go jako bazowego adresu dla wychodzących zapytań do API GitLab. Serwer sprawdza jedynie poprawność formatu URL, nie stosując żadnej listy dozwolonych hostów, a następnie dołącza token Private-Token ofiary do każdego przekierowanego zapytania. Wersja 2.1.27 zawiera poprawkę.
Ocena ryzyka
Atakujący z dostępem do transportu HTTP może przekierować zapytania serwera na kontrolowany przez siebie host i przechwycić token GitLab ofiary, co prowadzi do pełnego przejęcia uprawnień w GitLab. Ryzyko jest wysokie, ponieważ nie wymaga uwierzytelnienia po stronie atakującego.
Rekomendacja
Zaktualizuj @zereight/mcp-gitlab do wersji 2.1.27 lub nowszej. Jeśli funkcja dynamicznego URL nie jest potrzebna, wyłącz ENABLE_DYNAMIC_API_URL i ogranicz dostęp sieciowy do serwera MCP.
Inne podatności w @zereight/mcp-gitlab
Zobacz wszystkie- CVE-2026-61560Krytyczne
Serwer Model Context Protocol dla GitLab @zereight/mcp-gitlab w wersjach przed 2.1.27 w trybie transportu SSE (SSE=true) udostępnia wszystkie narzędzia MCP bez uwierzytelniania. Narzędzie upload_markdown odczytuje dowolne pliki z lokalnego systemu plików serwera przez nieoczyszczony parametr file_path i wysyła je do projektu GitLab.
- CVE-2026-61568Krytyczne
Serwer Model Context Protocol dla GitLab @zereight/mcp-gitlab w wersjach przed 2.1.30 udostępnia punkt końcowy Streamable HTTP MCP bez skutecznej listy dozwolonych nagłówków Host lub Origin. Złośliwa strona internetowa może wykorzystać DNS rebinding do przekierowania żądań przeglądarki do lokalnego odbiornika MCP ofiary, zachowując nagłówki Host i Origin kontrolowane przez atakującego.
Oryginalny opis (angielski, źródło NVD)
`@zereight/mcp-gitlab` is a Model Context Protocol server for GitLab. Starting in version 0.0.1 and prior to version 2.1.27, when the environment variable `ENABLE_DYNAMIC_API_URL=true` is set, the server reads the `X-GitLab-API-URL` HTTP request header and uses it as the base URL for all outbound GitLab API calls made within that request. The server validates that the value is a well-formed URL (`new URL(dynamicApiUrl)`) but applies no allowlist or hostname restriction. The server then attaches the victim's `Private-Token` to every outbound fetch that uses the redirected URL. Any caller who can reach the HTTP transport can set `X-GitLab-API-URL` to an attacker-controlled host. The next GitLab API call the server makes delivers the victim's token to that host. Version 2.1.27 contains a patch.

