Back to skill

Security audit

France

Security checks for vulnerabilities and agentic risk

Overview

This is a France travel-planning skill with scoped local trip memory, but users should be aware it can store personal travel details in a plaintext file.

Install only if you are comfortable with trip preferences being stored locally in ~/france/memory.md. Avoid putting passport numbers, payment data, reservation login links, or sensitive confirmation codes in the memory file, and delete or edit it when you no longer need the trip context.

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
setup.md:13
Finding
Persistent Plaintext Storage of Personal and Travel Information## Vulnerability Details **File Location**: `setup.md`, lines 13-33; `memory-template.md`, lines 7-20 and 54-57 **Vulnerability Type**: Persistent plaintext storage of potentially sensitive user information **Risk Level**: Medium ### Vulnerable Code `setup.md`, lines 13-33: ```markdown ### 2. Initialize Memory File Create `~/france/memory.md` using the template from `memory-template.md`. ### 3. Gather Trip Context Ask naturally (not as a form): - Which month are you going? (season changes crowds and pricing) - How long is the trip? - Which bases matter most? (Paris, Lyon, Provence, Riviera, other) - Food-first, museums-first, coast-first, or mixed? - Any mobility, dietary, or budget constraints? - Rail-focused, rental car, or mixed transport? ### 4. Save to Memory Update `~/france/memory.md` with their answers. ## Returning Users If `~/france/memory.md` exists: 1. Read it silently 2. Reuse known preferences 3. Ask what changed since last plan 4. Update memory with new priorities and constraints ``` `memory-template.md`, lines 7-20 and 54-57: ```markdown ## Trip Details - **Dates:** - **Duration:** - **Regions:** [Paris-Ile-de-France / Lyon-Rhone / Provence-Marseille / French Riviera / Bordeaux-Atlantic / Alps-East] - **Cities/Bases:** - **Travelers:** [solo / couple / family / group] - **Kids:** [yes (ages) / no] ## Preferences - **Travel style:** [foodie / culture / coast / road-trip / family / nightlife / mixed] - **Budget:** [budget / mid-range / luxury] - **Dietary:** [none / vegetarian / vegan / gluten-free / other] - **Mobility:** [full / limited / wheelchair] - **Transport:** [rail / rental car / public transit / mixed] ``` ```markdown ## Bookings Made | What | Where | Date | Confirmation | |------|-------|------|--------------| | | | | | ``` ### Technical Analysis The Skill instructs the agent to collect and persist trip dates, destinations, chi ...[truncated 2561 chars]
Remediation
## Remediation Suggestions 1. Obtain explicit, informed consent before creating persistent memory or saving any user-provided information. 2. Default to session-only processing and make persistent storage opt-in. 3. Minimize stored data. Avoid retaining exact child ages, detailed mobility or health-related information, and exact travel dates unless necessary. 4. Remove the free-form `Confirmation` field, or clearly prohibit storing reservation codes, authentication links, passport details, payment information, credentials, and other secrets. 5. Create the directory and file with owner-only permissions where supported, such as directory mode `0700` and file mode `0600`. 6. Provide commands or documented procedures to view, edit, export, and permanently delete stored memory. 7. Define a retention policy and automatically remove completed or stale trip records after a user-approved period. 8. Inform users whenever existing memory is read or updated rather than reading it silently. 9. If sensitive information must be retained, use an operating-system credential store or appropriately encrypted storage instead of a plaintext Markdown file.
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 (2)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill instructs the agent to create and update files in the user's home directory (~/france/memory.md) without any explicit user-facing notice, consent, or confirmation step. Even though this appears intended for convenience in a travel-planning context, silent persistence of user travel details and constraints creates privacy and integrity risks because the agent may store personal preferences or sensitive trip information unexpectedly.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The template is explicitly framed as 'France Trip Memory,' which hard-codes a country-specific locale rather than offering a user-selectable destination or noting that the template is region-specific by design. Under the policy rule for language/locale constraints, this can be treated as a natural-language locale restriction without opt-in.

Static analysis

No suspicious patterns detected.