CVE-2026-54352: Budibase arbitrary file read via symlink following in PWA zip upload

CVE-2026-54352 · Severity: critical · CVSS 9.6 · Published 2026-06-26

Budibase, an open-source low-code development platform, contains a vulnerability that allows users with 'builder' permissions to read sensitive files from the underlying server. By uploading a specially crafted ZIP file containing symbolic links, an attacker can trick the system into exposing internal configuration files, passwords, and encryption keys. This could lead to a full takeover of the Budibase instance, including access to other users' data and administrative control.

Technologies: @budibase/server (npm). Vendors: npm.

Quick answers

Is CVE-2026-54352 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-54352 being exploited in the wild.
How severe is CVE-2026-54352?
Critical severity, with a CVSS score of 9.6, published 26 June 2026.
Which products and versions are affected?
@budibase/server (npm) < 3.39.9, SEMVER:introduced=0,fixed=3.39.9.
Is there a fix for CVE-2026-54352?
Yes. @budibase/server (npm): upgrade to 3.39.9 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-54352 attacked?
It is attacked over the network, in a network appliance.
Am I affected by CVE-2026-54352?
Check whether you run @budibase/server (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @budibase/server (npm): upgrade to 3.39.9 or later
    npm install @budibase/server@3.39.9

Technical details

A path traversal and symlink following vulnerability exists in the `POST /api/pwa/process-zip` endpoint of Budibase. The application uses `extract-zip@2.0.1` to unpack user-provided archives, which preserves absolute symlink targets. The icon-source validator fails to properly verify if a file is a symbolic link before processing it; it resolves the path and checks if the target exists using `fs.existsSync`, which follows links. When the application subsequently streams the 'icon' to MinIO storage, it follows the symlink and reads the target file's contents. In default Docker deployments running as root, this allows a workspace builder to read sensitive files like `/data/.env` (containing JWT secrets and database credentials) or `/etc/shadow`, enabling privilege escalation to global admin.

Affected products

  • Budibase budibase < 3.39.9

Identifiers

  • CVE-2026-54352
  • GHSA-w7mq-r738-x278

Timeline

  • 2026-06-04: advisory: GitHub Security Advisory published
  • 2026-06-26: disclosed: CVE published to NVD
  • 2026-06-26: patched: Fix released in version 3.39.9

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.