T03 · Remote Payload Retrieval and Execution
- Location
docs/LOCAL_SETUP_GUIDE.md:43- Finding
Setup documentation executes mutable remote installation scripts
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill's main purpose is coherent, but it exposes powerful Cursor/tmux control without enough authorization or scoping and includes unsafe setup instructions.
Review before installing. Use only in a trusted, isolated OpenClaw environment; remove the personal backup restore instructions, avoid curl-to-shell installers, require authentication for /cursor, restrict allowed project roots, remove default --trust/--force behavior, and fix shell escaping before using it with valuable repositories or credentials.
docs/LOCAL_SETUP_GUIDE.md:43Setup documentation executes mutable remote installation scripts
docs/LOCAL_SETUP_GUIDE.md:112Unrelated personal backup restores executable extensions, agent state, and scheduled-task configuration
cursor-agent-system/scripts/spawn-cursor.sh:255User-controlled values are interpolated into an executable runner script without shell escaping
extensions/openclaw-cursor-agent/index.js:610Unauthenticated command interface can control trusted Cursor coding sessions
Referenced artifact was not completely inspected
- [插件入口](extensions/openclaw-cursor-agent/index.js) — 工具注册和执行逻辑
Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
Piping curl output directly into sudo -E bash is a classic dangerous chaining pattern because it combines download, interpretation, and privileged execution into one opaque step. In this skill's context, that is especially risky because the host is being prepared to run persistent agent services and store sensitive sessions and configuration.
sudo apt update && sudo apt upgrade -y
# 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# 安装 ffmpeg
The WSL instructions repeat the same unsafe chain of downloading content and immediately executing it as root. This makes compromise easy if the remote content, transport, or environment is manipulated.
sudo apt install -y curl
# 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs ffmpeg
# 验证
curl | sh is an unsafe chain because it executes network-fetched code without inspection or integrity validation. On a machine exposing OpenClaw services and bot webhooks, that could lead to remote control of the host and long-lived persistence through the installed tooling.
Linux:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Piping a remotely fetched script directly into bash executes unreviewed code from the network with the user's privileges, eliminating any inspection or integrity verification step. In this agent ecosystem, where the installed CLI is later used to run persistent background tasks, compromise at install time could grant durable execution capability and downstream access to projects, credentials, and shell sessions.
在 WSL 中执行:
curl https://cursor.com/install -fsS | bash
agent --version
The | bash construct is dangerous because it chains network retrieval directly into shell execution, making tampering, server compromise, or operator copy/paste mistakes immediately executable. In the context of a tool meant to orchestrate background coding agents through tmux and WSL, this raises the risk of persistent compromise of the execution environment.
在 WSL 中执行:
curl https://cursor.com/install -fsS | bash
agent --version
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).
t: "",
defaultProjectPath: "",
executionMode: process.platform === "win32" ? "wsl" : "direct",
timeoutMs: 120000,
shell: {
executable: process.platform === "win32" ? "wsl.exe" : "bash",
args: [],
workingDirectory: "",
wslDistro: "",
},
};
const SPAWN_SCHEMA = {
type: "object",
required: ["taskName", "taskDescription"],
properties: {
taskName: { type: "string", description: "Short task label, for example feature-auth" },
taskDescription: { type: "string", description: "The prompt that Cursor CLI should execute" },
projectPath: { type: "string", description: "Optional project directory" },
priority: { type: "string", description: "Task priority, for example low, normal, high" },
eta: { type: "string", description: "Estimated duration, for example 45分钟" },
taskFile: { type: "string", description: "Optional existing markdown task file" },
},
};
const SESSION_SCHEMA = {
type: "object",
required: ["sessionQuery"],
properti
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.
cursor-agent-system/
├── scripts/
│ ├── common.sh # Shared utilities
│ ├── spawn-cursor.sh # Start background task
│ ├── check-status.sh # Query task status
│ ├── attach-session.sh # Attach to tmux session
│ ├── send-command.sh # Send instructions to task
The README presents background execution and task termination as normal operations but does not warn users that these actions create persistent processes, consume system resources, and can alter code or kill active work. For an agent skill that bridges chat input to tmux-managed Cursor CLI sessions, the lack of safety warnings and operational constraints increases the risk of accidental or unauthorized system-impacting actions.
The README encourages broad natural-language commands like starting, modifying, and stopping persistent coding jobs without defining confirmation requirements, scope limits, or safety boundaries. In a skill that can launch long-running tmux/Cursor sessions and send follow-up commands, vague triggers increase the chance of unintended execution, misuse, or prompt-driven task manipulation.
The skill advertises and references capabilities that can start persistent tmux-backed coding sessions and interact with the shell, but it declares no explicit tool scope or permission boundaries. In an agent ecosystem, missing scope declarations increases the chance that the skill is invoked with broader-than-necessary access, enabling unintended file, environment, or command execution paths.
The activation cues are broad and include common phrases about background tasks, status checks, tmux, and generic task control, which can cause over-triggering in ordinary conversation. If auto-selected, the skill could launch or manipulate persistent coding sessions when the user only intended to discuss them, creating unnecessary system-side actions.
Most user-facing documentation and examples are written in Chinese, and the natural-language mapping assumes Chinese inputs, while the skill does not state that language is optional or provide an opt-in choice. This creates a locale/language constraint that is not documented as region-specific or user-selectable.
The workflow explicitly describes starting, controlling, and killing persistent background sessions but provides no user warning or confirmation around system-impacting behavior. Because these actions can consume resources, alter code, or terminate active work, lack of warning raises the risk of accidental destructive or costly operations.
The script's comments, usage text, and operational messages are entirely in Chinese, which imposes a specific language on users without offering any choice or opt-in. Under the stated policy, a skill should not force a language or locale unless it is explicitly justified or user-selectable.
User-facing comments, help text, status labels, and runtime messages are consistently hard-coded in Chinese throughout the script. There is no indication of user opt-in, locale detection, or documented justification that this skill is intentionally limited to a Chinese-speaking environment.
The info, warn, and error helpers emit user-facing text only in Chinese (e.g. 信息, 警告, 错误, 缺少命令). This enforces a specific language for operator-visible output without offering a language choice or documenting a justified locale restriction, which matches the policy-violation category.
The script's comments, usage text, and user-facing messages are entirely in Chinese, such as the description and installation prompts. This imposes a specific language on all users with no opt-in or alternative locale handling, which matches the language/locale policy violation category.
The script launches the Cursor/agent CLI with both --trust and --force, suppressing normal safety friction while passing a prompt built from user-controlled task content into a long-running coding agent operating on a real workspace. In this skill’s context, that materially increases the chance of unsafe file modification, command execution, or acceptance of dangerous instructions without any explicit user confirmation or warning at launch time.
The skill template forces all instructions, status output, and control guidance to be in Chinese. This is a natural-language policy concern because the file does not provide user opt-in, alternative language options, or a documented reason for restricting the skill to a specific language/locale.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -