Back to skill

Security audit

110 Deep Research Pro

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent web research helper, but it uses an unsafe, unrestricted shell-based page fetch pattern that users should review before installing.

Install only if you are comfortable with the agent making external web requests and writing local research reports. Run it in an environment where arbitrary page fetches cannot reach internal services or sensitive metadata endpoints, and prefer adding URL validation or a safer fetch helper before use.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:58
Finding

Unsafe URL Interpolation Enables Command Injection and Internal Resource Access

Content
View full analysis
" | python3 -c " import sys, re html = sys.stdin.read() # Strip tags, get text text = re.sub('<[^>]+>', ' ', html) text = re.sub(r'\s+', ' ', text).strip() print(text[:5000]) " ``` ### Technical Analysis The workflow instructs the agent to substitute a URL obtained from research results into a shell command. No validation, escaping mechanism, protocol allowlist, destination filtering, or argument-safe process invocation is specified. If the agent performs literal textual substitution, a URL containing shell metacharacters or quotation marks could escape the quoted argument and introduce additional shell commands. Execution would occur with the privileges of the account running the agent. The command also uses `curl -L`, which follows redirects without requiring each destination to be revalidated. An attacker-controlled public URL could redirect the request to localhost, a private network address, a link-local service, or a cloud metadata endpoint. Retrieved content would then enter the agent's context and could be exposed through the generated report. The command does **not** directly pipe downloaded code to Bash. Its response body is passed to a fixed Python text extraction program, so the pre-scan's characterization as direct remote payload execution is not supported. The risk instead arises from unsafe command construction and unrestricted outbound retrieval. ### Attack Path 1. An attacker supplies a crafted research URL or causes it to appear in search results. 2. The agent selects that URL for the documented deep-read operation. 3. The agent inserts the URL into the shell command without robust argument handling. 4. Either: - shell syntax embedded in the substituted value escapes the quoted argument and executes commands under the ...[truncated 1109 chars]
Remediation
View remediation
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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (7)

External Script Fetching

High
Category
Supply Chain
Confidence
93% confidence
Finding

The skill instructs fetching arbitrary URLs with curl and piping untrusted remote content directly into an inline Python processing step. Although the Python snippet only strips HTML tags, this pattern enables server-side request behavior against attacker-controlled URLs, increasing exposure to SSRF-like access to internal resources, retrieval of sensitive local-network content, and unsafe processing of untrusted data without validation or network restrictions.

Content

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

For the most promising URLs, fetch full content:

bash
curl -sL "<url>" | python3 -c "
import sys, re
html = sys.stdin.read()
# Strip tags, get text

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The instruction says 'When the user asks for research on any topic,' which is a very broad activation condition for a markdown skill description. It does not define boundaries, exclusions, or negative examples, so ordinary requests that merely mention research could unintentionally match this skill.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The manifest describes a multi-source research agent that searches, synthesizes, and delivers reports. The documented ability to spawn additional sessions/sub-agents is not an obvious requirement of that purpose and introduces orchestration capability beyond straightforward research execution.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

text
sessions_spawn(
  task: "Run deep research on [TOPIC]. Follow the deep-research-pro SKILL.md workflow.
  Read /home/clawdbot/clawd/skills/deep-research-pro/SKILL.md first.
  Goal: [user's goal]
  Specific angles: [any specifics]
  Save report to ~/clawd/research/[slug]/report.md

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill description states it performs full-page content fetching, which implies outbound network requests to third-party sites, but the README does not include any warning about contacting external services. For markdown files, behaviors affecting privacy or system/network activity should be disclosed so users understand that their research queries and requested URLs will be sent externally.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The markdown explicitly advertises 'Save to file' as a feature, but does not warn users that running the tool with output options will write data to the local filesystem. Because this README is the primary usage surface for the skill, it should disclose file-modifying behavior so users understand the impact before invoking it.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The description presents the skill as a research agent that needs no API keys, which is true literally, but the documentation also frames it as 'self-contained' while requiring an external ddg-search skill/script and curl-based web access. This creates a mild description-to-behavior mismatch because the capability depends on external tooling and network access not evident from the concise manifest description.

Content

No source excerpt is available for this finding.