Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Primary rating from Vendor (https://github.com/actualbudget/actual) · only source for this CVE.
CVSS VectorVendor: https://github.com/actualbudget/actual
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Lifecycle Timeline
3DescriptionCVE.org
Summary
A electron run as node vulnerability was identified in actual (macOS application, version 25.x (Electron 39.2.7)).
Vulnerability Type: Electron Run As Node
Description
ELECTRON_RUN_AS_NODE fuse enabled (Electron 39.2.7) - app can be converted to Node.js REPL for arbitrary code execution
Impact
An attacker who can place a file on disk or control command-line arguments can invoke the signed Actual.app binary with ELECTRON_RUN_AS_NODE=1 to execute arbitrary Node.js code inheriting the apps entitlements and code signature. This bypasses macOS Gatekeeper review of the payload: the Node.js script runs as Actual, under Actuals bundle ID and signed identity, and has access to any entitlements the app carries (network, file access, keychain, automation). Combined with any downloader (browser, mail attachment, Slack link) this becomes a signed-binary-abuse primitive on every Mac with Actual installed.
AnalysisAI
Arbitrary Node.js code execution via signed Actual Budget macOS binary (versions prior to 26.5.0) is enabled by the ELECTRON_RUN_AS_NODE fuse being left active in the Electron 39.2.7 runtime. An attacker who can place a script on disk or influence the process environment can invoke Actual.app with ELECTRON_RUN_AS_NODE=1, causing the signed binary to act as a Node.js interpreter executing attacker-controlled code under Actual's macOS code signature and entitlements. No public exploit identified at time of analysis; a vendor-released patch exists in version 26.5.0 per GHSA-7rvm-xjpp-63r9.
Technical ContextAI
Electron ships a 'fuses' system - compile-time boolean flags baked into the application binary that govern runtime capabilities. The ELECTRON_RUN_AS_NODE fuse, when left enabled, allows any caller to convert the Electron binary into a generic Node.js interpreter by setting the ELECTRON_RUN_AS_NODE=1 environment variable before invocation, bypassing all Electron application initialization logic. In Actual Budget 25.x (pkg:npm/actual, Electron 39.2.7), this fuse was not disabled at build time. CWE-94 (Improper Control of Generation of Code - Code Injection) captures the root cause: the application binary provides an unconstrained code execution pathway that accepts externally supplied code. The critical macOS-specific amplifier is that the resulting Node.js process inherits the app's Apple code signature, bundle ID, and declared entitlements (keychain, file system, network, automation), meaning macOS Gatekeeper and TCC evaluate the process as the legitimate Actual.app rather than the attacker's payload.
RemediationAI
Upgrade Actual Budget to version 26.5.0 or later, which resolves the issue by disabling the ELECTRON_RUN_AS_NODE fuse in the application binary, as confirmed by GHSA-7rvm-xjpp-63r9 (https://github.com/actualbudget/actual/security/advisories/GHSA-7rvm-xjpp-63r9). Prior to patching, defenders can deploy an MDM configuration profile or endpoint security policy that blocks or alerts on processes spawned with ELECTRON_RUN_AS_NODE=1 in their environment - note that this requires EDR support for environment variable inspection and may generate false positives if other Electron apps are present. Restricting write access to directories from which Actual.app is likely invoked (e.g., Downloads, /tmp) limits the file-placement vector but does not eliminate exploitation via command-line argument control. No workaround fully neutralizes the fuse-level capability without recompiling or patching the binary itself; upgrading to 26.5.0 is the only complete remediation.
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
Directory traversal vulnerability in lib/app/index.js in Geddy before 13.0.8 for Node.js allows remote attackers to read
Credential-harvesting malware compromised 84 versions of 42 TanStack npm packages on 2026-05-11 via chained GitHub Actio
Eval injection vulnerability in index.js in the syntax-error package before 1.1.1 for Node.js 0.10.x, as used in IBM Rat
The HTTP server in Node.js 0.10.x before 0.10.21 and 0.8.x before 0.8.26 allows remote attackers to cause a denial of se
Same weakness CWE-94 – Code Injection
View allSame technique Code Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-36547
GHSA-7rvm-xjpp-63r9