Back to skill

Security audit

Web Search Hub

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly does web search as advertised, but it asks users to install an apparently unused external CLI and an unpinned Python package before use.

Review before installing. Use a virtual environment, avoid administrator privileges, pin and verify the duckduckgo-search dependency if possible, and question the OpenClawCLI prerequisite unless your runtime specifically requires it. Do not send secrets, private project names, or sensitive personal data as search queries.

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:11
Finding
Unpinned and Unnecessary Third-Party Dependencies Create Supply-Chain Risk<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:11-15`; related dependency import at `scripts/search.py:8,17` **Vulnerability Type**: Unpinned third-party dependencies and unnecessary external software **Risk Level**: Medium ### Vulnerable Code ```markdown ⚠️ **Prerequisite:** Install [OpenClawCLI](https://clawhub.ai/) (Windows, MacOS) and run `pip install duckduckgo-search` **Installation Best Practices:** - If you encounter permission errors, use a virtual environment instead of system-wide installation - For virtual environment: `python -m venv venv && source venv/bin/activate && pip install duckduckgo-search` ``` The script documents and imports the dependency without enforcing a reviewed version: ```python Requires: pip install duckduckgo-search ``` ```python from duckduckgo_search import DDGS ``` ### Technical Analysis The installation instructions retrieve the current version of `duckduckgo-search` from the default Python package index without specifying an exact version, package hash, lockfile, or integrity-verification procedure. Consequently, the code reviewed during this audit does not define the exact dependency code that will later execute. The documentation also requires users to install OpenClawCLI from an external website, but `scripts/search.py` does not import, invoke, or otherwise use that CLI. This unnecessary prerequisite expands the supply-chain and installation attack surface beyond what is required to provide DuckDuckGo search functionality. There is no evidence in the audited project that either external dependency is currently malicious. The vulnerability is the mutable and insufficiently verified dependency acquisition process, combined with installation of an apparently unused external component. ### Attack Path 1. A user follows the prerequisite instructions in `SKILL.md`. 2. The user installs the unconstrained latest release of `duckduckgo-search` from the configured Python package repository and may sepa ...[truncated 1248 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the OpenClawCLI prerequisite unless the implementation genuinely requires it. If it is required by an external runtime, clearly document the specific purpose and trusted installation mechanism. 2. Pin `duckduckgo-search` to a reviewed, exact version rather than installing an unconstrained latest release, for example through a version-locked requirements file. 3. Generate and verify cryptographic hashes for all resolved distributions, such as by using a hash-locked requirements file and `pip install --require-hashes`. 4. Commit a reproducible dependency lockfile that includes transitive dependencies, and update it only through a documented review process. 5. Install dependencies exclusively inside a dedicated virtual environment with ordinary user privileges. 6. Avoid invoking package installation with administrator or root privileges. 7. Add automated dependency vulnerability and provenance checks to the release process. 8. Periodically review dependency updates before changing the pinned version, including package ownership, release history, source repository, and integrity metadata. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (5)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
The skill is presented as a web-search helper, but the documented behavior includes installation of external software from `clawhub.ai` and writing arbitrary output files without clearly declaring those capabilities in the metadata. This mismatch can mislead operators about trust boundaries and increase supply-chain and filesystem risk during invocation.

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill documents use of `--output` and workflows that write files, but it does not declare any tool scope such as `permissions` or `allowed-tools`. Undeclared write capability weakens least-privilege controls and can cause agents or reviewers to underestimate the skill’s ability to persist data to disk.

Vague Triggers

Medium
Confidence
96% confidence
Finding
The trigger conditions are extremely broad, covering many common requests like research, fact-checking, or anything needing current content. Overbroad invocation increases the chance that this skill is selected when a safer built-in tool or a less-privileged workflow would suffice, expanding exposure to external dependencies and file-write behavior unnecessarily.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
This tool sends raw user search queries to DuckDuckGo via an external library, but the script does not clearly warn users that their input leaves the local environment. In an agent-skill context, users may provide sensitive research topics, internal project names, or personal data, creating a privacy and data-handling risk if the transmission is not made explicit.

Description-Behavior Mismatch

Low
Confidence
95% confidence
Finding
The manifest describes a skill for searching the web for information, news, images, or videos. In addition to performing searches, the code exposes an --output option and writes formatted results to a caller-specified file path, which goes beyond pure search/retrieval behavior and introduces local filesystem modification.

Static analysis

No suspicious patterns detected.