Back to skill

Security audit

科学营养顾问

Security checks for vulnerabilities and agentic risk

Overview

This is a Chinese nutrition-tracking skill that clearly stores nutrition and body-profile data locally, with no evidence of hidden network access or malicious behavior.

Install this only if you are comfortable with a nutrition skill saving sensitive body, diet, hydration, habit, and optional menstrual-cycle information in local plaintext JSON files under ~/nutrition-data. Review or delete those files manually if you stop using the skill or do not want long-term records retained.

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:92
Finding

Plaintext Persistence of Sensitive Health and Behavioral Data

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 92-107; related storage directives at lines 110-155, 1192-1207, and 1275-1277
Vulnerability Type: Sensitive information stored in plaintext with unspecified access controls
Risk Level: Medium

Vulnerable Code

text
### User profile persistence

Proactively ask the user during the conversation whether the profile should be saved:

Whether the user needs to save their body data.
After saving, it can be retrieved in a later conversation with one command.

Saved content: sex, age, height, weight, activity level, goal, and menstrual-cycle information
Storage location: local ~/nutrition-data/profile.json (local storage only; not uploaded)

Profile reading and updates:
- When the user requests "read profile," read ~/nutrition-data/profile.json
- When the user requests "update profile [field]," update the corresponding field and recalculate
- When the user requests "delete profile," delete the local file
- During recalculation, if a profile exists, ask whether the latest saved weight should be used

Related directives also store daily meal logs, hydration records, and habit data in predictable plaintext files:

text
~/nutrition-data/daily-logs/{yyyy-MM-dd}.json
~/nutrition-data/hydration.json
~/nutrition-data/habits.json

Technical Analysis

The Skill directs the Agent to persist potentially sensitive information in ordinary JSON files under a predictable directory. The stored data can include sex, age, height, weight, menstrual-cycle information, pregnancy or breastfeeding status, PCOS status, allergies, food intolerances, meal history, hydration records, and behavioral trends.

The instructions do not require restrictive directory or file permissions, encryption at rest, data minimization, retention limits, or secure deletion. The statement that data is stored locally and is not uploaded limits remote exposure but does not pr ...[truncated 1712 chars]

Remediation
View remediation

Remediation Suggestions

  1. Create ~/nutrition-data/ with owner-only permissions such as mode 0700.
  2. Create each data file with mode 0600, using secure file-creation semantics that do not briefly expose broader permissions.
  3. Encrypt sensitive records at rest with an OS-backed key store or another authenticated encryption mechanism.
  4. Obtain explicit, granular consent before storing reproductive or medical information, separately from ordinary nutrition preferences.
  5. Minimize persisted fields and avoid storing optional health data unless required for a feature explicitly requested by the user.
  6. Define configurable retention periods and automatically delete expired daily logs and derived habit records.
  7. Provide a comprehensive deletion command that removes the profile, daily logs, hydration records, habit records, and derived summaries rather than deleting only profile.json.
  8. Use atomic writes and validate file ownership, type, and path before reading or updating records to reduce symlink and file-replacement risks in an implementation.
  9. Clearly disclose which records are stored, their location, retention period, and how the user can inspect, export, or delete them.
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 (3)

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger list includes many broad, everyday phrases such as '吃什么', '减肥', '我吃了', '今天吃什么', and '读取档案/保存档案', which can cause the skill to activate in unrelated conversations. Because this skill also performs local file read/write actions and stores sensitive health data, accidental invocation increases the chance of privacy-impacting actions and unintended data access or modification.

Content

No source excerpt is available for this finding.

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest description and the entire user-facing instruction set are written exclusively in Chinese, and the trigger phrases are all Chinese-language terms. There is no indication that users may choose another language or that the skill is intentionally restricted to a Chinese-speaking/regional context.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.