Back to skill

Security audit

Duanshipinjiexi

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its stated video parsing purpose, but its automatic failover can send user links and identity codes to an unverified replacement service.

Review before installing. Use it only for video links you are comfortable sending to third-party services, and treat the identity code like an account token because it may be saved and reused for quota and purchases. The main concern is the automatic fallback that can switch to an unverified endpoint; users or administrators should disable or tightly approve that behavior before relying on the skill.

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

Error
Location
references/url-fallback.md:8
Finding

Unvalidated Remote Service Discovery Leaks Identity Codes and User URLs

Content
View full analysis

Vulnerability Details

File Location: references/url-fallback.md, lines 8–21
Vulnerability Type: Unvalidated remote endpoint discovery and server-side request forgery
Risk Level: High

Vulnerable Code

bash
curl -sL "https://api.skillhub.cn/api/v1/download?slug=duanshipinjiexi" -o "$TEMP_DIR/skill.zip"
unzip -o "$TEMP_DIR/skill.zip" SKILL.md -d "$TEMP_DIR" 2>/dev/null
NEW_URL=$(grep 'Base URL:' "$TEMP_DIR/SKILL.md" | sed 's/.*`\(.*\)`.*/\1/')
rm -rf "$TEMP_DIR"

if [ -n "$NEW_URL" ]; then
  curl -s --max-time 30 "$NEW_URL/api/parse.php?code={CODE}&url=视频链接"
  echo "【提示】解析服务地址已更新,后续使用新地址 $NEW_URL"
else
  JSON=$(curl -s "https://clawhub.ai/api/v1/skills/duanshipinjiexi")
  NEW_URL=$(echo "$JSON" | python3 -c "import sys,json; d=json.load(sys.stdin).get('description',''); import re; m=re.search(r'Base URL: `(.+)`', d); print(m.group(1) if m else '')" 2>/dev/null)
  if [ -n "$NEW_URL" ]; then
    curl -s --max-time 30 "$NEW_URL/api/parse.php?code={CODE}&url=视频链接"

Technical Analysis

When the primary parsing service fails, the fallback retrieves mutable metadata from SkillHub or ClawHub, extracts an arbitrary Base URL, and immediately sends a request to that endpoint. The value is only checked for being nonempty. There is no structured URL parsing, HTTPS requirement, hostname or port allowlist, signature verification, redirect validation, or user confirmation.

The resulting request contains both the persistent identity code and the user-supplied video URL in its query string. If either remote metadata source, package publication account, API response, or delivery path is compromised, an attacker can substitute an attacker-controlled URL and collect those values.

Because curl is invoked against an unrestricted destination from the Agent environment, a malicious URL may also direct requests toward loopback, link-local, private-network, or cloud metadata endpoints. Whether such requests produce useful responses depends on the runtime ...[truncated 2566 chars]

Remediation
View remediation

Remediation Suggestions

  1. Remove dynamic endpoint discovery and keep the parser endpoint fixed wherever operationally possible.
  2. If failover is essential, use a hardcoded, version-controlled allowlist of exact HTTPS hostnames rather than extracting arbitrary URLs from mutable descriptions or packages.
  3. Parse candidate URLs with a proper URL parser and reject them unless all of the following hold:
    • The scheme is exactly https.
    • The hostname exactly matches an approved hostname.
    • The port is absent or explicitly approved.
    • No username, password, fragment, or unexpected path is present.
  4. Resolve the hostname and reject loopback, link-local, private, reserved, multicast, and cloud metadata address ranges. Repeat this validation after DNS resolution and before each connection to reduce DNS-rebinding risk.
  5. Disable redirects for requests carrying identity codes and user links. If redirects are operationally required, validate every redirect destination under the same policy.
  6. Authenticate failover metadata using a pinned signing key. Verify a signed manifest containing the endpoint, version, and expiration time before trusting it; a downloaded package alone is not a trust guarantee.
  7. Require explicit user confirmation before changing service operators or sending their link and identity code to a newly discovered host.
  8. Prefer request bodies over query strings for sensitive values so they are less likely to appear in intermediary logs. This does not replace endpoint validation.
  9. Avoid echoing untrusted endpoint values into user-visible output unless they are safely encoded.
  10. On validation failure, stop and instruct the user to update the Skill manually instead of contacting the candidate endpoint.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (15)

External Script Fetching

High
Category
Supply Chain
Confidence
95% confidence
Finding

This documented fallback normalizes remote endpoint switching and immediate use of the new endpoint with no provenance verification, which is effectively external script/service fetching by indirection. In the context of a video parsing skill that handles user-provided links, that increases the danger because sensitive input and operational traffic can be exfiltrated or redirected without a visible configuration change.

Content

Scanner excerpt · references/url-fallback.md (reported line 14)May include surrounding context.

md
rm -rf "$TEMP_DIR"

if [ -n "$NEW_URL" ]; then
  curl -s --max-time 30 "$NEW_URL/api/parse.php?code={CODE}&url=视频链接"
  echo "【提示】解析服务地址已更新,后续使用新地址 $NEW_URL"
else
  # 2️⃣ 兜底:从 ClawHub 查

External Script Fetching

High
Category
Supply Chain
Confidence
95% confidence
Finding

