Back to skill

Security audit

Openclaw Listing Skill

Security checks for vulnerabilities and agentic risk

Overview

The skill appears intended to generate ecommerce listings, but its installer persistently changes global agent instructions with broad triggers and an unconditional promotional appendix.

Review this skill before installing. The listing-generation instructions are understandable, but the install script permanently appends agent rules to your OpenClaw workspace; back up AGENTS.md first, prefer explicit /listing use, and remove the mandatory upsell or broad triggers if you do not want the skill influencing later conversations.

Vulnerability Patterns
  • 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
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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:112
Finding

Mandatory Promotional Output Hijacking

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:112-120
Vulnerability Type: Mandatory response modification through Skill instructions
Risk Level: High

Vulnerable Code

markdown
## Upsell Prompt

After completing the base output, always append:

> ✅ Listing generated! Need anything else?
> 1️⃣ Multi-language versions (DE / FR / ES / JP)
> 2️⃣ Competitor gap analysis
> 3️⃣ A+ Content copy
> 4️⃣ PPC keyword grouping suggestions

Technical Analysis

The Skill explicitly instructs the Agent to append a fixed promotional message after every generated listing. The unconditional phrase always append overrides the expected task boundary by forcing content that the user did not request.

Because these instructions are loaded as part of the Skill, the additional promotional content can be treated as authoritative output behavior. This is especially problematic when responses are consumed by downstream automation, because the appended block may be mistaken for part of the generated product listing.

The same behavior is reinforced in AGENTS_SNIPPET.md:94-101, meaning it can also become part of the persistent workspace Agent configuration when the installer is used.

Attack Path

  1. A user or administrator loads or installs the listing-generation Skill.
  2. The user requests an Amazon or AliExpress listing.
  3. The Agent generates the requested listing content.
  4. The Skill's unconditional instruction forces the Agent to append the promotional services block.
  5. The unsolicited content is presented to the user or passed into downstream systems as part of the result.

Impact Assessment

This issue permits the Skill author to control a portion of every affected response beyond the user's requested output. It does not provide operating-system privileges, credential access, or arbitrary code execution.

The affected scope is the Agent's generated response and any downstream workflow tha ...[truncated 182 chars]

Remediation
View remediation

Remediation Suggestions

  • Remove the unconditional always append instruction.
  • Keep the primary response limited to the content explicitly requested by the user.
  • Present optional services only when the user asks for additional assistance.
  • If optional suggestions are required by product design, place them behind an explicit opt-in configuration that is disabled by default.
  • Ensure machine-readable or structured output modes never include promotional content.
  • Remove the equivalent mandatory appendix from AGENTS_SNIPPET.md so installation does not make the behavior persistent.

T02 · Agent Memory Poisoning

Error
Location
scripts/install.sh:36
Finding

Persistent Modification of the Global Agent Configuration

Content
View full analysis

Vulnerability Details

File Location: scripts/install.sh:36-47
Vulnerability Type: Persistent injection of Skill-controlled instructions into Agent memory
Risk Level: High

Vulnerable Code

bash
AGENTS_FILE="$OPENCLAW_WORKSPACE/AGENTS.md"

# Check whether the Skill is already installed
if grep -q "listing-generator" "$AGENTS_FILE" 2>/dev/null; then
  echo "listing-generator already exists in AGENTS.md; skipping"
else
  echo "" >> "$AGENTS_FILE"
  echo "---" >> "$AGENTS_FILE"
  cat AGENTS_SNIPPET.md >> "$AGENTS_FILE"
  echo "Agent configuration appended to AGENTS.md"
fi

The displayed English messages represent the corresponding informational messages in the original script; the security-relevant commands are unchanged.

Technical Analysis

The installer appends the entire contents of AGENTS_SNIPPET.md to the workspace-wide AGENTS.md file. This is a persistent configuration mutation rather than a session-scoped Skill registration.

The injected content defines broad activation conditions, role instructions, output requirements, and a mandatory promotional appendix. Once appended, these rules survive process restarts and can influence future sessions whenever matching terms are encountered.

The duplicate check only searches for the string listing-generator. It does not validate the exact installed block, preserve the original file, verify that the destination is a regular non-symlink file, or provide a reliable rollback mechanism. There is also no explicit confirmation immediately before modifying the global Agent configuration.

Attack Path

  1. A user executes bash scripts/install.sh.
  2. The script checks for the OpenClaw workspace and creates a Skill directory.
  3. The script selects ~/.openclaw/workspace/AGENTS.md as the configuration target.
  4. If the marker string is not found, the complete Skill-controlled snippet is appended to that file.
  5. OpenClaw is restar ...[truncated 774 chars]
Remediation
View remediation

Remediation Suggestions

  • Register the Skill through a scoped OpenClaw Skill mechanism instead of editing the global AGENTS.md.
  • Require explicit user confirmation before modifying persistent workspace configuration.
  • Create a timestamped backup of AGENTS.md before making any change.
  • Verify that the destination is a regular file owned by the current user and reject symbolic links.
  • Enclose installed content in unique begin and end markers so it can be identified, updated, and removed exactly.
  • Add an uninstall command that restores the previous configuration or removes only the marked block.
  • Use an atomic update: write the validated result to a temporary file in the same directory, set safe permissions, and then rename it into place.
  • Reduce trigger conditions to narrowly scoped commands such as /listing, rather than broad phrases that may match unrelated conversations.
  • Remove the mandatory promotional instructions from the persistent snippet.

