High

OpenClaw Improperly Neutralizes Line Breaks in systemd Unit Generation Enables Local Command Execution (Linux)

  • Disclosed: 03.03.2026
  • Updated: 11.10.2026 10:22

Summary

A command injection vulnerability exists in OpenClaw’s Linux systemd unit generation path. When rendering Environment= entries, attacker-controlled values are not rejected for CR/LF, and systemdEscapeArg() uses an incorrect whitespace-matching regex. This allows newline injection to break out of an Environment= line and inject standalone systemd directives (for example, ExecStartPre=). On service restart, the injected command is executed, resulting in local arbitrary command execution (local RCE) under the gateway service user.


Details

The issue is in src/daemon/systemd-unit.ts:

  • renderEnvLines(...) builds:
  • Environment=${systemdEscapeArg(${key}=${value})}
  • No CR/LF validation is enforced for environment keys/values before writing unit lines.
  • systemdEscapeArg(...) uses:
  • /[\\s"\\\\]/
  • In this regex, \\s is interpreted as a literal backslash + s, not a whitespace character class. As a result, whitespace detection/quoting behavior is incorrect. Because systemd parses unit files line-by-line, a newline inside an environment value can inject an additional directive line. Example rendered output:
ini
Environment=INJECT=ok
ExecStartPre=/bin/touch /tmp/oc15789_rce

At restart time, systemd executes ExecStartPre, enabling command execution.

Relevant code path/components involved in exploitation chain:

  • src/daemon/systemd-unit.ts
  • src/commands/daemon-install-helpers.ts
  • src/config/env-vars.ts
  • src/config/zod-schema.ts

Trigger conditions:

  1. Attacker can influence config.env.vars (directly or indirectly).
  2. Install/reinstall path is invoked to write/update the unit.
  3. Service restart occurs (systemctl --user restart ...).

PoC

Environment: Linux host with systemd user services enabled.

  1. Configure a malicious environment value in OpenClaw config (config.env.vars), including a newline and injected directive:
  • Key: INJECT
  • Value:
ok
ExecStartPre=/bin/touch /tmp/oc15789_rce
  1. Install/reinstall the gateway service (fixed port as requested):
bash
openclaw gateway install --port 15789 --force
  1. Inspect the generated user unit file (default path):
bash
~/.config/systemd/user/openclaw-gateway.service

Verify that an injected standalone line exists:

ini
ExecStartPre=/bin/touch /tmp/oc15789_rce
  1. Reload and restart user service:
bash
systemctl --user daemon-reload
bash
systemctl --user restart openclaw-gateway.service
  1. Confirm command execution side effect:
bash
ls -l /tmp/oc15789_rce

Impact

This is a local command execution vulnerability in OpenClaw’s systemd unit generation during install/reinstall flows.

  • Type: Command injection via newline/directive injection in unit file generation.
  • Execution context: Runs with the same privileges as the OpenClaw gateway service user.
  • Affected users: Linux deployments using systemd user services where an attacker can control config.env.vars and trigger install/reinstall.

Fix Commit(s)

  • 61f646c41fb43cd87ed48f9125b4718a30d38e84

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
npm package openclaw < 2026.2.21 2026.2.21

References

CVSS score -
CVSS vector
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Weakness (CWE)
CWE-77
Platform
npm
Package
openclaw
Disclosed
03.03.2026
Updated
11.10.2026 10:22

Sources and licenses

OSV / GitHub Advisory Database - GHSA-vffc-f7r7-rx2w - CC BY 4.0

Vulnerability history: openclaw

All published vulnerabilities of this package (npm package), newest first. Shows whether this is a one-off slip or a package that needs watching.

All (589) in the archive
Total entries
589
First → latest
02.2026 10.2026
Without a fix
9
Exploited in attacks
0

Severity breakdown

  • Critical 20
  • High 215
  • Medium 300
  • Low 54

Disclosures per year

  1. 2026: 589
Severity:
  1. OpenClaw Improperly Neutralizes Line Breaks in systemd Unit Generation Enables Local Command Execution (Linux) this entry
    High CVE-2026-32063 < 2026.2.21 2026.2.21
  2. High · 8.8 CVE-2026-53811 < 2026.5.7 2026.5.7
  3. High · 8.8 CVE-2026-53806 < 2026.5.12 2026.5.12
  4. High · 7.8 CVE-2026-53813 < 2026.4.25 2026.4.25
  5. High · 7.5 CVE-2026-53834 < 2026.4.27 2026.4.27
  6. Critical CVE-2026-34507 < 2026.4.29 2026.4.29
  7. High CVE-2026-53823 < 2026.5.3 2026.5.3
  8. High · 8.4 CVE-2026-53814 < 2026.5.20 2026.5.20
  9. High · 6.5 CVE-2026-53815 < 2026.5.19 2026.5.19
  10. High · 8.1 CVE-2026-53849 < 2026.5.7 2026.5.7
  11. High · 8.1 CVE-2026-53857 < 2026.5.3 2026.5.3
  12. High · 8.1 CVE-2026-53866 < 2026.5.12 2026.5.12
  13. High · 8.1 CVE-2026-53864 < 2026.5.26 2026.5.26
Show more (20) Showing 41 of 235

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.