T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/skills.ts:19- Finding
Overprivileged browser login token used instead of a scoped API credential
- Content
View full analysis
Vulnerability Details
File Location:
scripts/skills.ts:19-24, 54, 108-112, 150-154, 180-184, 231-235, 292-295, 423-427
Vulnerability Type:T05: Unauthorized Access and Privilege Escalation
Risk Level: MediumVulnerable Code
ts const { ieasysellToken, company, product, market = "global", syncInterval = 5 } = config;ts const res = await fetch("https://crm.ieasysell.com/client/account/info", { method: "GET", headers: { "Authorization": `Bearer ${token}`, "Content-Type": "application/json" } });The same bearer token is also used for digital-human creation, listing, modification, and visitor-record retrieval.
Technical Analysis
The implementation asks the user to retrieve an interactive Ieasysell login token from browser Local Storage and supplies that token as a bearer credential to multiple CRM endpoints. This differs from
SKILL.md:21andclaw.json:16-20, which describe a dedicated Ieasysell API key.An interactive login token may represent the user's broader authenticated session and may authorize more account operations than this Skill requires. The minimum necessary permissions are limited to tenant-information lookup, management of the relevant digital human, and read access to associated visitor records.
No evidence indicates that the token is sent to an unrelated domain: all observed requests use HTTPS and target
crm.ieasysell.com. The risk arises from the unnecessarily broad credential placed in Skill configuration and runtime memory rather than malicious third-party exfiltration.Attack Path
- The user signs in to Ieasysell and extracts the login token from browser Local Storage.
- The user saves that token in the Skill configuration.
- The Skill repeatedly retains and uses the token for authenticated CRM requests.
- An attacker who obtains access to OpenClaw configuration, process memory, debugging output, or an insufficientl ...[truncated 849 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace the browser login token with a dedicated, revocable API key or OAuth token.
- Restrict the credential to the exact required capabilities:
- Read tenant identity.
- Create, list, and update only the relevant digital-human resources.
- Read visitor records associated with that digital human.
- Do not instruct users to extract credentials from browser Local Storage.
- Store the credential through the platform's protected secret manager rather than ordinary Skill configuration or persistent memory.
- Use short-lived access tokens with rotation and independent revocation.
- Ensure tokens are redacted from logs, exceptions, notifications, telemetry, and diagnostic output.
- Align
SKILL.md,claw.json, and the implementation so they consistently specify the same scoped credential type. - On the server, validate tenant and digital-human ownership for every endpoint rather than relying solely on identifiers supplied by the client.
