T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:107- Finding
Shared Financial Records Lack a Documented Authorization Boundary
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 107-118
Vulnerability Type: Missing authorization controls for shared financial data
Risk Level: MediumRelevant Code Snippet:
text ~/.openclaw/workspace/shared/ledger/user-mapping.jsonjson { "ou_7d82888fe950c222c78c4ba7e7ec9ab7": "\u8bbe\u8ba1\u8671", "ou_2d8827e13291607774e7d518d1b5bfe0": "\u5927\u8138\u9c7c" }text The skill automatically reads sender_id from message metadata and converts it to the recorder name.The same document defines common ledger storage under:
text ~/.openclaw/workspace/shared/ledger/ ├── daily.json ├── social.json └── borrow.jsonTechnical Analysis
All participating users are directed to common JSON files containing household expenses, social payments, loans, and reimbursements. The
sender_idmapping establishes attribution, but the documented workflow does not require an authorization decision before reading, updating, or overwriting shared records.Attribution is not equivalent to access control. A secure design must validate whether the mapped sender is authorized for the requested ledger, record, and operation. The skill does not document rejection of unknown sender IDs, role separation, record ownership checks, or restrictions on cross-user queries and status changes.
The read-modify-write design increases the risk because the agent is instructed to overwrite an entire JSON file after reading it. An unauthorized or mistaken operation could therefore affect records beyond the requesting user's legitimate scope.
Attack Path
- A user who can invoke the skill submits a query for household-wide daily, social, loan, or reimbursement records.
- The skill obtains the user's
sender_idand maps it to a recorder name. - No documented policy verifies that the sender is permitted to read the requested ledger or other family members' records.
- T ...[truncated 889 chars]
- Remediation
View remediation
Remediation Suggestions
- Define an explicit allowlist of permitted sender IDs and reject unknown, missing, or malformed identities before any ledger operation.
- Enforce authorization separately for reads, inserts, edits, deletions, and status updates.
- Associate every record with an immutable owner or household identifier and verify access to that scope for each request.
- Separate ledgers by household or user where full sharing is unnecessary.
- Require elevated authorization and explicit confirmation for cross-user changes, bulk operations, and destructive updates.
- Avoid unrestricted whole-file overwrite operations. Use validated transactional updates, backups, file locking, and atomic replacement.
- Apply restrictive filesystem permissions so unrelated local users and agents cannot access the ledger directory.
- Maintain an audit trail containing the authenticated sender, operation, affected record, timestamp, and previous value.
- Minimize query responses and redact fields that the requester does not need.
