Back to skill

Security audit

openclaw configurator

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its stated setup purpose, but it should be reviewed because it recommends installing OpenClaw as a persistent background service without enough user-facing safeguards.

Before installing, review generated files carefully, especially public-channel settings and any daemon setup. Only run the background-service command if you intentionally want OpenClaw to keep running after the setup session, and verify the executable, service account, permissions, logs, and uninstall path first.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T06 · System Persistence

Warning
Location
SKILL.md:136
Finding
Unqualified Recommendation to Install a Persistent Background Service## Vulnerability Details **File Location**: `SKILL.md`, lines 136–137 **Vulnerability Type**: T06: System Persistence **Risk Level**: Medium **Complete Code Snippet**: ```markdown 2. **Daemon Persistence**: - Use `openclaw onboard --install-daemon` to keep the assistant running as a background service. ``` The same recommendation is duplicated in the Chinese localization at `SKILL_zh.md`, lines 139–140. ### Technical Analysis The Skill instructs users to run `openclaw onboard --install-daemon`, which installs OpenClaw as a persistent background service. A daemon may continue operating after the configuration session ends and can automatically restart across login sessions or system reboots, depending on the OpenClaw implementation. The instruction is presented as an unconditional recommendation for public or semi-public channel deployments. It does not require explicit informed consent, verification of the executable’s provenance, inspection of the generated service definition, least-privilege configuration, or confirmation of the service account and network exposure. Although the repository does not execute the command automatically and contains no embedded implementation of the daemon, generated guidance can induce a user or downstream agent with shell access to establish cross-session persistence. The persistence command therefore extends the effect of the Skill beyond its immediate configuration-generation task. ### Attack Path 1. A user requests configuration for Discord, WhatsApp, Telegram, or another public channel. 2. The Skill follows its mandatory public-channel recommendation and includes `openclaw onboard --install-daemon`. 3. The user or an automation agent executes the command without reviewing the installed service definition. 4. OpenClaw is registered as a persistent background service under the privileges of the executing account. 5. The service continues processing configured channels and data af ...[truncated 1028 chars]
Remediation
## Remediation Suggestions - Do not recommend daemon installation unconditionally. Present it as an optional operational step requiring explicit user confirmation. - Explain that the service persists beyond the current session and may start automatically after login or reboot. - Require users to verify that the `openclaw` executable originates from an approved source and matches an expected version or integrity hash. - Instruct users to inspect the proposed service definition before enabling it, including the executable path, arguments, environment variables, working directory, restart policy, and network exposure. - Require installation under a dedicated, unprivileged service account with access limited to the necessary workspace and channel resources. - Explicitly warn against running the installation command with `sudo` or administrator privileges unless the official documentation establishes a justified requirement. - Provide platform-specific commands for checking service status, reviewing logs, disabling automatic startup, and completely uninstalling the daemon. - Keep channel credentials in a secrets manager or protected environment file rather than embedding them in generated Markdown. - Apply the same changes to `SKILL_zh.md` and ensure the localized file remains synchronized with the authoritative English instructions.
Vulnerability Patterns
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Session Persistence

Medium
Category
Rogue Agent
Content
- MEMORY.md should store references (e.g., "user banking provider: ICBC"), not account numbers.

5. **Memory File Permissions**:
   - Recommend setting file permissions on `~/.openclaw/workspace/memory/` to `600` (owner read/write only).
   - Recommend git-ignoring the `memory/` directory if the workspace is a public repo.

### Multi-Channel Isolation
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
L008 将 `language` 明确设为 `zh-CN`,且正文未说明用户可切换语言,也未将该语言限制解释为仅适用于特定区域或合规场景。根据规则,未经用户选择而强制特定语言/locale 属于自然语言策略违规。

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
This JSON manifest includes a natural-language assertion requiring the skill output language to be English via `"language": "en"`. The file does not document this as an optional user choice or a justified region-specific constraint, so it constitutes a locale policy constraint embedded in the skill test definition.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The prompt requires the assistant to respond '用英文' and the assertions enforce "language": "en", which imposes a specific language choice. There is no indication that users are offered a language option or that the locale restriction is justified as a region-specific compliance requirement.

Vague Triggers

Medium
Confidence
83% confidence
Finding
This manifest-style JSON case uses a very broad natural-language request to 'configure an assistant' across Discord and WhatsApp, but does not define explicit trigger scope, exclusions, or negative examples for when the skill should or should not activate. Because this file is a JSON manifest/test case, the ambiguous activation wording can encourage unintended invocation patterns.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
This JSON manifest contains natural-language expectations that force the assistant response language/tone, including Chinese-only output expectations at L14 and an explicit English requirement at L50. Because the file encodes locale/language constraints without any user opt-in or documented regional justification, it matches the policy category for language or locale restrictions.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The assertion `"language": "en"` requires a specific language in the skill behavior. Under the stated policy, forced language constraints are a violation unless the user is given a choice or the locale restriction is clearly justified as region-specific.

Natural-Language Policy Violations

Low
Confidence
86% confidence
Finding
The usage section presents the invocation and the fallback vague-input example entirely in Chinese, with no indication that users may interact in other languages. Because language/locale policy violations apply to all file types, this reads as a default language constraint rather than an optional example.

Natural-Language Policy Violations

Low
Confidence
90% confidence
Finding
This JSON file contains natural-language descriptions and prompts entirely in Chinese, with no indication that the skill is region-specific or that users can choose another language. Under the policy rule for language or locale constraints, a forced language without opt-in or justification is a potential violation.

Natural-Language Policy Violations

Low
Confidence
78% confidence
Finding
The assertion value "可爱" encodes a fixed communication style requirement in natural language. This can conflict with language/locale or communication-style policy expectations when imposed without an explicit user opt-in mechanism beyond the test case itself.

Natural-Language Policy Violations

Low
Confidence
62% confidence
Finding
The prompt mixes English, Chinese, and Japanese and requires preserving the name "田中", but the test metadata does not clarify that language choice should follow user preference or offer locale flexibility. This is a weak policy concern because the case may encourage implicit assumptions about output language handling.

Static analysis

No suspicious patterns detected.