Back to skill

Security audit

AI钢琴老师

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed Chinese piano-teaching skill with optional report/document generation, and I found no hidden code, credential access, persistence, exfiltration, or destructive behavior.

Before installing, understand that this skill is mainly a Chinese-language piano tutor. Use care when generating HTML reports from content supplied by other people, because the template does not explicitly require escaping or sanitizing inserted text. If Tencent Docs is connected, document or slide generation may send practice-plan content to that service.

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

Warning
Location
references/report-template.md:377
Finding

Unescaped Dynamic Content in Generated HTML Reports

Content
View full analysis
{{TITLE}} ``` ```html

{{TITLE}}

AI Piano Teacher Report

{{STUDENT_LEVEL}}
{{NAV_ITEMS}}
{{MODULES}}
``` The template's usage rules direct the agent to replace every placeholder with actual content and save the result as an HTML file, but they do not require contextual output encoding or sanitization. ### Technical Analysis The template inserts dynamic values directly into HTML contexts. Values such as `TITLE`, `STUDENT_LEVEL`, repertoire names, assessment content, and other generated module text may be derived from user input. No instruction requires HTML metacharacters to be escaped before substitution. For example, an attacker-controlled title or student-level value containing the following markup could be inserted into the resulting document: ```html ``` When the generated report is opened in a browser, the injected event handler may execute. The `NAV_ITEMS` and `MODULES` placeholders present a broader risk because they intentionally accept HTML fragments. These fields cannot be secured through ordinary text es ...[truncated 2005 chars]
Remediation
View remediation
`, `"`, and `'` in titles, student levels, dates, names, repertoire names, and instructional text. - Apply encoding at the point where each value is inserted rather than relying on input filtering. 2. **Construct HTML fragments from trusted templates** - Do not accept raw user-controlled HTML for `NAV_ITEMS` or `MODULES`. - Generate elements, attributes, and navigation targets from fixed templates. - Insert user-derived values only into encoded text nodes. 3. **Sanitize content when limited markup is required** - Apply a strict allowlist of necessary elements and attributes. - Reject `
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (12)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger list contains broad everyday music-study phrases that can cause accidental invocation when users discuss music generally, not necessarily intending to activate this skill. Unintended activation can expose user content to the skill's logic and any connected artifact-generation behavior, creating consent and context-leakage risks even in an otherwise benign educational skill.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The general consultation branch activates on vague inputs like '怎么开始' or any input with no clear direction, which is overly permissive. This increases the chance that unrelated or only partially related user prompts are captured and steered into the skill, causing unintended processing and potentially prompting unnecessary data collection during the student-profile step.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

该模板在 HTML 标签中固定设置 lang="zh-CN",属于自然语言/区域设置约束。文件中未说明这是面向特定地区的专用模板,也未提供用户选择语言或区域设置的机制,可能违反语言/locale 需经用户选择或明确正当化的要求。

Content

No source excerpt is available for this finding.

Overly Broad Trigger

Low
Category
Trigger Abuse
Confidence
88% confidence
Finding

The single-term trigger '乐理' is so short and generic that it may activate the skill during broad musical discussions where the user did not intend to invoke a dedicated piano-teaching workflow. While the skill is low risk, accidental activation can still create avoidable context capture and confusing behavior.

Content

No source excerpt is available for this finding.

Overly Broad Trigger

Low
Category
Trigger Abuse
Confidence
88% confidence
Finding

The trigger '视奏' is a common standalone music term and may match incidental discussion rather than an explicit request for this skill. This can lead to unintentional invocation and unnecessary routing of user input into the skill's instructional flow.

Content

No source excerpt is available for this finding.

Overly Broad Trigger

Low
Category
Trigger Abuse
Confidence
88% confidence
Finding

The short trigger '练耳' is broad enough to catch unrelated ear-training discussions across general music contexts. In this skill's context the impact is limited, but it still raises the risk of accidental activation and minor context leakage into the skill pipeline.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The instructional content is written to operate in Chinese and the interaction design assumes Chinese-language prompts and responses, but the skill does not explicitly offer users a language or locale choice. This can violate language/locale policy when a skill effectively enforces one language without opt-in or documented justification.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest and most of the file frame this skill as a knowledge-based piano teacher focused on instruction, analysis, and practice advice. The connector-driven capability to create Tencent Docs artifacts is an external productivity/integration feature that is not justified by the stated teaching scope and is explicitly contrasted with GitHub as 'not applicable' for being a pure knowledge skill.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

Lines L516-L517 characterize the skill as 'pure knowledge' and therefore not suited to GitHub, but lines L512-L515 describe side-effecting connector integrations that create online documents and slides. That is an active contradiction in the skill's own documentation about whether it is purely advisory or also an integration/action skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file is entirely written in Chinese and provides no indication that users may choose another language or locale. Under the policy rule for natural-language constraints, this can be considered a language-policy issue because the skill content implicitly requires Chinese comprehension without documented opt-in or justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The entire document is written in Chinese and does not indicate any user language choice or opt-in. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy concern, even though the content itself is informational.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
98% confidence
Finding

This markdown file presents all skill content in a single language, Chinese, and does not indicate that users may select another language or that the file is intentionally limited to a Chinese-speaking audience. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.