CRITICAL🇵🇱 Wersja polska

CVE-2026-54352

CVSS 9.6v3.1pub. 2026-06-26upd. 2026-06-30

Budibase is an open-source low-code platform. Prior to 3.39.9, `POST /api/pwa/process-zip` at packages/server/src/api/routes/static.ts:24 accepts a builder-uploaded .zip, extracts it with extract-zip@2.0.1 into a temp directory, then for each entry listed in icons.json validates the icon path, opens it, and streams the bytes into MinIO. The resulting object is served back via GET /api/assets/{appId}/pwa/{uuid}.png. extract-zip@2.0.1 preserves absolute symlink targets when restoring symlink entries. The icon-source validator at packages/server/src/api/controllers/static/index.ts:259-268 resolves the icon source string against baseDir (path.resolve), checks resolvedSrc.startsWith(baseDir + path.sep) against that string, and calls fs.existsSync(resolvedSrc) which follows symbolic links to confirm the target exists. None of the three calls reject symbolic-link entries. packages/backend-core/src/objectStore/objectStore.ts:302 then calls (await fsp.open(path)).createReadStream() on the resolved path. fsp.open follows the symlink, the target file's bytes stream into MinIO, and the response of the asset-fetch endpoint returns those bytes verbatim. Result: a workspace-level builder reads any file the server process can open. This vulnerability is fixed in 3.39.9.

🤖 AI Analysis
How it works

The `POST /api/pwa/process-zip` endpoint accepts a ZIP archive uploaded by a builder and extracts it to a temporary directory using the extract-zip@2.0.1 library, which preserves absolute symlink targets. The icon path validator checks if the path starts with the expected base directory but does not reject entries that are symlinks — calling `fs.existsSync()` follows the symlink, confirming its existence. Subsequently, `fsp.open()` opens the file through the symlink and streams its content directly to MinIO. The object stored this way is then served by the `GET /api/assets/{appId}/pwa/{uuid}.png` endpoint, returning the bytes of the target file directly to the attacker.

Impact

An attacker with builder permissions at the workspace level can read any file accessible to the server process, including configuration files, secrets, private keys, or other sensitive system data.

Mitigation & patch

Update Budibase to version 3.39.9 or later, where the vulnerability has been fixed. Details are available in the official security advisory from the vendor at https://github.com/Budibase/budibase/security/advisories/GHSA-w7mq-r738-x278.

Who is affected

Budibase versions before 3.39.9 (open-source low-code platform).

Analysis generated by Claude AI (Anthropic) based on NVD data. Always verify with vendor.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
  • Budibase

    APP
    Budibase
    < 3.39.9
🔵
CHECK WITH VENDOR
No clear patch data available. Check vendor references.
Tags
Path Traversal
CWE
References

Related vulnerabilities

CVE-2026-54350CRITICAL10.0PL ✓same product

SQL/NoSQL Injection w Budibase — nieautoryzowany odczyt i zapis danych

CVE-2026-41428CRITICAL9.1PL ✓same product

Budibase: pominięcie uwierzytelnienia przez manipulację query string

CVE-2026-31818CRITICAL9.6PL ✓same product

SSRF w Budibase — nieaktywna ochrona blacklisty IP umożliwia dowolne żądania

CVE-2026-35216CRITICAL9.0PL ✓same product

Budibase: nieuwierzytelniony RCE przez publiczny webhook i krok Bash

CVE-2026-30240CRITICAL9.6PL ✓same product

Path Traversal w Budibase — odczyt dowolnych plików przez endpoint PWA ZIP