Server-side request forgery in stacklok toolhive
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- Present
- Impact type
- Information disclosure
- Confidentiality · integrity · availability
- Low · None · None
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-918 and the CVSS impact.
Summary
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| stacklok | toolhive | before 0.29.1 | 0.29.1 | Patch available | CNA |
| — | github.com/stacklok/toolhive (Go) | before 0.29.1 | 0.29.1 | Patch available | GHSA-pph6-vfjv-vpjw |
- toolhive Vendorstacklok Affected before 0.29.1 Fixed in 0.29.1 Patch available CNA
- github.com/stacklok/toolhive (Go) Vendor— Affected before 0.29.1 Fixed in 0.29.1 Patch available GHSA-pph6-vfjv-vpjw
Remediation
- Fix · CNA toolhive (stacklok) Fixed in 0.29.1
- Fix · GHSA-pph6-vfjv-vpjw github.com/stacklok/toolhive (Go) Fixed in 0.29.1 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-54450
- 2026-10-03 Alias added: GHSA-pph6-vfjv-vpjw
References
More stacklok vulnerabilities
- TI-2026-41912 ToolHive: containerized MCP servers can reach host services via host.docker.internal, enabling lateral movement CVSS 3.1HIGH 8.8
- TI-2024-22541 Minder's Github Webhook Handler vulnerable to denial of service from un-validated requests CVSS 3.1HIGH 7.5
- TI-2026-41911 ToolHive: SSRF in remote MCP server authentication discovery (host-side, bypasses container isolation) CVSS 3.1MEDIUM 4.7
- TI-2024-25220 Denial of service from maliciously configured Git repository in Minder CVSS 3.1MEDIUM 5.7
- TI-2024-23307 Denial of service of Minder Server from maliciously crafted GitHub attestations CVSS 3.1MEDIUM 5.3
- TI-2024-23266 Stacklok Minder vulnerable to denial of service from maliciously crafted templates CVSS 3.1MEDIUM 5.3
Sources
- CVE-2026-54450 · CVE Program
- CVE-2026-54450 · NVD
- FIRST EPSS
- GHSA-pph6-vfjv-vpjw · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences