T05 · Unauthorized Access and Privilege Escalation
Error
- Location
- SKILL.md:39
- Finding
- Unauthenticated Endpoints Expose Restricted Landlord and Financial Records<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 39–82 **Vulnerability Type**: Missing server-side authentication and authorization **Risk Level**: High ### Vulnerable Code ```markdown ## Access Control Lease terms, rent amounts, and landlord info are sensitive business data. Restrict to admin or manager roles only. **Role mapping:** Check the sender's role in `~/.openclaw/farmos-users.json`. If the user is not admin or manager, tell them they don't have access to land portfolio data. ## API Base http://100.102.77.110:8009 ## Integration Endpoints (No Auth Required) — READ OPERATIONS ONLY **IMPORTANT: Use auth endpoints for WRITE operations (mark-paid, renewals). Use integration `/all` endpoints for READ operations (listing payments, leases, landlords).** ### Payments (FULL — use this, not dashboard) GET /api/integration/payments/all - Returns ALL payments with full details — parcel names, landlord names, overdue status ### Leases (FULL) GET /api/integration/leases/all - Returns ALL leases with landlord contact info, rent terms, expiration status ### Landlords (FULL) GET /api/integration/landlords/all - Returns ALL landlords with contact info, active lease count, total acres, total rent ``` ### Technical Analysis The Skill explicitly classifies lease terms, rent amounts, landlord information, and payment records as sensitive and restricted to administrators or managers. Nevertheless, it directs clients to read those records from endpoints requiring no authentication. Checking the sender's role in `~/.openclaw/farmos-users.json` is only an agent-side policy check. It is not an effective authorization boundary because a caller with network access can bypass the agent and request the integration endpoints directly. The server therefore cannot establish the caller's identity or verify that the caller has an authorized role. ### Attack Path 1. An attacker obtains network reachability to `100.102.77.110:8009`. 2. The attacker sen ...[truncated 1080 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Require authentication for every endpoint returning lease, landlord, payment, parcel, or financial information. 2. Enforce admin-or-manager authorization on the server for each request; do not rely on the agent or local role-mapping file as the security boundary. 3. Apply deny-by-default access control and return `401 Unauthorized` for missing or invalid credentials and `403 Forbidden` for insufficient roles. 4. Use narrowly scoped claims such as `land-portfolio:read` rather than relying solely on broad role names. 5. Validate token issuer, audience, expiration, signature, and required scopes server-side. 6. Minimize returned fields according to the caller's authorization and business need. 7. Add audit logging for access to landlord contact details and financial records. 8. Add automated tests proving that anonymous and unauthorized requests cannot access any sensitive integration endpoint. ]]>
