Back to skill

Security audit

Lofy Fitness

Security checks for vulnerabilities and agentic risk

Overview

This fitness tracking skill is coherent and not malicious, but it automatically stores sensitive health and meal data in a local JSON file without clear user consent or retention controls.

Install only if you are comfortable with the agent keeping local persistent records of workouts, meals, weight goals, PRs, and related fitness notes. Prefer using it only for explicit logging requests, and review or delete data/fitness.json when you do not want that history 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:9
Finding
Unconditional Plaintext Storage of Sensitive Fitness and Health Data## Vulnerability Details **File Location**: `SKILL.md`, lines 9–19 and 65–67 **Vulnerability Type**: Plaintext sensitive-data storage and excessive automatic collection **Risk Level**: Medium ### Vulnerable Code ```markdown ## Data File: `data/fitness.json` ```json { "profile": { "goal": "", "weight_log": [], "start_date": null }, "workouts": [], "meals": [], "prs": {}, "weekly_summary": [], "current_week": { "workout_count": 0, "target": 0, "workouts": [] } } ``` ``` ```markdown 1. Always read `data/fitness.json` before responding about fitness 2. Update the JSON immediately after any fitness conversation 3. Keep responses short — log confirmation + one comment ``` ### Technical Analysis The Skill requires persistent storage of weight history, meals, workouts, goals, progress, and potentially injury-related information in a local JSON file. These records constitute sensitive fitness and health-related data. The instructions require the agent to read the file for every fitness response and update it immediately after any fitness conversation. They do not require explicit consent for each stored entry, limit collection to information the user requested to retain, or distinguish inferred nutritional estimates from confirmed facts. No encryption, file-permission requirements, retention policy, deletion mechanism, or data-minimization controls are specified. Consequently, sensitive records may remain accessible in plaintext to any user or process that already has permission to read the project workspace. This finding does not provide privilege escalation or grant an attacker additional system permissions; exploitation requires preexisting access to the storage location. ### Attack Path 1. A user discusses a workout, meal, body weight, fitness goal, or injury-related concern. 2. The Skill interprets the conversation and may derive estimated values such as calories, protein, or workout per ...[truncated 919 chars]
Remediation
## Remediation Suggestions 1. Require explicit user confirmation before creating or updating persistent fitness records. 2. Replace “update immediately after any fitness conversation” with a rule that stores only fields the user explicitly asks to log. 3. Clearly mark calorie, protein, and performance estimates as inferred values and allow users to review or correct them before storage. 4. Apply data minimization by excluding free-form conversation details and unrelated medical information. 5. Restrict the data file to the owning account using the narrowest filesystem permissions supported by the environment. 6. Use encrypted storage when the runtime provides a suitable protected storage mechanism. 7. Define retention controls and provide commands to inspect, export, correct, and permanently delete stored records. 8. Prevent sensitive files from entering source control, logs, diagnostics, or unprotected backups. 9. Document who or what can access the data and notify the user before synchronization with external systems.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (2)

Vague Triggers

Medium
Confidence
91% confidence
Finding
The skill description is broad enough to activate on ordinary fitness or meal-related conversation, which can cause the agent to read and write persistent health data when the user did not explicitly ask to use a tracking skill. In this context, overbroad invocation is risky because the skill is designed to immediately access and update a local file containing sensitive wellness information.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill directs the agent to always read and immediately update a persistent JSON file containing health-related data, but it provides no user notice, consent flow, or retention boundaries. This creates a privacy risk because users may disclose workouts, meals, body weight, injuries, or other sensitive health signals without realizing that the data is being stored locally across sessions.

Static analysis

No suspicious patterns detected.