CVE-2026-72859
highpriority · track · 0OT risk · elevatedEPSS 0.002 · 12 %ileDEEUUSEPSS · scored 2026-10-27
Budibase versions 3.39.4 before 3.40.0 contain an authorization regression in the S3 attachment upload endpoint that allows BASIC users to obtain S3 PutObject presigned URLs by sending POST requests to the attachments endpoint. The route was changed from a BUILDER permission check to a TABLE/WRITE check, which BASIC users hold by default. Attackers can specify arbitrary S3 buckets in the request body to generate presigned URLs for writing to any bucket accessible by the stored IAM credentials, enabling unauthorized file uploads.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode⚠ sources disagree · medium–high · 5.7–8.3
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (4)
Products and version ranges known to be affected.
advisories (2)
Vendor and ecosystem advisories describing this.
- WID-SEC-W-2026-2861Budibase: Schwachstelle ermöglicht Manipulation von DateienDeutsch2026-08-16csaf · cert_bundDE
Ein entfernter, authentisierter Angreifer kann eine Schwachstelle in Budibase ausnutzen, um Dateien zu manipulieren.
- GHSA-xcx6-4f2g-hhgx Budibase: S3 presigned URL endpoint authorization regression in v3.39.4 allows BASIC users to obtain S3 PutObject presigned URLs2026-07-24ghsa · osvUS
## Impact In Budibase v3.39.4, a regression in the authorization level for the S3 attachment upload endpoint allows any BASIC app user to obtain S3 PutObject presigned URLs. The endpoint uses TABLE/WRITE permission level instead of the intended BUILDER level defined in v3.39.3. Additionally, the controller does not pin the target bucket to the datasource's configured bucket, allowing writes to any S3 bucket the stored IAM credentials can access. ## Reproduction 1. As a BASIC app user, discover or obtain a valid S3 datasource ID within the app 2. Send a POST request: ``` POST /api/attachments/<datasourceId>/url Content-Type: application/json x-budibase-app-id: <appId> {"bucket": "target-bucket", "key": "malicious-file.html"} ``` 3. The response contains a valid S3 PutObject presigned URL 4. Use the presigned URL to upload arbitrary content to any writable S3 bucket in the IAM credential scope ## Root Cause The `/api/attachments/:datasourceId/url` route was changed from `authorized(BUILDER)` in v3.39.3 to `authorized(PermissionType.TABLE, PermissionLevel.WRITE)` in v3.39.4. BASIC users have TABLE/WRITE permissions by default, so they can call this endpoint. The controller at `packages/server/src/api/controllers/static/index.ts:614-632` accepts the `bucket` parameter directly from the request body and passes it to `getSignedUrl` without validating against the datasource's configured bucket. ## Evidence The test suite at `packages/server/src/api/routes/tests/static.spec.ts:218-235` confirms this behavior. The test authenticates as a BASIC role user and successfully generates a signed upload URL, verifying HTTP 200 and a defined `res.body.signedUrl`. ## Remediation 1. Restore the `authorized(BUILDER)` middleware on the route 2. Add `paramResource("datasourceId")` to ensure the datasource belongs to the caller's app 3. Pin the S3 bucket to `datasource.config.bucket` in the controller, ignoring the caller-supplied bucket value
also known as (3)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (6)
External citations — patches, advisories, analysis.
- https://github.com/Budibase/budibase/security/advisories/GHSA-xcx6-4f2g-hhgxcnnvd
- https://www.vulncheck.com/advisories/budibase-before-authorization-regression-via-s3-presigned-urlcnnvd
- https://github.com/Budibase/budibase/security/advisories/GHSA-xcx6-4f2g-hhgxenisa_euvd
- https://www.vulncheck.com/advisories/budibase-before-authorization-regression-via-s3-presigned-urlenisa_euvd
- https://github.com/Budibase/budibase/security/advisories/GHSA-xcx6-4f2g-hhgxnvd
- https://www.vulncheck.com/advisories/budibase-before-authorization-regression-via-s3-presigned-urlnvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan