A remote code execution (RCE) vulnerability in the gateway-to-node invocation path allowed an authenticated gateway client to bypass node-host exec approvals by injecting internal control fields into node.invoke parameters.
node.invoke for node command system.runsystem.runIf an attacker can authenticate to a gateway (for example via a leaked/shared gateway token or a paired device token with operator.write), they could execute arbitrary commands on connected node hosts that support system.run. This can lead to full compromise of developer workstations, CI runners, and servers running the node host.
The gateway forwarded user-controlled params to node hosts without sanitizing internal approval fields. The node host treated params.approved === true and/or params.approvalDecision as sufficient to skip the approval workflow.
Patched in OpenClaw 2026.2.14.
318379cdb8d045da0009b0051bd0e712e5c65e2da7af646fdab124a7536998db6bd6ad567d2b06b0c1594627421f95b6bc4ad7c606657dc75b5ad0ce0af76f5f0e93540efbdf054895216c398692afcdsystem.run user input.params.runId references a valid exec.approval.request record and the request context matches. Approval IDs are bound to the requesting device identity (stable across reconnects), preventing replay by other clients.system.run parameters, preventing future control-field smuggling.2026.2.14 or later.system.run at the gateway (gateway.nodes.denyCommands) and/or by configuring node exec security to deny.OpenClaw thanks @222n5 for reporting this issue.
{
"cwe_ids": [
"CWE-20",
"CWE-441",
"CWE-863"
],
"github_reviewed": true,
"github_reviewed_at": "2026-03-02T23:24:54Z",
"nvd_published_at": "2026-03-05T22:16:19Z",
"severity": "CRITICAL"
}