Back to skill

Security audit

AI Trend Hunter Pro

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches a social-media drafting workflow, but it allows under-scoped URL scraping that can be forwarded to DeepSeek and later used in browser automation for X drafts.

Review this before installing. Only run it against public, intended news URLs, avoid internal or private pages, and assume scraped text may be sent to DeepSeek and saved locally. Keep the human approval step enabled and inspect both the source content and final draft before allowing browser automation on X.

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

Error
Location
workflow.json:26
Finding

Unrestricted User-Controlled Scraping Target Enables SSRF

Content
View full analysis

Vulnerability Details

File Location: workflow.json:26-36
Vulnerability Type: Server-Side Request Forgery through an unrestricted scraping URL
Risk Level: High

Vulnerable Code:

json
"config": {
    "source_url": "User Input",
    "selectors": [
        "h2.loop-card__title",
        "h2.post-block__title",
        "a.post-block__title__link",
        "h2.wp-block-post-title"
    ],
    "fallback": "Keyword fallback (ai / tech / startup / app / model)",
    "max_items": 3
}

Technical Analysis

The workflow accepts the scraping destination directly from user input. It declares no URL scheme restriction, domain allowlist, DNS validation, redirect validation, or prohibition against loopback, link-local, private, and reserved network addresses.

If the workflow engine performs requests according to this configuration, an attacker who can provide the source URL can cause the runner to send requests from its own network context. This creates a server-side request forgery condition because the runner may have access to hosts or services that are inaccessible to the attacker.

The scraped response is also written to workflow output and supplied to the subsequent AI-generation step. Consequently, content obtained from an internal endpoint could be exposed in generated output or saved files, depending on how the workflow engine processes the response.

Attack Path

  1. An attacker starts the workflow and supplies a crafted source URL.
  2. The URL points to a loopback service, private-network host, link-local endpoint, or cloud metadata service.
  3. The workflow runner resolves and requests the supplied address from its trusted network environment.
  4. The scraping step extracts response text using its selectors or keyword fallback.
  5. Extracted content is stored in the raw output and passed to the AI-generation step.
  6. Internal response content may consequently appear in generated dra ...[truncated 686 chars]
Remediation
View remediation

Remediation Suggestions

  • Replace unrestricted user input with an explicit allowlist of approved HTTPS origins, such as the intended technology-news domains.
  • Parse URLs with a standards-compliant URL parser and permit only the https scheme.
  • Resolve the hostname before connecting and reject loopback, link-local, private, multicast, unspecified, and reserved IP ranges for both IPv4 and IPv6.
  • Repeat hostname and IP validation after every redirect, and impose a low redirect limit.
  • Protect against DNS rebinding by connecting only to the validated resolved address while preserving the expected TLS hostname.
  • Apply strict request timeouts, response-size limits, content-type restrictions, and outbound firewall rules.
  • Prevent scraped internal or sensitive content from being copied automatically into generated drafts or persistent output.
  • Record the validated destination and redirect chain in security logs without logging credentials or sensitive response bodies.

T09 · Insecure Skill Coding Practices

Warning
Location
workflow.json:49
Finding

Untrusted Scraped Content Is Interpolated into a Privileged AI Prompt

Content
View full analysis

Vulnerability Details

File Location: workflow.json:49-58
Vulnerability Type: Indirect prompt injection through scraped web content
Risk Level: Medium

Vulnerable Code:

json
"config": {
    "provider": "DeepSeek",
    "model": "deepseek-chat",
    "api_endpoint": "https://api.deepseek.com/v1/chat/completions",
    "max_tokens": 200,
    "temperature": 0.85,
    "system_prompt": "You are now {{USER_PERSONA}}. Create a post based on the following content, {{SCRAPED_CONTENT}}, according to {{STYLE_REQUIREMENT}}.
    "fallback": "Without an API key, output a placeholder draft in the format: original title with a link placeholder"
},
"input": "step_1.output",

