Back to skill

Security audit

Alibaba Cloud Platform OpenClaw Setup

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent OpenClaw setup guide, but it steers users toward root-level installs, mutable dependencies, broad messaging access, persistent services, and privileged workspaces that need careful review before use.

Review and harden this before installing on a real host. Use a dedicated unprivileged service account, avoid /root/ as the workspace, pin and verify all packages and plugins, avoid curl-to-bash as root, keep secrets in a protected secret store or chmod 600 config outside the agent workspace, prefer pairing or allowlists for all channels, and inspect the generated service before enabling it.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
Findings (7)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:31
Finding

Root-Level Remote Script Retrieval and Immediate Execution

Content
View full analysis
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs ``` ### Technical Analysis The workflow instructs the operator to establish a root SSH session and pipe an externally retrieved script directly into Bash. The downloaded content is neither inspected nor verified using a pinned checksum or cryptographic signature before execution. HTTPS authenticates the connection under normal conditions but does not guarantee that the upstream script is safe, immutable, or uncompromised. Because the command executes as root, any command returned by the endpoint receives unrestricted control over the target host. Installing Node.js is relevant to the declared setup workflow, but executing a mutable remote script as root exceeds the minimum privilege and verification requirements necessary to accomplish that task. ### Attack Path 1. An attacker compromises the upstream host, publishing pipeline, maintainer account, DNS resolution, or another trusted component in the delivery chain. 2. The attacker modifies the response from `https://deb.nodesource.com/setup_20.x`. 3. An operator follows the Skill and executes the response through `bash`. 4. The payload runs with root privileges. 5. The payload can access credentials, modify packages and services, create accounts, alter SSH configuration, or install persistent malware. ### Impact Assessment Successful exploitation provides arbitrary code execution as root and therefore complete control of the target Linux host. The attacker could access OpenClaw and channel credentials, modify system files, intercept future messages, pivot through available SSH or cloud credentials, and establish persistence. ]]>
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
SKILL.md:41
Finding

Unpinned OpenClaw and Channel Plugin Dependencies

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
references/config.md:80
Finding

Agent Workspace Grants Access to the Root User’s Home Directory

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
references/config.md:98
Finding

Open DingTalk and Feishu Policies Expose the Agent to Untrusted Senders

Content
View full analysis
", "clientSecret": "", "gatewayToken": "", "sessionTimeout": 1800000, "dmPolicy": "open", "allowFrom": ["*"] }, "feishu": { "enabled": true, "domain": "feishu", "dmPolicy": "pairing", "groupPolicy": "open", ``` The Feishu guide repeats the open group default at `references/feishu-setup.md:54-60`: ```json "feishu": { "enabled": true, "domain": "feishu", "dmPolicy": "pairing", "groupPolicy": "open", "accounts": { ``` ### Technical Analysis DingTalk direct messages are accepted from any sender through `dmPolicy: "open"` and `allowFrom: ["*"]`. Feishu group processing is also configured as open. These defaults unnecessarily expose the agent to untrusted input and make prompt-injection attempts, unauthorized resource consumption, social engineering, and unintended tool invocation more likely. This exposure is especially dangerous because the same template grants the agent a `/root/` workspace and enables third-party plugins. Open messaging access should not be combined with privileged filesystem or tool access. ### Attack Path 1. An untrusted enterprise user sends the DingTalk bot a direct message or posts in a Feishu group accessible to the bot. 2. The open policy admits and processes the message without explicit administrator pairing or allowlisting. 3. The message contains prompt-injection instructions designed to access files, expose secrets, invoke tools, or alter operations. 4. The agent or a vulnerable plugin acts on those instructions using available filesystem, channel, model, or gateway privileges. 5. Sensitive information or unauthorized actions ar ...[truncated 467 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
references/config.md:98
Finding

Reusable Channel Secrets Are Stored in Plaintext Configuration

Content
View full analysis
", "clientSecret": "", "gatewayToken": "", "sessionTimeout": 1800000, "dmPolicy": "open", "allowFrom": ["*"] }, "feishu": { "enabled": true, "domain": "feishu", "dmPolicy": "pairing", "groupPolicy": "open", "accounts": { "main": { "appId": "", "appSecret": "", "botName": "OpenClaw Assistant" } } }, "discord": { "enabled": true, "token": "", ``` The repository contains placeholders rather than live secrets. The vulnerability is the recommended storage pattern and absence of mandatory permission controls. ### Technical Analysis The configuration template directs users to place reusable DingTalk, Feishu, Discord, and gateway credentials directly in a JSON file. The documentation does not require strict ownership or file modes and does not consistently prefer a secret manager or protected service-credential mechanism. Plaintext storage increases exposure to other local users, compromised plugins, broad backup jobs, diagnostic bundles, support artifacts, and accidental configuration sharing. Storing these credentials beneath a root workspace also makes them potentially accessible to the agent itself. ### Attack Path 1. An administrator replaces the placeholders with production credentials. 2. The configuration is created with permissive default permissions, included in a backup, or exposed to an installed plugin. 3. A local process, user, compromised plugin, or collected diagnostic artifact reads the JSON file. 4. The attacker extracts the channel or gateway cred ...[truncated 439 chars]
Remediation
View remediation

