Back to skill

Security audit

Nutrition Advisor

Security checks for vulnerabilities and agentic risk

Overview

This nutrition skill is purpose-aligned and disclosed, but users should be careful before saving health and diet logs locally.

Installers should treat saved nutrition profiles and daily logs as sensitive personal data. Use session-only help unless you need long-term tracking, and if you enable persistence, understand that the files may be readable by anything with access to your home directory or backups.

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

Sensitive Health and Nutrition Data Stored in Predictable Plaintext Files

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 143-225
Vulnerability Type: Plaintext storage of sensitive user data
Risk Level: Medium

The Skill instructs the Agent to persist body measurements, menstrual-cycle information, allergies, dietary preferences, nutrition targets, and meal history in unencrypted JSON files at predictable locations.

text
## User Profile Storage

When the user wants persistence, store profile data locally:

```text
~/nutrition-data/profile.json

Use this structure:

json
{
  "sex": "female",
  "age": 29,
  "height_cm": 168,
  "weight_kg": 62,
  "body_fat_percent": 25,
  "activity_level": "moderate",
  "goal": "fat_loss",
  "cycle": {
    "average_length_days": 28,
    "last_period_start": "2026-06-01"
  },
  "allergies": [],
  "intolerances": [],
  "disliked_foods": [],
  "dietary_preferences": []
}

Before writing or updating local files, explain what will be stored and ask for confirmation.

Daily Food Log

Store daily logs locally by date:

text
~/nutrition-data/daily-logs/YYYY-MM-DD.json

Use this structure:

json
{
  "date": "2026-06-28",
  "target": {
    "calories": 1650,
    "protein": 120,
    "carbs": 150,
    "fat": 50,
    "fiber": 30
  },
  "meals": [
    {
      "id": "m1",
      "type": "breakfast",
      "time": "08:15",
      "items": [
        {
          "name": "oats, dry",
          "amount_g": 40,
          "calories": 156,
          "protein": 6.8,
          "carbs": 26.4,
          "fat": 2.8,
          "fiber": 4.1
        }
      ],
      "total": {
        "calories": 156,
        "protein": 6.8,
        "carbs": 26.4,
        "fat": 2.8,
        "fiber": 4.1
      },
      "feeling": null,
      "feeling_time": null
    }
  ],
  "water_ml": 1200,
  "water_target_ml": 2100,
  "summary": {
    "calories": 1
...[truncated 2047 chars]
Remediation
View remediation

Remediation Suggestions

  1. Make session-only handling the default and persist data only after explicit, field-specific consent.
  2. Explain which fields will be stored, their destination, retention period, and deletion procedure before writing.
  3. Minimize persisted data and omit cycle, allergy, and other health-related fields unless they are necessary for a requested feature.
  4. Create ~/nutrition-data with owner-only permissions such as 0700, and create each record with permissions such as 0600.
  5. Encrypt sensitive records using an OS-backed key store or another established secret-management facility; do not store encryption keys beside the records.
  6. Use atomic file creation and updates to prevent temporary or partially written copies from receiving weaker permissions.
  7. Define automatic retention limits and provide a command or workflow that securely deletes individual logs and the complete profile.
  8. Warn users that filesystem backups and synchronization tools may copy the records beyond the original device.
  9. Validate that storage paths remain inside the intended user-owned directory and do not follow attacker-controlled symbolic links.
Vulnerability Patterns
  • 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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The text explicitly states this is an English version of the skill, and the manifest name also includes an '-en' suffix, but the file does not offer users a language choice or explain a necessary locale restriction. That creates a natural-language locale policy concern under the rule for forced language without opt-in.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.