CVE-2026-54356: Budibase authenticated arbitrary S3 signed upload URL issuance via `/api/attachments/:datasourceId/url`
Budibase 3.39.7 allows a low-privilege authenticated published-app user with the built-in BASIC role to obtain arbitrary S3 pre-signed upload URLs backed by a workspace datasource’s stored server-side credentials.
The affected endpoint is:
POST /api/attachments/:datasourceId/url
The caller can control:
bucket
key
and receives:
signedUrl
publicUrl
This lets a low-privilege published-app user mint S3 PUT URLs using server-side datasource credentials for attacker-chosen object destinations.
Steps:
- Log in as an admin user.
- Create a new app/workspace.
- In the development app context, create an S3 datasource with valid credentials.
- Publish the app.
- Create a low-privilege user with the built-in BASIC role on the published production app ID.
- Log in as that BASIC user.
- Send:
POST /api/attachments/<datasourceId>/url
with:
{"bucket":"foo","key":"bar"}
and the published app header:
x-budibase-app-id: <published_app_id>
Observe a successful response containing:
signedUrl
publicUrl
References
Code Behaviors & Features
Detect and mitigate CVE-2026-54356 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →