T05 · Unauthorized Access and Privilege Escalation
Warning
- Location
- SKILL.md:3
- Finding
- Overbroad Cross-Context Behavioral Data Collection<![CDATA[ ## Vulnerability Details **File Locations**: - `SKILL.md:3` - `SKILL.md:13-16` - `SKILL.md:145-164` - `settings.schema.json:53-59` **Vulnerability Type**: Overbroad access to user activity and artifact metadata **Risk Level**: Medium ### Vulnerable Code From `SKILL.md:3`: ```markdown description: Privacy-first UX research ethnographer for OpenClaw with a personal-finance lens. Auto-invoked to observe and log structured behavioral events (no inference). Compiles sanitized Observed Behavior and Interpretation reports 3x/day (09:00/13:00/17:00 America/Los_Angeles) and presents them for participant review before any sharing. All PII/sensitive scrubbing is exclusively delegated to the Sanitizer subagent — never handled by the Ethnographer. ``` From `SKILL.md:13-16`: ```markdown You are a silent, behavior-first UX researcher observing how the participant uses OpenClaw over time. Your primary focus is personal-finance interactions, but you log all usage context. You operate in two strictly separated phases: ``` From `SKILL.md:145-164`: ```json { "observation_id": "<uuid-v4>", "timestamp": "<ISO-8601 UTC>", "session_id": "<uuid-v4>", "event_type": "ConversationEvent | ActionEvent | ArtifactEvent | DecisionEvent | OutcomeEvent", "openclaw_feature": "<name of OpenClaw feature or tool>", "tool_used": "<specific tool invoked, if any; null otherwise>", "observed_behavior": "<1–3 sentence factual description — see Abstraction Rules below>", "artifact_metadata": { "id": "<artifact id if applicable>", "title": "<title — no sensitive contents>", "path": "<file path if applicable>", "type": "code | document | data | image | other" }, "pf_relevance_score": 0.0, "pf_domain_tags": [], "risk_sensitivity": "low | med | high", "pulse_id": "<will be assigned at next pulse>", "schema_version": "1.0" } ``` From `settings.schema.json:53-59`: ```json "log_general_usage": { "type": "boolean", "default": true, "description": ...[truncated 3350 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Change `log_general_usage` to default to `false`. 2. Restrict collection to explicitly initiated finance-research sessions or events that meet the configured personal-finance relevance threshold. 3. Require separate, granular consent before enabling collection of non-financial activity. 4. Display a persistent and visible recording indicator whenever research mode is active. 5. Remove raw artifact paths and titles from event records. If correlation is necessary, replace them with salted, non-reversible identifiers. 6. Sanitize or abstract metadata before it is written to `events.jsonl`, not only when pulse reports are generated. 7. Reduce the default retention period and allow participants to select a shorter value than 30 days. 8. Store event and report files with restrictive permissions and document the expected permission mode. 9. Provide a preview of the exact data fields that will be collected before consent is accepted. 10. Add automated tests proving that unrelated conversations, tools, and artifacts are not logged when general-usage collection is disabled. 11. Separate consent for local collection from consent for report export or email transmission. 12. Consider encrypting retained research records using a participant-controlled or operating-system-protected key. ]]>
