T09 · Insecure Skill Coding Practices
- Location
SKILL.md:97- Finding
Shell Command Injection Through User-Controlled Food Names
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This calorie-tracking skill is mostly purpose-aligned, but it gives agents unsafe command templates for user-supplied food names and stores sensitive diet and weight data automatically in a local database.
Review this skill before installing. It keeps diet and weight records in a local plaintext SQLite database, may be invoked by broad food-related phrasing, and should not be used on shared or synced workspaces without understanding where calorie_data.db will live. The command templates should be fixed to pass arguments without a shell or with robust escaping before relying on it for untrusted food text.
SKILL.md:97Shell Command Injection Through User-Controlled Food Names
This markdown file includes a 'Deleting Mistakes' section with the example command 'Delete entry 5' but does not warn that the entry will be removed from the local tracking database. Because deletion affects user data and may be irreversible, the skill description should disclose that behavior.
The markdown explicitly documents the command 'python3 ... delete 5' but provides no caution that it performs a destructive operation on stored calorie entries. For markdown files, behaviors affecting user data should be accompanied by a warning about the impact and reversibility.
The README describes persistent storage of food intake and weight data in a local SQLite database and says the agent will automatically use the skill, but it does not clearly warn users that sensitive personal health information will be retained on disk. In an agent setting, automatic logging without prominent disclosure can lead to unintentional collection of health-related data, especially on shared machines or synced workspaces.
The activation text is broad enough to trigger on common conversation about food, calories, or weight, which can cause the agent to invoke the skill in situations where the user did not clearly intend persistent health tracking. In this skill, that risk is amplified because invocation can lead to storage of sensitive diet and weight data in a local SQLite database.
The skill stores food intake, protein totals, goals, and weight history in persistent SQLite storage, which is health-related personal data, but the documentation does not clearly warn that this information will be retained. Users may disclose sensitive wellness data without realizing it will be stored beyond the current interaction.
This skill persistently stores sensitive health-related data, including food intake and body weight, in a local SQLite database without any user-facing notice, consent flow, or retention controls. Even though the database is local, the stored data could be exposed to other local users, backups, or malware, creating a privacy risk that is material for health data.
The delete_entry function permanently removes a food log entry from the database as soon as the command is invoked. While it prints a message after deletion, there is no confirmation prompt or advance warning before this destructive action occurs.
The phrase 'English language' appears as a positive characteristic in the comparison section, implying a language restriction. The file does not offer language choice, opt-in, or a documented reason for limiting the skill to English, which conflicts with the language/locale policy criteria.
The documented deletion flow allows removal by numeric ID without any warning, preview, or confirmation step, increasing the chance of accidental data loss. In a conversational-agent context, misheard or misinterpreted deletion requests could permanently remove user records with no easy recovery path.
No suspicious patterns detected.