Technical Analysis

The template interpolates SCRAPED_CONTENT directly into the system prompt. Scraped web content is attacker-influenced data, but the workflow does not isolate it in a separate data message or state that instructions embedded in that content must be ignored.

An attacker controlling or influencing a scraped page can insert instructions that attempt to override the intended persona, style, or content-generation task. Because those instructions are placed in the same privileged prompt string as the workflow's own instructions, the model may treat them as authoritative rather than as untrusted source material.

The generated content is saved as a draft and can later be placed into the X platform draft interface after human approval. Human review reduces exploitability, but it does not remove the injection vulnerability, particularly if malicious material is persuasive, obfuscated, or overlooked during review.

The reviewed workflow does not grant the model an execution tool or expose the API key inside the prompt. Therefore, the demonstrated scope is manipulation of generated content rather than arbitrary code execution or direct credential theft.

Attack Path

  1. An attacker publishes or modifies content at a sour ...[truncated 1223 chars]
Remediation
View remediation

Remediation Suggestions

  • Keep trusted workflow instructions in the system message and place scraped material in a separate user or data message.
  • Enclose scraped content in explicit delimiters and instruct the model that text inside those delimiters is untrusted data whose instructions must never be followed.
  • Use structured input and output schemas rather than free-form prompt interpolation.
  • Normalize scraped text and reject active markup, hidden text, suspicious instruction patterns, and unexpected URLs before model submission.
  • Validate generated output against an approved schema and scan it for unapproved domains, calls to action, credential requests, and policy-violating content.
  • Preserve mandatory human review and show reviewers the original source, extracted text, and generated draft side by side.
  • Require explicit approval of the exact final content after any regeneration or edit.
  • Do not grant the generation model browser, filesystem, credential, or command-execution tools.
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 (7)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

Scraped content is sent to the DeepSeek API without an explicit privacy or transmission warning, creating a real data-exfiltration risk to a third party. Because the source content can come from a user-supplied URL, the workflow may unintentionally forward confidential, internal, or attacker-curated content to an external model provider.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest description is written to describe the skill as generating viral copy using Chinese-language phrasing, while the manifest provides no user-selectable language or locale option. This creates a natural-language policy concern because the skill appears to impose a specific language context without explicit opt-in or documented regional scope.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The step claims it only scrapes TechCrunch, but the configuration uses a user-supplied URL, which materially changes the trust boundary and data source. This can enable scraping of arbitrary internal or sensitive endpoints in environments with network access, and it increases the chance of processing attacker-controlled content downstream.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The workflow persists scraped titles to local files without any explicit user-facing notice or consent flow. While local storage is common, silent retention can expose sensitive or proprietary content to later users, other tools, backups, or accidental publication if the scraped source was not meant to be retained.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · workflow.json (reported line 51)May include surrounding context.

json
"config": {
                "provider": "DeepSeek",
                "model": "deepseek-chat",
                "api_endpoint": "https://api.deepseek.com/v1/chat/completions",
                "max_tokens": 200,
                "temperature": 0.85,
                "system_prompt": "你现在是 {{USER_PERSONA}}。请根据以下内容 {{SCRAPED_CONTENT}},按照 {{STYLE_REQUIREMENT}} 的要求创作一段推文。

Ssd 1

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The system prompt directly interpolates untrusted scraped content and user-controlled persona fields into model instructions, creating a semantic prompt-injection path. An attacker-controlled page or crafted input could steer the model to ignore intended constraints, produce manipulated output, or embed harmful instructions that later influence human review or browser automation steps.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill manifest describes an agent that turns trends into posts for X, Xiaohongshu, and LinkedIn. In this file, the implemented publication step only targets X via browser automation, and there are no corresponding Xiaohongshu or LinkedIn steps, creating a clear mismatch between the claimed platform scope and actual workflow behavior.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.