CVE-2026-54450
NiskieCVSS 2.9Streszczenie
ToolHive przed wersją 0.29.1 ma błąd w networking.IsPrivateIP (pkg/networking/utilities.go), który pomija prefiksy IPv6 NAT64 64:ff9b::/96 i 64:ff9b:1::/48. Adresy NAT64 osadzające prywatne, loopback lub link-local adresy IPv4 są klasyfikowane jako publiczne i dozwolone, co na hoście za bramą NAT64/DNS64 pozwala na ślepe sondowanie wewnętrznej osiągalności TCP/TLS.
Ocena ryzyka
Atakujący może wykorzystać zewnętrznego klienta OAuth do sondowania wewnętrznych usług przez bramę NAT64, uzyskując oracle osiągalności wewnętrznej sieci, choć nie prowadzi to do eksfiltracji poświadczeń metadanych.
Rekomendacja
Zaktualizuj ToolHive do wersji 0.29.1 lub nowszej, która poprawia klasyfikację adresów NAT64 w IsPrivateIP.
Inne podatności w ToolHive
Zobacz wszystkie- CVE-2026-58197Wysokie
W ToolHive przed wersjami CLI 0.30.1 i Studio 0.38.0 lokalnie uruchamiane kontenery serwerów MCP używają domyślnego profilu uprawnień sieciowych bez izolacji sieci, umożliwiając dostęp do host.docker.internal, podczas gdy API ToolHive i punkty proxy MCP są osiągalne bez uwierzytelniania. Złośliwy lub przejęty serwer MCP może użyć bramy Docker do kontaktu z usługami lokalnymi hosta, innymi proxy MCP zarządzanymi przez ToolHive lub płaszczyzną kontroli ToolHive bez opuszczania kontenera. Podatność jest naprawiona w wersji CLI 0.30.1 i Studio 0.38.0.
- CVE-2026-58196Średnie
ToolHive przed wersją 0.31.0 zawiera podatność w zdalnym uwierzytelnianiu, gdzie klient ufa serwerowi MCP w kwestii celów odkrywania uwierzytelniania, co pozwala złośliwemu serwerowi na wysyłanie żądań GET do wewnętrznych usług (link-local, RFC1918, metadata chmury) poza kontenerem. Może to prowadzić do wycieku danych lub eskalacji uprawnień.
Oryginalny opis (angielski, źródło NVD)
ToolHive is a utility designed to simplify the deployment and management of Model Context Protocol (MCP) servers. Prior to 0.29.1, networking.IsPrivateIP in pkg/networking/utilities.go omits the IPv6 NAT64 prefixes 64:ff9b::/96 and 64:ff9b:1::/48, so NAT64 addresses embedding private, loopback, or link-local IPv4 targets are classified as public and allowed. The most direct attacker-controlled path begins when an external OAuth client supplies a client_id URL that CIMDStorageDecorator.GetClient routes through FetchClientMetadataDocument in pkg/oauthproto/cimd/fetch.go; protectedDialerControl in pkg/networking/http_client.go and validateHost in pkg/skills/gitresolver/reference.go share the defective classification but use operator-controlled or user-controlled destinations. On a ToolHive host behind a NAT64/DNS64 gateway, the gateway translates an allowed address such as 64:ff9b:1::a9fe:a9fe to 169.254.169.254, permitting blind probing of internal TCP or TLS reachability. The attacker-controlled CIMD path requires HTTPS, verifies certificates, and does not reflect response bodies, so the established impact is an internal reachability oracle rather than metadata credential exfiltration; the webhook client is not affected because it does not use this IP guard. This issue is fixed in version 0.29.1.

