Skip to main content
Meet us at Black Hat USA 2026— Las Vegas, August 1–6Book a Meeting
Mallory
UnratedPublic exploit

Budibase arbitrary file read via PWA ZIP symlink upload

IdentifiersCVE-2026-54352CWE-59

CVE-2026-54352 is an arbitrary file-read vulnerability in Budibase affecting versions prior to 3.39.9. In the PWA asset upload workflow, POST /api/pwa/process-zip accepts a builder-supplied ZIP archive, extracts it with extract-zip@2.0.1 into a temporary directory, and then processes icon paths listed in icons.json. The validation logic in packages/server/src/api/controllers/static/index.ts resolves the supplied icon path against baseDir with path.resolve, checks that the resulting string begins with baseDir + path.sep, and uses fs.existsSync(resolvedSrc) to verify existence. However, symbolic-link entries are not rejected, and both fs.existsSync and the later file open operation follow symlinks. Because extract-zip@2.0.1 preserves absolute symlink targets, an attacker can upload a crafted ZIP containing a symlinked icon entry pointing to an arbitrary server-readable file. When Budibase later opens the validated path in packages/backend-core/src/objectStore/objectStore.ts using (await fsp.open(path)).createReadStream(), it reads the symlink target and streams the file into MinIO. The stored object is then retrievable through GET /api/assets/{appId}/pwa/{uuid}.png, disclosing the target file contents verbatim.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation allows a workspace-level builder to read arbitrary files that the Budibase server process can access. This can expose sensitive local files such as configuration files, environment files, credentials, secrets, and system files. Depending on deployment, disclosed material may include JWT secrets, internal API keys, object storage credentials, Redis or CouchDB credentials, and other application secrets, which can in turn enable privilege escalation, forged authentication tokens, and broader compromise of the Budibase instance or multi-tenant environment.

Mitigation

If you can’t patch tonight, do this now.

If immediate patching is not possible, restrict or disable access to the /api/pwa/process-zip functionality for workspace builders, reject ZIP archives containing symlink entries, sanitize and revalidate extracted paths using symlink-aware checks, and disable symlink following where possible during file validation and open operations. Additionally, run the Budibase server with least privilege and isolate sensitive files from the application runtime so that even successful file reads expose minimal data.

Remediation

Patch, then assume compromise.

Upgrade Budibase to version 3.39.9 or later, which fixes the vulnerability. The underlying remediation should ensure symlink entries are rejected or safely handled during ZIP extraction and post-extraction validation, and that file access logic does not follow attacker-controlled symlinks when processing uploaded assets.
PUBLIC EXPLOITS

Exploits

No public exploits tracked yet. Mallory keeps watching.

VALID 0 / 0 TOTALView more in app

No public exploit code observed for this vulnerability.

EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
BudibaseServerapplication

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity8

Community discussion across Reddit, Mastodon, and other social sources.