T06 · System Persistence

Error
Location
SKILL.md:108
Finding

Gateway Installation Establishes a Persistent Service from Unverified Components

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
references/dingtalk-setup.md:49
Finding

DingTalk Guide Requests Broad Administrative and Directory Permissions

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (12)

Session Persistence

Medium
Category
Rogue Agent
Confidence
78% confidence
Finding

The skill instructs operators to create or update persistent local configuration in ~/.openclaw/openclaw.json containing provider settings and channel credentials. Persisting secrets and operational state in a user home directory increases the chance of credential leakage through weak file permissions, backups, shell access, or accidental sharing of config files and logs.

Content

Scanner excerpt · SKILL.md (reported line 77)May include surrounding context.

md
## Step 4: Configure `openclaw.json`

Create or update `~/.openclaw/openclaw.json` with:

- `models.providers.bailian` for DashScope endpoint and models.
- `agents.defaults.model.primary` in `provider/model` format, default to `bailian/glm-5`.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Lines L165-L167 describe a generic workflow centered on determining whether an operation is read-only or mutating and running a minimal read-only query first. However, the rest of the skill is an imperative setup procedure that installs packages/plugins, writes configuration files, and starts/restarts services, with no corresponding read-only verification step before mutation. This is an active contradiction in the documentation, not merely omitted detail.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The example configuration enables a DingTalk connector with dmPolicy: "open" and allowFrom: ["*"], which permits messages from any sender without documenting the exposure risk. In the context of an agent-installation/configuration skill for production Linux hosts, this can lead operators to deploy an internet- or org-wide reachable bot that accepts untrusted input by default, increasing the chance of abuse, prompt injection, data exposure, or unauthorized agent use.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The guide instructs operators to retrieve and use the DingTalk AppSecret but does not identify it as a sensitive credential or warn against placing it in plaintext configs, logs, screenshots, or source control. In an infrastructure/setup skill, this omission materially increases the chance of credential leakage, which could allow unauthorized use of the DingTalk app integration.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · references/dingtalk-setup.md (reported line 63)May include surrounding context.

md
1. Navigate to: **Version Management and Release**
2. Create new version
3. Fill in version details
4. Submit for review (internal apps usually auto-approve)
5. Publish to enterprise

## Step 6: Install Official OpenClaw Connector

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The configuration mapping tells users to place clientSecret into the OpenClaw configuration but provides no secure handling guidance. Because this skill is used for provisioning and standardizing deployments, the omission can normalize insecure secret storage practices across multiple hosts and environments.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
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.

Content

Scanner excerpt · references/discord-setup.md (reported line 6)May include surrounding context.

md
## Contents

1. Prerequisites
2. Create Discord bot
3. Configure OpenClaw
4. Start and verify
5. Pairing and policy checks

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The guide instructs users to place a live Discord bot token in a JSON config file or export it as an environment variable, but it does not explicitly warn that the token is a sensitive secret that must not be committed, logged, shared, or left in shell history. In an infrastructure setup skill, this omission increases the chance of credential leakage, which could let an attacker control the bot, read or send messages via the configured integration, and abuse the OpenClaw channel.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
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.

Content

Scanner excerpt · references/feishu-setup.md (reported line 25)May include surrounding context.

openclaw plugins list | grep feishu

text

## Create Feishu App

1. Visit Feishu Open Platform (`https://open.feishu.cn/app`) and create an enterprise app.
2. Copy `App ID` and `App Secret` from credentials page.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The guide explicitly instructs users to copy the Feishu App Secret but does not label it as sensitive or warn against exposing it in docs, terminals, screenshots, or shared notes. In an infrastructure setup skill, this omission can normalize unsafe handling of credentials and increase the chance of token leakage that would let an attacker impersonate the app or abuse the Feishu integration.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The example shows a plaintext appSecret stored in ~/.openclaw/openclaw.json without any warning about filesystem permissions, secret management, or safer alternatives. Because this skill is for provisioning real Linux hosts, users are likely to copy the example directly, creating a durable local secret exposure that could be harvested by other users, backups, support bundles, or malware on the host.

Content

No source excerpt is available for this finding.

External Script Fetching

Low
Category
Supply Chain
Confidence
97% confidence
Finding

The command curl -fsSL https://deb.nodesource.com/setup_20.x | bash - downloads and immediately executes a remote script as root, creating a direct supply-chain and remote-code-execution risk. If the remote endpoint, transport, DNS, or hosting chain is compromised, arbitrary commands would run with full privileges on the target host.

Content

Scanner excerpt · SKILL.md (reported line 32)May include surrounding context.

bash
ssh root@<server>
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs
node --version
npm --version