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

Content
View full analysis

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
View 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
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.