Back to skill

Security audit

Openclaw Free Search

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent web-search helper, but its install instructions rely on mutable remote code and its third-party query handling is under-disclosed.

Install only if you are comfortable with the unpinned npx installer and with search terms being sent to DuckDuckGo. Prefer a pinned, reviewed installer version or inspect the package before running the install command, and do not use this skill for secrets, private identifiers, confidential prompts, or regulated data.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
  • 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 (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:10
Finding

Execution of an Unpinned Package During Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 10–14
Vulnerability Type: Supply-chain risk from an unpinned executable dependency
Risk Level: Medium

Vulnerable Code:

bash
## Installation

```bash
npx clawhub@latest install openclaw-free-search
text

### Technical Analysis

The documented installation procedure directs users to execute the mutable `latest` release of the `clawhub` npm package through `npx`. The package version is not pinned, and the documentation provides no integrity digest or other mechanism for verifying the downloaded artifact.

`npx` can download and execute package code. Consequently, the code executed by this command may differ from the version that existed when the skill was audited. If the package, registry entry, or publisher account is compromised, a malicious release published under the `latest` tag could run during installation.

The audit found no evidence that the current package is malicious. The vulnerability is the unsafe, mutable trust relationship created by the installation command.

### Attack Path

1. An attacker compromises the `clawhub` package, its publisher account, or the relevant package-distribution channel.
2. The attacker publishes a malicious release and assigns it to the `latest` distribution tag.
3. A user follows the installation instructions and runs `npx clawhub@latest install openclaw-free-search`.
4. `npx` downloads and executes the attacker-controlled package release.
5. The malicious package executes with the permissions of the user running the installation command.

### Impact Assessment

Successful exploitation provides arbitrary code execution under the installing user's account. Depending on that account's permissions and environment, an attacker could read or modify user-accessible files, obtain accessible credentials or tokens, tamper with installed skills and configuration, or establish user-level persistence. This comman
...[truncated 147 chars]
Remediation
View remediation

Remediation Suggestions

  • Replace the mutable @latest reference with an exact, reviewed package version.
  • Verify the package against a trusted integrity hash or signed provenance before execution.
  • Use a lockfile or another reproducible dependency mechanism where applicable.
  • Document the expected registry and trusted publisher identity.
  • Review the pinned package version, including lifecycle scripts and transitive dependencies, before recommending its execution.
  • Update the pinned version only through a controlled review and testing process.
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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (7)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill advertises executable usage that invokes local Node.js code and performs web searches, implying shell execution and network access, but the manifest does not declare any tool scope such as permissions or allowed-tools. Missing capability declarations weaken review and enforcement boundaries, so a user or host may permit broader execution than intended without clear disclosure.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

Using npx clawhub@latest install openclaw-free-search pulls and executes the latest remote package version at install time, which is a supply-chain risk because the package contents can change without review. If the package or one of its dependencies is compromised, users may execute attacker-controlled code during installation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

All usage strings, errors, and output labels are presented in Chinese, which imposes a specific language on users. The file does not provide a language option, opt-in, or justification that this is a China-specific or Chinese-only skill.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
97% confidence
Finding

The skill is explicitly designed to send search terms to https://api.duckduckgo.com/, which is an external service. In the context of an agent tool, that means arbitrary user or system-sourced content may leave the local trust boundary; if prompts include secrets, PII, or confidential topics, the transmission can leak sensitive information.

Content

Scanner excerpt · search.js (reported line 18)May include surrounding context.

js
}
const wantJson = process.argv.includes('--json');

const url = `https://api.duckduckgo.com/?q=${encodeURIComponent(query)}&format=json&no_html=1`;

async function main() {
  let data;

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

User-supplied search queries are sent to DuckDuckGo over the network without any runtime disclosure or consent flow. In an agent context, queries can contain sensitive user data, internal identifiers, or proprietary prompts, so silent transmission to a third party creates a real privacy and data-handling risk.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest describes a free web search skill, where making HTTP requests is expected. However, invoking child_process.execFileSync to run curl introduces subprocess-execution capability, which is materially broader than ordinary search logic and is not stated in the skill's purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The code falls back to executing the external curl binary through execFileSync, which is a subprocess operation covered by the warning requirement. Although the inline comment explains this for developers, there is no visible notice to the user that an external command may be invoked.

Content

No source excerpt is available for this finding.