Back to skill

Security audit

Content Draft Generator

Security checks for vulnerabilities and agentic risk

Overview

The skill is a content-drafting workflow, but it understates its outbound network behavior and can send user-provided links to a third-party service.

Review before installing. Use only public reference URLs you are comfortable sending to external web services, avoid private or internal links, and be aware that Twitter/X links may be routed through api.fxtwitter.com. Treat content fetched from URLs as untrusted source material, not instructions for the agent.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:70
Finding

Untrusted Remote Content Is Processed Without Prompt-Injection Isolation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 70-72
Vulnerability Type: Untrusted content processing and indirect prompt injection
Risk Level: Medium

Vulnerable Code:

markdown
1. Fetch content from all reference URLs (use web_fetch tool)
2. For Twitter/X URLs, transform to FxTwitter API: `https://api.fxtwitter.com/username/status/123456`
3. Analyze each piece following the `references/content-deconstructor.md` guide

Technical Analysis

The workflow retrieves content from user-selected remote URLs and passes that content directly into an agent-driven analysis pipeline. It does not instruct the agent to treat retrieved text as untrusted data, ignore instructions embedded in the content, or separate remote content from executable prompt instructions.

A malicious page can include visible or concealed prompt-injection directives. When the agent analyzes that page, those directives could be interpreted as instructions rather than source material. The resulting manipulation could propagate into the content breakdown, anatomy guide, meta-prompt, and final drafts.

This issue is classified as insecure skill design rather than confirmed intentional instruction hijacking because the Skill itself does not contain a malicious override. It instead creates an exploitable trust-boundary failure when processing remote content.

Attack Path

  1. An attacker publishes reference content containing embedded instructions directed at an AI agent.
  2. The attacker persuades a user to submit the malicious page as a reference URL, or the user independently selects the compromised page.
  3. The Skill retrieves the page through web_fetch.
  4. The retrieved text is placed into the agent's analysis context without instruction isolation.
  5. The agent may follow embedded directives while generating the breakdown or later artifacts.
  6. Attacker-controlled instructions may alter generated prompts, drafts, or subs ...[truncated 639 chars]
Remediation
View remediation

Remediation Suggestions

  1. Explicitly state that all remotely retrieved content is untrusted data and must never be treated as agent instructions.
  2. Place fetched content inside clearly delimited data blocks and instruct the agent to analyze only its subject matter and writing characteristics.
  3. Reject or neutralize content that attempts to address the agent, change its role, request tool calls, disclose context, or override prior instructions.
  4. Extract only the article body or required post fields rather than forwarding complete HTML, metadata, comments, scripts, or hidden elements.
  5. Ensure generated meta-prompts cannot inherit instructions quoted from reference material.
  6. Require explicit user confirmation before performing any additional action suggested by remotely retrieved content.
  7. Add an output validation step that checks generated artifacts for injected directives, secret requests, unrelated tool instructions, or role overrides.

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:61
Finding

Insufficiently Specified URL Validation May Permit Server-Side Request Forgery

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 61-71
Vulnerability Type: Unrestricted URL fetching and potential server-side request forgery
Risk Level: Medium

Vulnerable Code:

markdown
### Step 1: Collect Reference URLs

1. Ask the user: "Please provide up to 5 reference content URLs that exemplify the type of content you want to create."
2. Accept URLs one by one or as a list
3. Validate URLs before proceeding
4. If user provides no URLs, ask them to provide at least 1

### Step 2: Content Deconstruction

1. Fetch content from all reference URLs (use web_fetch tool)
2. For Twitter/X URLs, transform to FxTwitter API: `https://api.fxtwitter.com/username/status/123456`

Technical Analysis

Although the workflow says to validate URLs, it does not define any enforceable validation policy. There are no restrictions on URL schemes, destination addresses, ports, DNS resolution, redirects, embedded credentials, or response sizes.

If the underlying web_fetch implementation can reach internal or privileged network resources, a user could provide a URL that targets loopback, private-network, link-local, cloud metadata, or other non-public services. Redirects and DNS rebinding could also be used to bypass superficial hostname checks.

The practical severity depends on protections implemented by the host platform's fetch tool. The Skill itself does not establish the controls required to guarantee safe behavior.

Attack Path

  1. An attacker submits a URL pointing to an internal address, a link-local metadata endpoint, or a public endpoint that redirects to such a destination.
  2. The unspecified validation step accepts the URL because no concrete rejection criteria are defined.
  3. web_fetch resolves and requests the destination using the agent host's network position.
  4. The remote response is returned to the agent as reference content.
  5. Internal service data may be exposed throu ...[truncated 573 chars]
Remediation
View remediation

Remediation Suggestions

  1. Permit only https URLs and reject all non-web schemes, including file, ftp, data, and tool-specific schemes.
  2. Reject URLs containing embedded usernames or passwords, ambiguous host syntax, unsupported ports, or malformed encodings.
  3. Resolve destination hostnames and block loopback, private, link-local, multicast, reserved, and cloud-metadata address ranges for both IPv4 and IPv6.
  4. Repeat destination validation after every redirect and cap the number of redirects.
  5. Protect against DNS rebinding by binding the validated resolution to the actual connection or validating the connected address.
  6. Prefer an allowlist of approved public content domains where operationally feasible.
  7. Apply strict connection timeouts, response-size limits, content-type restrictions, and download limits.
  8. Ensure the fetch service has no access to internal networks or metadata endpoints through network-level egress controls.
  9. Disclose the use of api.fxtwitter.com as a third-party service and obtain user consent before sending transformed X/Twitter URLs to it.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill’s security note states that no external services or credentials are required, but the workflow later instructs the agent to fetch user-provided URLs and to route X/Twitter content through the third-party FxTwitter API. This is dangerous because it misrepresents the skill’s network behavior, which can prevent informed user consent and hide outbound data flow during execution.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs the agent to fetch arbitrary user-supplied URLs and, for X/Twitter links, to transform them into requests to a third-party API without prominently warning the user about outbound transmission. This creates a privacy and trust risk because user-supplied targets, request metadata, and possibly sensitive internal or private URLs could be sent externally without clear disclosure or restrictions.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

The hardcoded transformation of X/Twitter URLs to api.fxtwitter.com causes outbound transmission of user-requested content lookups to an external third party. In context, this is more dangerous because the skill frames itself as requiring no external services, reducing transparency while introducing data-sharing and supply-chain risk through a non-origin service.

Content

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

md
### Step 2: Content Deconstruction

1. Fetch content from all reference URLs (use web_fetch tool)
2. For Twitter/X URLs, transform to FxTwitter API: `https://api.fxtwitter.com/username/status/123456`
3. Analyze each piece following the `references/content-deconstructor.md` guide
4. Save the combined breakdown to `content-breakdown/breakdown-{timestamp}.md`
5. Report: "✓ Content breakdown saved"

External Transmission

Medium
Category
Data Exfiltration
Confidence
93% confidence
Finding

The URL handling section explicitly documents rewriting X/Twitter links to the third-party FxTwitter API, confirming an intentional external transmission path. This is risky because it normalizes sending user-specified targets to an external intermediary and may expose browsing intent or sensitive references without adequate warning or policy controls.

Content

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

md
**Transform:**
- Input: `https://x.com/username/status/123456`
- API URL: `https://api.fxtwitter.com/username/status/123456`

## Error Handling

Static analysis

No suspicious patterns detected.