Back to skill

Security audit

Family Nutrition Planner

Security checks for vulnerabilities and agentic risk

Overview

This nutrition planner is coherent and has no exfiltration or persistence behavior, but its allergy-safety claims are not enforced and could leave unsafe meals in successful plans.

Review carefully before installing or using for real dietary decisions. Do not rely on this skill for allergy-safe meal planning unless the allergen filtering is fixed and verified; treat generated menus and budget estimates as rough examples that need human review.

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

Error
Location
handler.py:171
Finding

Declared allergens are not removed from generated meal plans

Content
View full analysis
List[Dict]: """Filter out recipes containing allergens.""" if not allergies: return recipes safe_recipes = [] for recipe in recipes: all_ingredients = recipe.get("ingredients", []) has_allergen = False for allergen in allergies: if any(allergen in ing for ing in all_ingredients): has_allergen = True break if not has_allergen: safe_recipes.append(recipe) return safe_recipes ``` However, the handler generates the complete weekly plan before checking for allergens. The check only creates warnings and does not remove or replace unsafe meals: ```python meal_generator = MealPlanGenerator( request.preferences, request.constraints, request.goals ) weekly_plan = meal_generator.generate_weekly_plan() allergen_warnings = [] for day_plan in weekly_plan: for meal_type, meal in day_plan["meals"].items(): found = AllergyChecker.check_ingredients( meal.get("ingredients", []), list(all_allergies) ) if found: allergen_warnings.append( f"{day_plan['day']}{meal_type}: allergen detected: {', '.join(found)}" ) ``` The final line in this excerpt is an English rendering of the source message text; the ...[truncated 2656 chars]
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • 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
Findings (12)

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The handler aggregates allergies, generates the weekly menu first, and only afterward scans meals to add warning messages. In this skill context, post-hoc warnings are unsafe because the output still presents allergen-containing meals as part of a recommended plan, which could directly endanger users with food allergies.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest description and core operating instructions are presented in Chinese and instruct the assistant in that language, but the file does not state that language selection is optional or user-controlled. This creates a locale/language policy concern because it implicitly forces a specific language without explicit user opt-in.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases are broad, generic requests like planning healthy eating or generating a grocery list, which can overlap with normal assistant interactions and cause the skill to activate unintentionally. Over-broad invocation increases the chance of misrouting user requests into this skill, potentially exposing personal health and household data to a workflow the user did not explicitly intend to invoke.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This Python file contains hard-coded user-facing defaults in Chinese, beginning with the fallback family name "我的家庭". The skill also returns meal names, shopping categories, warnings, and recommendations in Chinese throughout, but provides no opt-in or configurable language selection, which is a natural-language locale policy concern.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The weekly meal generator accepts preferences, constraints, and goals, but does not actually use them when selecting recipes. In a nutrition-planning skill, this can mislead users into believing plans are personalized and compliant when they may violate dietary restrictions, prep-time limits, or nutritional goals.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The shopping list generator stores a budget value but never uses it to constrain meal selection or list generation; costs are random estimates unrelated to actual planning. This can cause the skill to claim budget-aware planning while producing unaffordable or misleading shopping guidance.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The description is written entirely in Chinese, which indicates a language-specific behavior or presentation without any mention of user choice or opt-in. The policy requires flagging skills that force a specific language or locale unless they explicitly offer a choice or clearly justify the constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

This JSON contains natural-language data fields and values exclusively in Chinese, including allergen names, food categories, and RDA labels. Because the file provides no indication that the skill is region-specific or that users can opt into this locale, it may enforce a specific language/locale contrary to the stated policy.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This JSON file contains user-facing recipe names, ingredient lists, tags, and time strings entirely in Chinese, which implies a fixed language/locale choice. The file does not indicate that users can choose their language or that the skill is intentionally limited to a Chinese-language audience.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The script hardcodes Chinese names, cuisine preferences, allergen text, and Chinese currency labels in its natural-language strings. This can violate language/locale policy because it implicitly forces a specific locale without user opt-in or justification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This code file handles and outputs health-related details for named family members, including calorie summaries and allergen concerns. While it is a test script, there is no disclosure in the script docstring or nearby comments warning that running it will display potentially sensitive personal and health information to stdout.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.