All vulnerabilities

Servers and applications

GHSA-gv94-wp2p-75p6

Full-read SSRF via ai.getModels / ai.testConnection - any authenticated user, no role check

Severity
High
Published
12 Nov 2026
Last changed
12 Nov 2026
Added to UpHeron
12 Nov 2026
Fixed in
0.31.1
Weakness
Server-side request forgery (CWE-918)
Sources
Project advisories (GitHub)

Description

The AI-provider tRPC procedures ai.getModels and ai.testConnection are gated only by protectedProcedure (valid session; no role or permission check — every other procedure in the same router uses adminProcedure) and pass a fully user-controlled apiUrl into server-side HTTP requests with no URL validation, scheme allowlist, or private-IP filtering. Any authenticated user — including the lowest-privilege default member organization role — can make the Dokploy server send requests to arbitrary internal URLs and read the responses.

  • ai.getModels: GET to ${apiUrl}/models (or /api/tags when the URL contains ollama, /models?key= for gemini). On success the parsed model list is returned to the caller; on any non-2xx the raw upstream body is reflected verbatim in the error (Failed to fetch models: ) — full-read exfiltration of any content type.
From Dokploy/dokploy's security advisory. Shortened; the full text is there.

Workarounds

Restrict org membership to trusted users; apply network-egress filtering from the Dokploy container to internal/metadata ranges (nftables/egress proxy).

Workarounds as given by Dokploy/dokploy's security advisory.

Affected software

SoftwareAffected versions
DokployServers and applications · github:dokploy/dokploy
  • Every version before 0.31.1

References