Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Low-priv authenticated user (PR:L) drives an SSRF over the network (AV:N/AC:L); reverse-proxy takeover is a scope change (S:C) with full C/I/A compromise of fronted traffic.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
Appsmith is a platform to build admin panels, internal tools, and dashboards. Prior to 2.1, the bundled Caddy reverse-proxy's admin API - which has no authentication by default - is bound on 0.0.0.0:2019 inside the container. While this listener is not directly published to the host by docker-compose.yml, it is reachable from the Appsmith server process itself or a SSRF vulnerability. An authenticated low-privileged user can therefore drive the SSRF to issue POST /load (or any other admin-API call) against http://0.0.0.0:2019/, fully replacing the live Caddy configuration and taking over the reverse proxy. This vulnerability is fixed in 2.1.
Articles & Coverage 1
AnalysisAI
Reverse-proxy takeover in Appsmith versions prior to 2.1 lets an authenticated low-privileged user abuse server-side request forgery to reach the bundled Caddy admin API, which ships with no authentication and listens on 0.0.0.0:2019 inside the container. By forcing the Appsmith server to issue a POST /load to that internal endpoint, the attacker rewrites the live Caddy configuration and seizes control of the reverse proxy that fronts the application. No public exploit identified at time of analysis and the issue is not in CISA KEV, but the vendor-confirmed CWE-749 exposure carries a 9.9 CVSS rating.
Technical ContextAI
Appsmith is a self-hosted, low-code platform for building internal admin panels, dashboards, and CRUD tools, typically deployed as a single Docker container via docker-compose. That container bundles the Caddy web server acting as a reverse proxy in front of the Appsmith backend. Caddy exposes an administrative REST API (default port 2019) that can fully reconfigure the running server at runtime; by design this API has no authentication and is meant to be bound to loopback only. The root cause maps to CWE-749 (Exposed Dangerous Method or Function): in the vulnerable image Caddy's admin listener is bound to 0.0.0.0:2019 rather than 127.0.0.1, making the dangerous configuration-replacement method reachable to any process inside the container - and, by extension, to any SSRF primitive that can coerce outbound requests from the Appsmith server. The affected component is identified by CPE cpe:2.3:a:appsmithorg:appsmith:*:*:*:*:*:*:*:* for all builds before 2.1.
RemediationAI
Upgrade to Appsmith 2.1 or later, which is the vendor-released patch that corrects the Caddy admin-API binding (Vendor-released patch: 2.1; see GHSA-8jvv-gwqg-6vjc at https://github.com/appsmithorg/appsmith/security/advisories/GHSA-8jvv-gwqg-6vjc). If you cannot upgrade immediately, rebind the Caddy admin listener to loopback by setting the admin endpoint to 127.0.0.1:2019 (or 'admin off' if runtime reconfiguration is not needed) in the container's Caddyfile/JSON config - this directly removes the 0.0.0.0 exposure but requires rebuilding or overriding the bundled image and means you lose remote admin-API management. As a complementary control, add container-level firewalling/network policy to block traffic to port 2019 from any source other than localhost, and tighten Appsmith data-source/API permissions for low-privileged users to shrink the SSRF surface; be aware that restricting outbound request features may break legitimate connectors your builders rely on.
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac
Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post
Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten
Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build
Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config
Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per
Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l
Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c
Vasion Print (formerly PrinterLogic) Virtual Appliance Host prior to version 25.2.169 and Application prior to version 2
Same weakness CWE-749 – Exposed Dangerous Method or Function
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39118