highCVSS 8.8Vulnerability

CVE-2026-45717

## Summary Budibase exposes a REST API for datasource management. The route `PUT /api/datasources/:datasourceId` is registered in the `authorizedRoutes` group with `TABLE/READ` permission. This is the same authorization level as the read endpoint (`GET /api/datasources/:datasourceId`). Every authenticated Budibase app user with the `BASIC` built-in role or higher carries `TABLE/WRITE` (and therefore `TABLE/READ`) permissions, and the datasource update controller performs no additional builder check. As a result, any authenticated non-builder app user can submit a `PUT` request to rewrite a datasource's `config` object — including the connection `host`, `port`, database credentials, or the base `url` of a REST datasource. Because no network-level SSRF protection is applied to SQL driver connections, redirecting a PostgreSQL/MySQL/MongoDB datasource to an internal IP address succeeds and the attacker can probe or interact with internal services on arbitrary ports. ## Code evidence ### Route registration — wrong authorization group ``` packages/server/src/api/routes/datasource.ts, line 35-37 ``` ```typescript authorizedRoutes .get("/api/datasources/:datasourceId", datasourceController.find) .put("/api/datasources/:datasourceId", datasourceController.update) // <-- should be builderRoutes ``` All destructive (create/delete/verify) operations are gated behind `builderRoutes`: ```typescript builderRoutes .get("/api/datasources", datasourceController.fetch) .post("/api/datasources/verify", datasourceController.verify) .post("/api/datasources", datasourceValidator(), datasourceController.save) .delete("/api/datasources/:datasourceId/:revId", datasourceController.destroy) ``` The `update` route shares the same authorization group as the read route, not the builder group. ### Authorization middleware allows BASIC-role users ``` packages/server/src/middleware/authorized.ts, lines 46-50 packages/backend-core/src/security/permissions.ts, lines 82-90 pack

Properties

severity
high
summary
Budibase: `PUT /api/datasources/:datasourceId` is protected only by `TABLE/READ` permission instead of builder access, allowing any authenticated app user to overwrite datasource connection parameters including host, port, and URL
epss_score
0.00251
cvss_score
8.8
ghsa_published
2026-05-15T17:59:47Z
source_url
https://github.com/advisories/GHSA-44m2-crh7-f4q2
ghsa_updated
2026-05-15T17:59:49Z
ghsa_id
GHSA-44m2-crh7-f4q2
cve_id
CVE-2026-45717
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
is_ghsa_only
false
epss_percentile
0.16627

Related Entities (5)

ENRICHED_BY (1)

[Source]FIRST EPSS

VULNERABLE_TO (1)

[Software]npm/@budibase/server

AFFECTS (1)

[Software]npm/@budibase/server

HAS_WEAKNESS (1)

[Weakness]Missing Authorization

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-45717 (CVSS 8.8) — Ninja Signal Threat Intelligence | Ninja Signal