This documented fallback normalizes remote endpoint switching and immediate use of the new endpoint with no provenance verification, which is effectively external script/service fetching by indirection. In the context of a video parsing skill that handles user-provided links, that increases the danger because sensitive input and operational traffic can be exfiltrated or redirected without a visible configuration change.

Content

Scanner excerpt · references/url-fallback.md (reported line 14)May include surrounding context.

md
rm -rf "$TEMP_DIR"

if [ -n "$NEW_URL" ]; then
  curl -s --max-time 30 "$NEW_URL/api/parse.php?code={CODE}&url=视频链接"
  echo "【提示】解析服务地址已更新,后续使用新地址 $NEW_URL"
else
  # 2️⃣ 兜底:从 ClawHub 查

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill is configured to auto-activate whenever a user sends supported-platform links, with no clear consent step or confirmation before transmitting that content to the external service at spqsy.kcucu.com. This can cause unintended disclosure of user-provided URLs and may trigger actions on content the user did not explicitly ask to process in that turn.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill instructs the agent to send user-supplied links and identity codes to an external third-party API, but the skill text does not provide a clear user-facing privacy notice or consent requirement. Users may unknowingly expose private or sensitive links, tracking parameters, or account-associated identifiers to an external operator.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest describes a one-stop tool for parsing and downloading watermark-free videos from major platforms. However, the documented API also exposes identity-code lifecycle operations, account status queries, order creation, plan listing, and payment-status checks, which are account/billing capabilities rather than core video parsing behavior.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest frames the skill as a content-processing utility for extracting watermark-free media. The API docs additionally instruct clients to create purchase orders, retrieve payment QR codes, and generate QR images for Alipay, which is a commerce/payment capability unrelated to the core user-facing purpose described in the manifest.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The instruction to render the payment URL into a QR image in /tmp and send it as media introduces avoidable handling risks for sensitive payment links. Temporary-file storage and media transmission can expose the payment token to other processes, logs, or unintended recipients, and the document provides no guidance on secure cleanup, access control, or validation of who receives the QR code.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The file is entirely written as normative guidance in Chinese and includes fixed Chinese user-facing strings to display, such as the prescribed output messages in lines L7-L10 and the '答案永远是' instruction in L55. This indicates a language/locale constraint without any stated user opt-in or alternative language handling, which is a natural-language policy violation under the locale policy rule.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file contains only Chinese-language instructions and does not mention that the skill is China-specific or that users may choose another language. Under the policy, forcing a specific language without opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The document instructs automatic network calls to external services and package download/inspection without warning that user data and request metadata will be transmitted to third parties. Because the fallback also persists a newly discovered service address for later use, operators may unknowingly send future parsing traffic to an unreviewed endpoint.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
77% confidence
Finding

The explicit dependency on https://api.skillhub.cn for fallback creates a third-party data transmission and trust dependency not inherent to basic video parsing. If that service is compromised or monitored, it can reveal usage patterns and potentially influence endpoint discovery used later in the workflow.

Content

Scanner excerpt · references/url-fallback.md (reported line 8)May include surrounding context.

bash
TEMP_DIR=$(mktemp -d)
# 1️⃣ 从 SkillHub 下载最新技能包提取 Base URL
curl -sL "https://api.skillhub.cn/api/v1/download?slug=duanshipinjiexi" -o "$TEMP_DIR/skill.zip"
unzip -o "$TEMP_DIR/skill.zip" SKILL.md -d "$TEMP_DIR" 2>/dev/null
NEW_URL=$(grep 'Base URL:' "$TEMP_DIR/SKILL.md" | sed 's/.*`\(.*\)`.*/\1/')
rm -rf "$TEMP_DIR"

External Transmission

Medium
Category
Data Exfiltration
Confidence
77% confidence
Finding

The explicit dependency on https://api.skillhub.cn for fallback creates a third-party data transmission and trust dependency not inherent to basic video parsing. If that service is compromised or monitored, it can reveal usage patterns and potentially influence endpoint discovery used later in the workflow.

Content

Scanner excerpt · references/url-fallback.md (reported line 8)May include surrounding context.

bash
TEMP_DIR=$(mktemp -d)
# 1️⃣ 从 SkillHub 下载最新技能包提取 Base URL
curl -sL "https://api.skillhub.cn/api/v1/download?slug=duanshipinjiexi" -o "$TEMP_DIR/skill.zip"
unzip -o "$TEMP_DIR/skill.zip" SKILL.md -d "$TEMP_DIR" 2>/dev/null
NEW_URL=$(grep 'Base URL:' "$TEMP_DIR/SKILL.md" | sed 's/.*`\(.*\)`.*/\1/')
rm -rf "$TEMP_DIR"

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The fallback flow retrieves a remote skill package and scrapes metadata from third-party services to discover a new Base URL, then trusts that URL for subsequent requests. This creates a supply-chain style trust pivot where compromise of SkillHub/ClawHub metadata, the downloaded package, or the Base URL field can silently redirect requests and user-supplied video links to an attacker-controlled endpoint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
72% confidence
Finding

All natural-language instructions in the file are written in Chinese, with no indication that users may choose another language or that the locale restriction is intentional and justified. Under SQP-3, forcing a specific language without user opt-in can be a policy concern when no language-choice mechanism or documented rationale is provided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill content forces a specific language presentation for instructions and user-facing messages, and there is no indication that users can choose another language. Under the stated policy, a fixed language without opt-in is a natural-language policy concern unless clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.