Back to skill

Security audit

OpenClaw Docs

Security checks for vulnerabilities and agentic risk

Overview

This is a documentation-only skill, but its install docs repeatedly recommend executing mutable remote installer scripts directly in a shell.

Review the install commands before use. Prefer package-manager installs, pinned versions, downloaded scripts inspected locally, and checksum or signature verification before execution. Avoid letting an agent automatically run the documented curl-to-bash or PowerShell iex installer commands without explicit confirmation.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
references/install.md:42
Finding

Unverified Remote Installer Scripts Are Executed Directly

Content
View full analysis

Vulnerability Details

File Location: references/install.md:42-54 and additional installation documents listed below
Vulnerability Type: Remote payload retrieval followed by immediate shell execution
Risk Level: Critical

Evidence

The primary installation guide recommends executing mutable remote responses directly:

sh
curl -fsSL https://openclaw.ai/install.sh | bash

The Windows equivalent has the same trust-boundary issue:

powershell
iwr -useb https://openclaw.ai/install.ps1 | iex

The guide also supplies an unattended variant:

sh
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard

Other confirmed examples include:

sh
curl -fsSL https://raw.githubusercontent.com/openclaw/openclaw-ansible/main/install.sh | bash
RUN curl -fsSL https://bun.sh/install | bash
curl -fsSL https://get.docker.com | sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh))"

The Homebrew example appears at references/help/faq.md:1136; its actual documented command has a single closing parenthesis:

sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

The same pattern was confirmed at:

  • references/install.md:42,47,54
  • references/start/getting-started.md:41,46
  • references/help/faq.md:666,701,841,846,877,896,902,908,950,1136,1831
  • references/install/ansible.md:42
  • references/install/docker.md:290
  • references/install/exe-dev.md:83
  • references/install/hetzner.md:116
  • references/install/installer.md:38,43,48,53,58,105,110,115,120,144,149,154,159,188,227,233,238,255
  • references/install/macos-vm.md:95
  • references/install/updating.md:37,47
  • references/reference/RELEASING.md:70

Technical Analysis

These commands combine retrieval and execution into one operation. The downloaded content is not pinned to an immutable version and is not authenticated through a published checksum or digital signat ...[truncated 2728 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace every pipe-to-shell and Invoke-Expression example with a staged installation process:

    • Download the installer to a local file.
    • Retrieve its checksum or signature through a separately authenticated release channel.
    • Verify the artifact before execution.
    • Allow the user to inspect it.
    • Execute it only after explicit confirmation.
  2. Pin installer artifacts to immutable release versions. For GitHub-hosted material, use a reviewed commit hash or signed release asset rather than main, HEAD, or latest.

  3. Publish SHA-256 or stronger checksums and sign releases using a documented mechanism such as Sigstore, minisign, or GPG. Pin the expected signing identity or public key in the documentation.

  4. Prefer package-manager installation where package integrity and provenance controls are available. Document exact package names and versions to reduce dependency-confusion and unexpected-update risks.

  5. Avoid running installation steps as root unless a specific operation requires it. Separate unprivileged download and validation from narrowly scoped privileged installation actions.

  6. For automation and CI, use version-pinned artifacts stored in an approved internal mirror or artifact registry rather than downloading and executing mutable scripts during every run.

  7. Add an explicit warning that HTTPS alone does not verify script provenance and that users should not execute an installer when checksum or signature verification fails.

A safer pattern is:

sh
curl --fail --location --proto '=https' --tlsv1.2 \
  --output openclaw-install.sh \
  'https://example.invalid/releases/openclaw-VERSION/install.sh'

printf '%s  %s\n' 'PUBLISHED_SHA256' 'openclaw-install.sh' | sha256sum --check -
less openclaw-install.sh
bash openclaw-install.sh

The real documentation should substitute a versioned first-party release URL and an independently published, verified checksum or signature.

Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3614)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/start/getting-started.md](references/start/getting-started.md) - Quick start guide

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/start/setup.md](references/start/setup.md) - Full setup

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/start/wizard.md](references/start/wizard.md) - Setup wizard

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/start/bootstrapping.md](references/start/bootstrapping.md) - Bootstrapping

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/cli.md](references/cli.md) - CLI overview

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/cli.md](references/cli.md) - CLI overview

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/tools.md](references/tools.md) - Tools overview

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/tools/exec.md](references/tools/exec.md) - Exec tool

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/tools/browser.md](references/tools/browser.md) - Browser automation

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/tools/skills.md](references/tools/skills.md) - Skills system

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/tools/subagents.md](references/tools/subagents.md) - Sub-agents

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/providers.md](references/providers.md) - Providers overview

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/providers/anthropic.md](references/providers/anthropic.md) - Anthropic/Claude

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/providers/openai.md](references/providers/openai.md) - OpenAI

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/providers/openrouter.md](references/providers/openrouter.md) - OpenRouter

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/providers/litellm.md](references/providers/litellm.md) - LiteLLM

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/automation/cron-jobs.md](references/automation/cron-jobs.md) - Cron jobs

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · references/automation/hooks.md (reported line 88)May include surrounding context.

