T09 · Insecure Skill Coding Practices
- Location
SKILL.md:16- Finding
Persistent Plaintext Storage of Sensitive Photo and Biometric Metadata
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 16-18, 25, and 39-41
Vulnerability Type: Sensitive data stored persistently without defined access controls or retention safeguards
Risk Level: MediumVulnerable Code Snippet:
markdown - Create `.photo-index/` in library root with one JSON sidecar per photo - Sidecar filename: `{original-hash}.json` — survives renames and moves - Index fields: `hash`, `path`, `date_taken`, `camera`, `gps`, `description`, `tags`, `indexed_at`markdown - Cache vision results permanently in sidecar JSON — never re-analyze same photomarkdown - **By location**: Reverse geocode GPS once, store city/country in sidecar for text search - **By person**: If user identifies someone once ("that's Maria"), tag all similar faces in indexTechnical Analysis
The Skill instructs the Agent to create persistent JSON sidecars containing photo paths, GPS information, reverse-geocoded locations, vision-generated descriptions, tags, and inferred associations between identities and similar faces. These records are stored permanently inside the photo library.
No instructions require restrictive filesystem permissions, encryption, explicit consent for face association, reduced-precision location storage, retention limits, or a secure index-deletion workflow. Consequently, a searchable collection of sensitive personal information can remain available after the immediate task has completed.
Face associations and location histories are particularly sensitive because they can reveal identities, residences, travel patterns, relationships, and activities. The content hash-based filename does not protect the sidecar contents and should not be treated as encryption or access control.
Attack Path
- A user asks the Agent to index or search a local photo library.
- The Agent creates
.photo-index/and writes one plaintext JSON sidecar per photo. - EXIF ...[truncated 1108 chars]
- Remediation
View remediation
Remediation Suggestions
- Make GPS extraction, reverse geocoding, and face association explicit opt-in operations.
- Do not persist exact GPS coordinates by default; retain only user-approved, reduced-precision location data when needed.
- Require explicit consent before associating a person's name with similar faces.
- Define retention limits and provide commands to inspect, export, and securely delete the complete index.
- Create
.photo-index/and its files with permissions restricted to the library owner. - Encrypt sensitive index fields or the entire index when the environment provides a suitable user-controlled key store.
- Warn users that sidecars may be included in cloud synchronization, NAS replication, and backups.
- Exclude sensitive fields from logs, progress messages, manifests, and diagnostic output.
- Allow users to disable permanent vision caching or retain only non-sensitive derived metadata.