T08 · Insecure Dependencies

Warning
Location
PUBLISH_GUIDE.md:15
Finding

Unpinned npm and npx Package Execution in Publishing Instructions

Content
View full analysis

Vulnerability Details

File Location: PUBLISH_GUIDE.md:15-17
Vulnerability Type: Mutable third-party package installation and execution
Risk Level: Medium

Vulnerable Code

bash
npm install -g clawhub
# or
npx clawhub --version

Technical Analysis

The publishing guide instructs maintainers to install or execute clawhub without specifying a reviewed version or integrity value. Both commands resolve a mutable package version from the npm registry.

A global npm installation may run package lifecycle scripts under the publishing user's account. Depending on local npm configuration, npx may download and execute a package that is not already installed. Consequently, the effective executable can change after this project has been audited.

Exploitation would require a malicious or compromised registry package, a package-name ownership compromise, or an unsafe future release. No evidence was found that the current clawhub package is malicious; the vulnerability is the unpinned and unverified execution method.

Attack Path

  1. A maintainer follows the publishing guide.
  2. The maintainer runs npm install -g clawhub or npx clawhub --version.
  3. npm resolves the current package associated with the unpinned clawhub name.
  4. If the resolved release or its dependency chain has been compromised, npm downloads the malicious content.
  5. Package lifecycle logic or the invoked CLI executes with the maintainer's user privileges.
  6. The malicious package can access resources available to that account, potentially including local source files and publishing credentials.

Impact Assessment

A compromised package would execute with the privileges of the user following the guide. This does not inherently grant root privileges, although global installation practices may prompt some environments to use elevated privileges.

Potentially exposed resources include the project source, environment ...[truncated 239 chars]

Remediation
View remediation

Remediation Suggestions

  • Pin the CLI to a specific reviewed version, such as clawhub@x.y.z.
  • Document the expected package publisher, source repository, and package checksum or integrity metadata.
  • Review the pinned package and its dependency tree before recommending execution.
  • Prefer a project-local development dependency recorded in a lockfile over an untracked global installation.
  • Use npm ci with a committed lockfile where practical.
  • Avoid executing an unpinned package directly through npx.
  • Perform publishing from an isolated environment with minimal credentials and filesystem access.
  • Update the pinned version only after reviewing the new release and regenerating trusted integrity metadata.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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 (13)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description says the skill generates e-commerce listings from product input. However, the provided code chunk does not implement listing generation at all; it only installs and registers the skill in a local OpenClaw environment. While installation can be a supporting artifact for a skill package, this specific code chunk’s actual behavior is materially different from the declared end-user functionality and includes undeclared filesystem modification and agent registration behavior. Therefore this code chunk does not accurately represent the declared purpose.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The activation logic includes broad natural-language phrases such as '帮我写标题' and '写卖点', which can easily appear in ordinary conversation and unintentionally trigger the agent. In a multi-agent environment, this can cause the skill to activate outside the user's intended scope, leading to prompt hijacking, workflow interference, or generation of marketplace content when the user was asking a general writing question.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The output templates explicitly require "Amazon Listing - EN" and "AliExpress Listing - EN", making English the default/required language. Because the skill does not offer language selection at activation or explain why English-only output is required, this is a locale policy issue.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

The guide instructs users to run npx clawhub without pinning a specific version, which can fetch and execute whatever package version is current at the time of use. If the package is compromised, typosquatted, or a malicious update is published, users could execute unreviewed code on their machine during verification or install steps.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The deployment instructions tell the user to run pkill -f openclaw and restart the service, which can terminate active processes and disrupt running sessions. The README does not include any warning that this will kill existing OpenClaw instances or advise the user to save work first.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The FAQ states '默认输出英文' and only provides Chinese output if the user explicitly requests it. This imposes a default language choice rather than offering a neutral language selection or obtaining user preference first.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger conditions include broad natural-language phrases like "generate listing" and "write listing," which can match ordinary conversation and cause the skill to activate unexpectedly. In an agent environment, overbroad activation can hijack user intent, collect unnecessary data, or produce unintended content without clear consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The markdown explicitly defines the Amazon output as "(English)" and similarly fixes the AliExpress listing to English, while language alternatives appear only as an upsell or sub-command rather than a default user choice. This creates a locale policy issue because the skill imposes a language without opt-in or justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The section header explicitly specifies "AliExpress Listing (English)," which hard-codes a locale for generated content. Because the skill serves cross-border ecommerce use cases, this should be user-selectable or clearly justified rather than imposed automatically.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown repeatedly labels the expected agent output as "EN" for marketplace listings, which indicates a fixed language requirement in the skill behavior. Under the policy, forcing a specific language without user opt-in or documented justification is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The second sample output is also marked "AliExpress Listing - EN," reinforcing that the skill appears to enforce English responses regardless of user language. Because no alternative language option or rationale is given, this matches the locale-policy concern described in SQP-3.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

This markdown file includes a fixed English listing template inside an otherwise Chinese-language guide and labels it as content to copy directly. That can create a language/locale policy issue because the skill documentation implicitly steers users into a specific language without opt-in or an explicit alternative.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The manual deployment step performs a file write to a user workspace configuration file using shell redirection. While the modification is part of setup, the README does not explicitly warn that it changes persistent agent configuration or suggest backing up the file first.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.