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
- 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.
Workarounds
Restrict org membership to trusted users; apply network-egress filtering from the Dokploy container to internal/metadata ranges (nftables/egress proxy).
Affected software
| Software | Affected versions |
|---|---|
DokployServers and applications · github:dokploy/dokploy |
|
References
- GitHub Advisory Database https://github.com/advisories/GHSA-gv94-wp2p-75p6
- github.com https://github.com/Dokploy/dokploy/security/advisories/GHSA-gv94-wp2p-75p6