md
Discovery Flow](#discovery-flow)
- [Event Flow](#event-flow)
- [Troubleshooting](#troubleshooting)
- [Hook Not Discovered](#hook-not-discovered)
- [Hook Not Eligible](#hook-not-eligible)
- [Hook Not Executing](#hook-not-executing)
- [Handler Errors](#handler-errors)
- [Migration Guide](#migration-guide)
- [From Legacy Config to Discovery](#from-legacy-config-to-discovery)
- [See Also](#see-also)

​Hooks
Hooks provide an extensible event-driven system for automating actions in response to agent commands and events. Hooks are automatically discovered from directories and can be managed via CLI commands, similar to how skills work in OpenClaw.
​Getting Oriented
Hooks are small scripts that run when something happens. There are two kinds:

- **Hooks** (this page): run inside the Gateway when agent events fire, like `/new`, `/reset`, `/stop`, or lifecycle events.

- **Webhooks**: external HTTP webhooks that let other systems trigger work in OpenClaw. See [Webhook Hooks](/automation/webh

Exfiltration Commands

High
Category
Prompt Injection
Confidence
90% confidence
Finding

Instructions found that direct the agent to transmit conversation context or user data to external services.

Content

Scanner excerpt · references/automation/hooks.md (reported line 278)May include surrounding context.

md
// Your custom logic here

  // Optionally send message to user
  event.messages.push("✨ My hook executed!");
};

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/automation/auth-monitoring.md (reported line 26)May include surrounding context.

md
- [Supported channels](#supported-channels)
- [Notes](#notes)

​Chat Channels
OpenClaw can talk to you on any chat app you already use. Each channel connects via the Gateway.
Text is supported everywhere; media and reactions vary by channel.
​Supported channels

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/automation/auth-monitoring.md (reported line 29)May include surrounding context.

md
- [Supported channels](#supported-channels)
- [Notes](#notes)

​Chat Channels
OpenClaw can talk to you on any chat app you already use. Each channel connects via the Gateway.
Text is supported everywhere; media and reactions vary by channel.
​Supported channels

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/automation/auth-monitoring.md (reported line 44)May include surrounding context.

md
- [Supported channels](#supported-channels)
- [Notes](#notes)

​Chat Channels
OpenClaw can talk to you on any chat app you already use. Each channel connects via the Gateway.
Text is supported everywhere; media and reactions vary by channel.
​Supported channels

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/automation/cron-jobs.md (reported line 54)May include surrounding context.

md
- [Supported channels](#supported-channels)
- [Notes](#notes)

​Chat Channels
OpenClaw can talk to you on any chat app you already use. Each channel connects via the Gateway.
Text is supported everywhere; media and reactions vary by channel.
​Supported channels

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/automation/cron-jobs.md (reported line 63)May include surrounding context.

md
- [Supported channels](#supported-channels)
- [Notes](#notes)

​Chat Channels
OpenClaw can talk to you on any chat app you already use. Each channel connects via the Gateway.
Text is supported everywhere; media and reactions vary by channel.
​Supported channels

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/automation/cron-jobs.md (reported line 81)May include surrounding context.

md
- [Supported channels](#supported-channels)
- [Notes](#notes)

​Chat Channels
OpenClaw can talk to you on any chat app you already use. Each channel connects via the Gateway.
Text is supported everywhere; media and reactions vary by channel.
​Supported channels