T09 · Insecure Skill Coding Practices
Note
- Location
- world-state.json:1
- Finding
- Plaintext Storage of Environment and Agent Profiling Data<![CDATA[ ## Vulnerability Details **File Location**: `world-state.json`, lines 1-39 **Vulnerability Type**: Plaintext sensitive operational data storage **Risk Level**: Low ### Complete Vulnerable Code ```json { "user": { "present": true, "satisfaction": "unknown", "intent": "unknown" }, "environment": { "network": "connected", "os": "Windows 11", "tools": [ "browser", "desktop", "exec", "message", "canvas" ], "resources": { "cpu": 50, "memory": 50, "disk": 50 } }, "temporal": { "timeOfDay": "22:15:29.1098515", "dayOfWeek": "Thursday", "sessionLength": "ongoing" }, "timestamp": "2026-02-26T22:34:17.5161916+02:00", "agent": { "confidence": 0.85, "goals": [ "income", "agi" ], "uptime": "70+ hours", "identity": "Clawdia", "capabilities": 21, "lastAction": "Action succeeded: run_evolution_cycle works as expected" } } ``` The corresponding collection behavior is documented in `SKILL.md`, lines 116-123: ```markdown ### 1. Environment State Tracking - Monitor current system state (50+ variables) - Track changes over time (unlimited history) - Maintain state history (with decay) - Detect anomalies (automatic) **Performance:** Tracks 50+ state variables in real-time ``` ### Technical Analysis The project persists an operational profile containing the operating system, network status, available tools, resource usage, user state, agent identity, goals, capabilities, uptime, and recent activity in an unprotected JSON file. Several of these fields are not inherently secret in isolation, but their aggregation provides useful reconnaissance about the host and agent. No encryption, field-level redaction, access-control enforcement, retention enforcement, or consent mechanism is visible in the audited project. The documentation additionally describes continuous tracking and extensive history collection, increasing the ...[truncated 1532 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Apply data minimization and retain only fields required for a specific prediction or simulation. 2. Exclude agent identity, goals, tool inventory, uptime, and recent actions from persistent storage by default. 3. Require explicit user approval before collecting user intent or behavioral information. 4. Store transient resource data in memory rather than on disk where possible. 5. Define and enforce a short, bounded retention period instead of relying only on documented decay behavior. 6. Apply restrictive filesystem permissions so only the owning process or account can read and modify state files. 7. Encrypt persisted state when the project operates in shared or multi-user environments. 8. Add schema-level allowlists and redaction to prevent new sensitive fields from being persisted accidentally. 9. Provide a documented deletion mechanism and ensure backups and diagnostic exports follow the same retention policy. ]]>
