Back to skill

Security audit

小愈树 — AI 儿童心理成长顾问

Security checks for vulnerabilities and agentic risk

Overview

This child-guidance skill is mostly coherent, but it mandates persistent storage of sensitive child behavior and family context without clear consent, limits, or deletion controls.

Review before installing. Use only if you are comfortable with the agent storing child-related counseling details across sessions, and avoid entering names, school names, addresses, medical identifiers, or other unnecessary identifying information. The publisher should add explicit opt-in memory consent, proposed-memory review, data minimization, retention, correction, and deletion controls.

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
SKILL.md:32
Finding

Mandatory Persistent Storage of Sensitive Child Data Without Consent or Lifecycle Controls

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 32-63
Vulnerability Type: Mandatory persistence of sensitive information concerning minors
Risk Level: Medium

Vulnerable Instruction Snippet

The following is an English translation of the complete relevant instruction segment:

markdown
## Memory and Tracking Mechanism (Extremely Important)

You have persistent memory capabilities and must perform the following operations in every conversation:

### When to Remember

Whenever the user describes a new problem, new situation, or provides feedback about the child, you need to use the `update_memory` tool to record key information.

### Memory Categories

Organize memories into the following categories, using a clear title prefix for each:

1. [Child Profile] — Basic information such as age, gender, grade, personality traits, interests, and hobbies
   - Example title: `[Child Profile] Basic Information`
   - Example content: `7 years old, first grade. Personality traits: energetic, strong self-esteem, and sensitive to fairness.`

2. [Problem Record] — The specific issue discussed during each consultation
   - Example title: `[Problem Record] 2026-04 Believes the teacher targets him`
   - Example content: `The child complains that the teacher targets him and that others may do the same thing without being criticized. The child may be unable to distinguish subtle behavioral differences. This is interpreted as a typical manifestation of the egocentric cognitive stage.`

3. [Guidance Recommendations] — Key recommendations previously given
   - Example title: `[Guidance Recommendations] 2026-04 Strategy for handling "the teacher targets me"`
   - Example content: `Recommend using the Detective Game to help the child observe differences and using "What was different today?" during dinner to encourage thinking from multiple perspectives.`

4. [Progress Tracking] — Parental feedback about implementation
...[truncated 4510 chars]
Remediation
View remediation

Remediation Suggestions

  1. Make persistent memory explicitly opt-in. Provide parenting guidance using session-only context by default. Before the first memory write, explain what will be retained, why it is useful, and how the user can revoke consent.

  2. Request approval for each memory category. Allow the user to approve child profile data while declining problem history, inferred assessments, or progress tracking.

  3. Apply strict data minimization. Store only information necessary for a user-requested follow-up. Prohibit storage of names, exact schools, addresses, contact details, account identifiers, and other direct identifiers.

  4. Separate facts from inferences. Clearly label whether an entry is a user statement, parent interpretation, or model hypothesis. Do not persist speculative psychological conclusions by default.

  5. Add review and correction controls. Before writing, display the proposed memory entry and ask the user to confirm it. Provide commands or documented procedures to list, correct, export, and delete all child-related records.

  6. Define retention limits. Automatically expire child-related records after a short, documented period unless the user deliberately renews consent.

  7. Protect later retrieval. Do not automatically reveal sensitive historical information merely because a new conversation begins. Ask whether the user wants previous records used, and avoid exposing details in contexts where account access may be shared.

  8. Record provenance and modification history. Do not silently overwrite conflicting information. Preserve the source and date of each user-approved correction while preventing obsolete information from influencing recommendations.

  9. Add authorization and privacy warnings. Ask users to confirm that they are authorized to provide and retain information concerning the child. Advise them not to enter unnecessary identifying details.

  10. **Fail safely when memo ...[truncated 136 chars]

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (9)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill advertises persistent tracking of a child's growth profile and counseling progress but provides no privacy notice, retention explanation, or warning about storing sensitive information about a minor. Because the subject matter is children's psychological and behavioral issues, the missing disclosure materially raises privacy and consent risk.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The trigger conditions are extremely broad and explicitly include casual parenting remarks, making accidental activation likely during ordinary conversation. In a skill that performs ongoing behavioral analysis and stores child-related memory, over-triggering increases the chance of collecting sensitive minor and family information without sufficiently clear user intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The skill requires recording detailed child profile, problem history, advice, and progress on every conversation, yet it lacks minimization rules, consent gates, and sensitivity boundaries for minors' psychological data. This creates a systematic mechanism for accumulating longitudinal sensitive information that could be mishandled, over-collected, or retained beyond user expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README explicitly describes cross-session memory for a child's profile and counseling progress, which implies storage of highly sensitive data about a minor's mental health and behavior. There is no clear upfront notice, consent flow, retention policy, or minimization guidance, so users may disclose protected information without understanding it will be persisted across sessions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The sample dialogue says '我已记录' immediately after collecting a child's age, grade, temperament, and behavioral traits, but the user is not warned beforehand that this information will be recorded and persisted. Because the subject is a child and the content concerns psychological and behavioral issues, silent persistence materially increases privacy and safety risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

标题、描述和整份技能指令均以中文固定呈现,未说明可根据用户偏好切换语言。若组织要求避免未经用户选择就强制特定语言或地区设置,这种默认单一语言约束构成自然语言政策风险。

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

Persistent memory instructions direct the system to retain detailed child and family context across sessions without clear boundaries on sensitive categories or minimization. In the context of a child psychology coaching skill, this is especially risky because it may store behavioral, emotional, educational, and family-pattern data about a minor over time.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file presents all instructions, examples, and operational guidance exclusively in Chinese. Under the policy rule, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly justified or the user is given a choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The natural-language description and sample interactions assume Chinese-only usage, which can amount to a language policy restriction when no user opt-in or alternative is mentioned. There is no explicit statement that the skill is intentionally limited to a Chinese-speaking or China-specific audience for compliance or regional reasons.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.