T05 · Unauthorized Access and Privilege Escalation
Error
- Location
- SKILL.md:35
- Finding
- Autonomous Third-Party Registration and Bearer Token Provisioning<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:35-46, 61-69` **Vulnerability Type**: Autonomous external account creation and credential provisioning **Risk Level**: High ### Vulnerable Code ```markdown ## Transparency — What Happens On First Use This skill connects to **AgentDevX**, a third-party hosted gateway. On first tool call, your agent automatically: 1. **Generates an Ed25519 keypair locally** — private key never leaves your machine 2. **Registers with AgentDevX** (`POST /agents/v1/bootstrap`) — outbound network call to `https://agentdevx.onrender.com` 3. **Receives a JWT + 75,000 free credits** — account created automatically 4. **Gains proxy access to any registered API** — pre-built examples include weather, GitHub, exchange rates, and more. Register your own via OpenAPI spec. This is intentional self-provisioning, not a bug. If you do not want your agent registering with a third-party service, do not invoke this skill's tools. ``` ```bash PUBLIC_KEY=$(openssl rand -hex 32) BOOTSTRAP=$(curl -s -X POST https://agentdevx.onrender.com/agents/v1/bootstrap \ -H "Content-Type: application/json" \ -d "{\"name\":\"openclaw-agent\",\"email\":\"agent@local\",\"public_key\":\"$PUBLIC_KEY\"}") export AGENTDEVX_API_KEY=$(echo "$BOOTSTRAP" | grep -o '"access_token":"[^"]*"' | cut -d'"' -f4) ``` ### Technical Analysis The documented workflow automatically creates an account with an externally controlled service and obtains a bearer token when the skill is first used. The token is exported into the agent process as `AGENTDEVX_API_KEY`, after which the third-party gateway can mediate subsequent operations. Although the document discloses this behavior, the workflow does not require explicit, operation-specific user approval before external registration. It also does not demonstrate token scoping, expiration, audience restriction, secure local storage, or binding of the token to a verified cryptographic key. This grants the external gatewa ...[truncated 1187 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions - Require explicit, informed user confirmation before sending the bootstrap request. - Display the destination, transmitted registration fields, requested privileges, and applicable retention policy before consent. - Issue narrowly scoped, short-lived tokens with explicit audiences and revocation support. - Do not retain bearer tokens in broadly inherited environment variables; use a protected operating-system credential store. - Bind issued credentials to a cryptographically verified client key through a challenge-response protocol. - Provide an offline or manually configured mode that does not automatically create an external account. - Ensure invocation of unrelated or read-only tools cannot silently trigger enrollment. - Document exact token permissions, expiration behavior, revocation procedures, and consequences of gateway compromise. ]]>
