Back to skill

Security audit

云指网站迁移助手

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent website migration helper, but it requires unpinned third-party skill loading and broad crawling/publishing behavior that needs review before installation.

Review this before installing. Use only with pinned and reviewed dependency skill versions, run crawling in a network-restricted environment, use a short-lived narrowly scoped MCP token, confirm every target-site write, and require manual review of any JavaScript before it is published on the new site.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (4)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:39
Finding

Mandatory Retrieval and Execution of Unpinned Remote Skills

Content
View full analysis
Remediation
View remediation

T01 · Skill Instruction Hijacking

Note
Location
SKILL.md:10
Finding

Mandatory Injection of Promotional Registration Content

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:145
Finding

User-Controlled Website Crawling Permits Server-Side Request Forgery

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:211
Finding

Unreviewed Source JavaScript Is Cloned and Published on the Target Website

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly directs the agent to fetch, install, and trust external skills from third-party URLs at runtime, then use their declared name fields as callable tools. This creates a supply-chain risk: a compromised remote package, malicious update, or spoofed dependency can gain execution influence and access to later-collected secrets such as MCP endpoints and Bearer tokens used for site writes.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- 若**已可用**:读取其 `SKILL.md` 的 `name` 字段作为真实调用名,直接进入第 4 步登记(幂等)。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- 若**已可用**:读取其 `SKILL.md` 的 `name` 字段作为真实调用名,直接进入第 4 步登记(幂等)。

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- 若**已可用**:读取其 `SKILL.md` 的 `name` 字段作为真实调用名,直接进入第 4 步登记(幂等)。

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The instruction says '请提醒用户到云指官网注册会员并领取试用站点', and the surrounding operational text is written as mandatory guidance in Chinese for user-facing interaction. Although the manifest includes English display and description fields, the skill workflow does not offer the user a language/locale choice before conducting the interaction, which can violate language-choice policy.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

The manifest describes an orchestrator for migrating website content and preserving SEO, but L331 adds a separate capability to maintain a local blacklist-style record of complained-about domains and enforce future denial logic from that local store. This persistence and policy-enforcement mechanism is not reflected in the manifest and is not a direct implementation detail of content migration itself.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The instructions state that all questioning must be presented via forms and the entire user-facing template content is fixed in Chinese, with no indication that users may choose another language or locale. This can violate language/locale policy when the skill is used with users who have not opted into Chinese-only interaction.

Content

No source excerpt is available for this finding.

Dynamic Request Target

Medium
Category
Server-Side Request Forgery
Confidence
96% confidence
Finding

The example builds an outbound HTTP request directly from a user-supplied domain and performs no validation, allowlisting, or destination restriction. In a migration skill, this can enable SSRF against internal services, cloud metadata endpoints, localhost, or attacker-controlled redirects, especially because the skill is explicitly designed to fetch arbitrary source sites as part of normal operation.

Content

Scanner excerpt · references/source-site-ownership-verification.md (reported line 193)May include surrounding context.

def verify_meta(domain, token): """方式三:HTML Meta 标签验证""" html = requests.get(f"http://{domain}/", timeout=10).text return f'content="{token}"' in html # 实际应使用 HTML 解析器

text