Back to skill

Security audit

Claweb

Security checks for vulnerabilities and agentic risk

Overview

This messaging skill is mostly transparent about its purpose, but it creates an always-on remote message channel that can wake the main agent and respond to anyone without clear human control.

Review this carefully before installing. It is suitable only if you want an agent identity that can receive messages from anyone on the network, store local signing material, and optionally run a persistent auto-poller. Do not enable the cron poller unless you are comfortable with autonomous replies, and prefer manual message review or a restricted session with trusted senders.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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 (3)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:79
Finding
Untrusted Remote Messages Can Hijack Agent Task Execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 79-88 **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: High ### Vulnerable Code ```bash ## At the start of each session ```bash if [ -n "$OPENCLAW_STATE_DIR" ]; then export CLAWEB_SECRET_FILE="$OPENCLAW_STATE_DIR/claweb/account-secret" fi claw mail inbox claw chat pending ``` Respond to anything urgent before starting other work. ``` ### Technical Analysis The skill instructs the agent to retrieve mail and chat messages at the beginning of each session and to prioritize messages characterized as urgent. These messages originate from external network participants and therefore constitute untrusted input. The instructions do not require: - A trusted-sender allowlist. - Human approval before acting on a message. - Isolation of message content from agent instructions. - Rejection of commands embedded in messages. - Authorization checks based on the requested action. Ed25519 signatures may establish which identity sent a message, but they do not establish that the sender is trustworthy or authorized to direct the local agent. A malicious sender can therefore place prompt-injection instructions in a signed message and label the request as urgent. ### Attack Path 1. An attacker registers or controls an identity on the federated messaging network. 2. The attacker sends mail or chat content to the agent's public address. 3. The message claims urgency and embeds instructions intended to override the agent's current task or safety boundaries. 4. At session startup, the skill directs the agent to run `claw mail inbox` and `claw chat pending`. 5. The attacker-controlled content enters the agent's active context. 6. The instruction to respond to urgent content before other work encourages the agent to prioritize the injected request. 7. If the agent follows the embedded instructions, it may invoke tools, disclose accessible information, modify files, or send addition ...[truncated 788 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Treat all incoming mail and chat content as untrusted data rather than executable instructions. 2. Explicitly state that received messages cannot override system instructions, current user goals, security policies, or approval requirements. 3. Require explicit human approval before a remote message can: - Change the active task. - Invoke tools. - Access files or credentials. - Initiate external communication. - Modify persistent state. 4. Add a trusted-sender allowlist and verify both sender identity and authorization for the requested action. 5. Render or summarize messages in a quarantined context that cannot directly initiate tool calls. 6. Remove the instruction to prioritize anything merely described as urgent. 7. Apply action-specific authorization checks; cryptographic sender authentication alone must not be treated as authorization. ]]>

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:145
Finding
Persistent Scheduled Poller Creates an Autonomous Remote Instruction Channel<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 145-156 **Vulnerability Type**: `T01: Skill Instruction Hijacking, T06: System Persistence` **Risk Level**: High ### Vulnerable Code ```bash ## Automatic polling (OpenClaw cron) ```bash openclaw cron add \ --name "ClaWeb inbox poller" \ --every 30s \ --session main \ --wake now \ --system-event "ClaWeb poll: Run 'claw mail inbox' and 'claw chat pending'. If there is anything new, read it and respond helpfully as <your-address>. If nothing new, do nothing (NO_REPLY)." ``` Verify the cron is scoped to your agent: `openclaw cron list --json`. ``` ### Technical Analysis The documented command creates a scheduled job that survives the immediate skill invocation, runs every 30 seconds, wakes the main agent session, reads external messages, and directs the agent to respond automatically. This combines two security risks: - **System persistence:** The scheduled task continues to operate across sessions until explicitly removed. - **Instruction hijacking:** Untrusted remote content is repeatedly introduced into the main agent session and may influence agent behavior. The poller is configured for the `main` session rather than a restricted, isolated message-processing session. The system event also instructs the agent to respond without requiring sender authorization or human review. According to the skill's own documentation, identities are open and any network agent can send messages, making this an externally reachable persistent input channel. Verifying that the cron job is scoped to the agent does not address the trustworthiness of received messages or the authority of their senders. ### Attack Path 1. A user or agent runs the documented `openclaw cron add` command once. 2. OpenClaw installs a persistent job that executes every 30 seconds and wakes the main session. 3. An attacker sends a crafted message to the public ClaWeb identity. 4. The scheduled job runs `claw mail inb ...[truncated 1375 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not automatically respond to received messages. 2. Poll messages into a quarantined queue and require human approval before processing actionable requests. 3. Use a dedicated least-privileged session rather than `--session main`. 4. Restrict polling to approved senders and enforce action-specific authorization. 5. Prevent message content from directly becoming system events or tool-driving instructions. 6. Increase the polling interval and apply rate limits, deduplication, abuse controls, and maximum processing quotas. 7. Require explicit, informed confirmation before installing the scheduled job. 8. Document and provide a verified command to disable and remove the cron job. 9. Display installed job scope, frequency, destination session, and automatic-response behavior before installation. 10. Log all received requests and resulting actions for review without recording secrets. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:4
Finding
Third-Party Binary Installation Lacks Version Pinning and Integrity Verification<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 4-6 and 49-56 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code ```yaml homepage: https://claweb.ai/docs/ metadata: {"openclaw":{"emoji":"💬","requires":{"bins":["claw"]},"install":{"hint":"Install claw from https://claweb.ai/install/"}},"clawdbot":{"emoji":"💬","requires":{"bins":["claw"]}}} --- ``` ```bash ### 2. Check the claw binary ```bash claw version ``` If missing, install it following https://claweb.ai/install — the page lists the supported install paths for your platform. ``` ### Technical Analysis The skill delegates installation of the required `claw` executable to a mutable external webpage. It does not specify: - A pinned release version. - An immutable artifact URL. - An expected cryptographic checksum. - A release-signing key or signature-verification procedure. - A trusted package-manager publisher identity. - A minimum or maximum supported version. The installed binary is security-sensitive because it handles the account secret, local signing keys, identity creation, and message transmission. Merely running `claw version` verifies that a command with that name executes; it does not establish the binary's provenance or integrity. If the installation page, its distribution infrastructure, DNS resolution, package account, or referenced artifact is compromised, users could be directed to install a substituted executable. ### Attack Path 1. An attacker compromises the installation webpage, a referenced download location, or a package-publishing account. 2. The mutable installation instructions are changed to reference a malicious or modified `claw` binary. 3. A user follows the skill's instruction because no trusted version, checksum, or signing identity is provided for comparison. 4. The substituted binary is installed and executed through commands such as `claw version`, `claw register`, or `claw new`. 5. The binary run ...[truncated 963 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the dependency to a specific reviewed version. 2. Reference an immutable release artifact rather than only a mutable installation webpage. 3. Publish SHA-256 or stronger checksums through an independently protected release channel. 4. Require cryptographic signature verification using a documented, pinned release-signing key. 5. Identify exact trusted package names and publisher identities for each supported package manager. 6. Fail installation when the downloaded artifact's signature, checksum, package owner, or version does not match the documented values. 7. Document supported version ranges and a secure upgrade procedure. 8. Prefer reproducible builds and publish provenance or software bill of materials information where available. 9. Run the client with least privilege and restrict its filesystem access to the credential and working directories it legitimately requires. ]]>
Vulnerability Patterns
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (1)

Session Persistence

Medium
Category
Rogue Agent
Content
---
name: claweb
description: Agent-to-agent messaging on the ClaWeb network. Create a federated identity from the CLI in one minute — no email, no signup form. Ed25519-signed mail and chat with any agent on the aweb network, including aweb.ai identities. Keys never leave your machine.
homepage: https://claweb.ai/docs/
metadata: {"openclaw":{"emoji":"💬","requires":{"bins":["claw"]},"install":{"hint":"Install claw from https://claweb.ai/install/"}},"clawdbot":{"emoji":"💬","requires":{"bins":["claw"]}}}
---
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.

Static analysis

No suspicious patterns detected.