Back to skill

Security audit

Content Repurposer

Security checks for vulnerabilities and agentic risk

Overview

This skill has a legitimate content-repurposing purpose, but its URL mode can fetch arbitrary user-supplied locations without safeguards against internal or local resource access.

Install only if you are comfortable with a skill that may contact any URL it is asked to process. Prefer file or stdin mode for sensitive content, avoid internal or private-network URLs, and be aware that saved outputs may persist generated content on disk and may overwrite same-named files in the chosen output directory.

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

T09 · Insecure Skill Coding Practices

Error
Location
scripts/repurpose.py:38
Finding

Unrestricted URL Fetching Enables Server-Side Request Forgery and Local Resource Access

Content
View full analysis
dict: """Extract article content from a URL.""" if not HAS_BS4: print("beautifulsoup4 required for URL mode. Install: pip install beautifulsoup4", file=sys.stderr) sys.exit(1) req = Request(url, headers={"User-Agent": USER_AGENT}) try: with urlopen(req, timeout=30) as resp: encoding = resp.headers.get_content_charset() or "utf-8" html = resp.read().decode(encoding, errors="replace") except (HTTPError, URLError) as e: print(f"Error fetching URL: {e}", file=sys.stderr) sys.exit(1) ``` ### Technical Analysis The command-line `url` argument is passed directly to `urllib.request.Request` and `urlopen` without validating the URL scheme, destination hostname, resolved IP address, port, or redirect destination. Consequently, an attacker who can invoke the skill may cause requests to destinations available from the execution environment but unavailable from the attacker's own network position. Potential targets include: - Loopback services such as `127.0.0.1` or `::1` - RFC 1918 private-network services - Link-local addresses and cloud metadata endpoints - Internal hostnames resolved through the host's DNS configuration - Public endpoints that redirect to an internal destination - Non-HTTP resources supported by `urllib`, including direct `file:` URLs in applicable runtime configurations The response is decoded without checking its content type or size. BeautifulSoup then extracts its title, description, and body, portions of which are returned through generated posts or JSON output. This creates an information-disclosure channel in addition to the network request primitive. ### Attack Path 1. An attacker supplies a craf ...[truncated 1656 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:12
Finding

Unpinned Runtime Dependency Installation Creates Supply-Chain Exposure

Content
View full analysis
Remediation
View remediation
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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill advertises and documents capabilities that read local files, write output files, and fetch arbitrary URLs, but it declares no explicit tool scope or permissions. This increases the risk that an agent may invoke the skill with broader-than-expected filesystem or network access, enabling unintended data exposure, overwriting files, or unreviewed outbound requests.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The description contains broad trigger phrases like repurpose content, create social posts from an article, and turn a blog into tweets, which can match many common user requests and cause over-invocation outside the user's precise intent. In an agent setting, this can lead to unexpected network fetching of URLs, processing of sensitive local text, or writing outputs when the user only asked for general help.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The README advertises automatic URL extraction but does not warn users that supplying a URL may cause the skill to make outbound network requests to third-party hosts, disclosing IP address, user agent, timing, and possibly internal-network reachability. In an agent context, this can also normalize fetching attacker-controlled URLs without clear consent, increasing privacy and SSRF-style risk if later implemented or used in automation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The URL-based examples show fetching external content but do not warn users that using the url command will make network requests to third-party sites. This can surprise users, leak interest or internal URLs through outbound traffic, and increase the chance of retrieving untrusted content in environments where network actions require explicit consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The documentation shows the -o output/ option and states that files are created, but it does not prominently warn that the skill will write multiple files to disk. In agent workflows, silent file creation can leave sensitive derived content on disk, overwrite expected contents in target directories, or violate user expectations about persistence.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code performs an outbound HTTP request to a user-supplied URL, which is a network operation covered by the warning requirement for code files. While the function has a docstring about extracting content from a URL, there is no user-facing disclosure in code comments, prompts, or output warning that the tool will contact external sites and send the URL in the request.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

This branch creates directories and writes multiple output files, which is a file-write operation covered by the warning requirement. Although the action is user-initiated via --output and a post-write message is printed, there is no prior disclosure in help text, comments, or docstrings that using this option will create and overwrite files in the target directory.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.