T09 · Insecure Skill Coding Practices
- Location
SKILL.md:399- Finding
Persistent Storage of Sensitive Fraud-Victim Information Without Defined Safeguards
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 399-425
Vulnerability Type: Sensitive data persistence without defined protection or retention controls
Risk Level: MediumVulnerable Code
yaml ## Agent State Persist across sessions: ```yaml defense: scam_encountered: type: null date_discovered: null date_occurred: null amount_lost: null payment_method: null personal_info_exposed: [] scammer_contact_info: [] evidence_saved: false recovery_actions: accounts_secured: false credit_frozen: false ftc_reported: false ftc_reference_number: null ic3_reported: false identity_theft_report_filed: false police_report_filed: false police_report_number: null platform_reported: false financial_institutions_contacted: [] fraudulent_accounts_closed: [] prevention: family_safe_word_set: false mfa_enabled: false password_manager_in_use: false credit_monitoring_active: false irs_pin_set: falseTechnical Analysis
The skill explicitly instructs the agent to persist incident state across sessions. The proposed state includes financial-loss amounts, payment methods, categories of exposed personal information, scammer contact information, financial institutions contacted, fraudulent accounts, and government or police report identifiers.
The skill does not define:
- Explicit user consent before persistence
- Data minimization requirements
- Encryption at rest
- Access-control or session-isolation requirements
- Automatic expiration or retention limits
- User-controlled inspection and deletion
- Redaction of report numbers and other case identifiers
This creates an insecure data-handling design. Fraud victims are particularly sensitive users, and the retained fields could reveal their financial status, identity exposure, institutions used, and active ...[truncated 1625 chars]
- Remediation
View remediation
Remediation Suggestions
- Make all incident processing ephemeral by default.
- Require explicit, informed opt-in before retaining any information across sessions.
- Persist only minimal workflow status where necessary, such as non-sensitive completion booleans.
- Do not persist loss amounts, payment methods, scammer contact details, institution names, fraudulent-account details, or government and police report numbers.
- Apply field-level encryption to any sensitive data that must be retained.
- Restrict access to the originating user and case through strong tenant and session isolation.
- Define a short automatic expiration period and provide immediate user-controlled deletion.
- Prevent sensitive state from appearing in application logs, telemetry, analytics, prompts, or unencrypted backups.
- Display exactly what will be stored and obtain separate consent before writing persistent state.
- Add a documented retention policy and security requirements for any runtime implementing the state schema.
