Back to skill

Security audit

Health Tracking

Security checks for vulnerabilities and agentic risk

Overview

This health-tracking skill is mostly purpose-aligned, but it stores sensitive health data locally and introduces shared chat-thread handling without clear consent, privacy controls, or implementation files to verify safeguards.

Install only if you are comfortable keeping health and meal records as local plaintext CSV files and possibly using a #health channel workflow. Avoid using it in shared workspaces or repositories unless data files are ignored, access is restricted, and you have a clear plan for deletion and retention.

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

Sensitive Health Information Stored in Plaintext CSV Files

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 24-72
Vulnerability Type: Plaintext storage of sensitive health data
Risk Level: Medium

Vulnerable Code Snippet

bash
node scripts/health_record.js morning --weight=70 --sleep=7 --mood=4 --hr=60
node scripts/health_record.js night --weight=69.5 --mood=3
node scripts/health_record.js water --amount=500 --source=water
node scripts/health_record.js workout --activity=running --duration=30 --intensity=3 --cal=300
text
data/daily.csv: ts,date,weight_kg,sleep_hours,resting_hr,mood_1to5,notes
data/hydration.csv: ts,date,time,amount_ml,source,notes
data/workout.csv: ts,date,time,activity,duration_min,intensity_1to5,calories_estimate,notes
data/nutrition_meals.csv: ts,date,time,meal_type,description,photo_ref,cal,p,c,f,water,notes

Technical Analysis

The documented workflow stores weight, sleep duration, resting heart rate, mood, hydration, exercise, meal descriptions, free-form notes, and food-photo references in CSV files under the project-local data directory.

CSV files provide no encryption or access control by themselves. The skill documentation does not require restrictive file permissions, encryption at rest, data minimization, retention limits, deletion controls, consent before retaining photo references, or safeguards preventing the generated files from being committed to version control.

The referenced implementation scripts are absent from the audited artifact, so implementation-level protections cannot be verified. Based on the documented design, sensitive health records are intended to be persisted as plaintext CSV data.

Attack Path

  1. A user invokes the documented health-recording commands.
  2. Health and behavioral information is written to files such as data/daily.csv and data/nutrition_meals.csv.
  3. The files accumulate sensitive records, including timestamps, health measurements, notes, meal information, and photo references.
  4. A local user, pro ...[truncated 1058 chars]
Remediation
View remediation

Remediation Suggestions

  1. Store health records outside the project and source-code directories in a dedicated per-user data location.
  2. Create directories with owner-only permissions and files with restrictive permissions, such as 0700 for directories and 0600 for files on supported systems.
  3. Encrypt sensitive records at rest using authenticated encryption and keep encryption keys outside the data directory.
  4. Add data/, generated CSV files, photo references, and local secrets to .gitignore; also configure automated secret and sensitive-data checks before commits.
  5. Minimize retained information. Avoid storing photo references and free-form notes unless explicitly necessary and approved by the user.
  6. Obtain explicit user consent before persistence, clearly identifying what data will be stored, where it will be stored, and for how long.
  7. Implement configurable retention periods and commands for reviewing, exporting, and securely deleting stored records.
  8. Avoid publishing health records to shared channels by default. Verify channel visibility and request confirmation before posting sensitive information.
  9. Validate the missing recording scripts in a follow-up audit to confirm that they enforce permissions, safely encode CSV fields, prevent formula injection, and do not transmit health data externally.
Vulnerability Patterns
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill handles sensitive health and nutrition data but does not warn users that these records are stored locally in CSV files. In this context, silent persistence is dangerous because users may disclose weight, sleep, heart rate, and diet information without understanding retention, access, or reuse risks.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The food-photo workflow instructs the system to analyze meal images and append derived metadata, but it does not inform users that both image-linked references and nutritional inferences may be processed and stored. Because food photos can contain incidental sensitive content and reveal health patterns, undisclosed processing materially increases privacy risk.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documented behavior expands from local CSV recording into creating and managing chat-channel threads, which introduces a new messaging-side effect not declared in the skill metadata. In a health-tracking context, this is riskier because thread creation around meal logs can expose sensitive health information in shared spaces and broadens the skill's operational scope without explicit user consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

The workflow specifies that the summary must be '日本語で', forcing a specific language for responses. This is a natural-language policy concern because it imposes a locale/language constraint without user opt-in or documented justification.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The manifest specifically names meals, weight, water, workout, and sleep, plus food-photo nutrition analysis. The documented '体調フィードバック' flow adds broader condition reporting such as fatigue and freeform memos, which extends beyond the clearly declared categories.

Content

No source excerpt is available for this finding.