Back to skill

Security audit

Decker + Hyperliquid

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent trading skill, but it documents high-impact financial actions and sensitive key handling in ways users should review carefully before installing.

Install only if you understand that this skill can guide Decker/Hyperliquid trading actions and may involve giving Decker a trade-capable private key. Use a dedicated low-risk API wallet, confirm every order manually, avoid putting secrets in URLs or logs, and check whether Decker provides key storage, revocation, replay protection, and order limits.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:32
Finding
Authentication Secret Exposed in a State-Changing GET Request<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 32 **Vulnerability Type**: Secret exposure through URL query parameters and unsafe use of GET for a financial operation **Risk Level**: High ### Vulnerable Code Snippet ```http GET {DECKER_API_URL}/api/v1/link/slack/order-request?slack_user_id={sender_id}&symbol=BTC&side=buy&quantity=0.01&exchange_id=hyperliquid&openclaw_secret={OPENCLAW_SECRET} ``` ### Technical Analysis The documented order workflow places `OPENCLAW_SECRET` directly in the URL query string. URLs may be recorded by HTTP servers, reverse proxies, browser history, monitoring platforms, analytics systems, debugging tools, and network-security products. Consequently, personnel or systems with access to these records may gain access to the secret. The endpoint also uses the HTTP `GET` method for an operation that appears to create a financial order. GET requests are expected to be safe and idempotent, but intermediaries, link scanners, prefetch mechanisms, crawlers, or users may repeat them. If the server does not implement independent replay and confirmation protections, repeating the URL could repeat the order. ### Attack Path 1. A legitimate order request containing `openclaw_secret` is sent to the Decker API. 2. The full URL is retained in an access log, proxy log, browser record, diagnostic trace, monitoring platform, or support artifact. 3. An attacker or unauthorized operator obtains access to that record. 4. The attacker extracts `OPENCLAW_SECRET` and the complete order URL. 5. The attacker replays the request or modifies parameters such as `symbol`, `side`, `quantity`, or `exchange_id`. 6. If server-side authorization, expiration, confirmation, and replay controls are insufficient, the attacker can invoke the integration or submit unauthorized financial orders. ### Impact Assessment Successful exploitation may disclose an authentication credential and permit actions available to the affected OpenClaw-to-Decker ...[truncated 419 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace the state-changing GET endpoint with an HTTPS `POST` endpoint. 2. Place order parameters in a JSON request body rather than the URL. 3. Transmit credentials through an `Authorization` header, never through query parameters. 4. Use short-lived, narrowly scoped access tokens instead of a reusable integration secret. 5. Add a unique nonce, timestamp, expiration time, and server-enforced replay prevention. 6. Require an idempotency key so repeated requests cannot unintentionally create duplicate orders. 7. Bind authorization to the intended user, exchange, operation, and maximum permitted trade value. 8. Require explicit user confirmation for the final normalized trade parameters before submission. 9. Redact query strings, authorization headers, and credentials from application, proxy, monitoring, and support logs. 10. Rotate any secret that may already have appeared in URLs or retained logs. 11. Prevent caching and reject order creation through GET at the server level. ]]>

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:45
Finding
External Service Receives a Transaction-Signing Private Key<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 45-53 **Vulnerability Type**: Excessive credential exposure and third-party custody of a trading private key **Risk Level**: High ### Vulnerable Code Snippet The following is an English translation of the complete affected instruction block: ```markdown ## Hyperliquid Key Setup (Agent Guidance) 1. **Create a dedicated API wallet**: Visit https://app.hyperliquid.xyz/API and select "Create API Wallet" 2. **Back up the private key**: Securely store the private key displayed during creation, beginning with 0x; it is displayed only once 3. **Decker configuration**: Log in, then go to Settings → Exchange API Settings → Hyperliquid - API Key: Wallet address (0x..., 42 characters) — optional - Secret Key: Private key (0x..., at least 64 characters) — **required** 4. **Select exchange**: Set exchange_preference to "Hyperliquid" and save 5. **Place order**: "HL BTC 0.01 buy" through Slack or Telegram ``` ### Technical Analysis The workflow requires the user to provide a Hyperliquid API-wallet private key to Decker. A private key confers transaction-signing authority and must be treated as a high-value credential. Although the document states that the API wallet cannot withdraw funds and recommends separating it from the main wallet, unauthorized possession or use of the key may still allow an attacker to execute trades. The audited file does not document client-side signing, hardware-backed isolation, encryption at rest, restricted administrative access, credential rotation, auditable use, or protection against the key entering logs and support systems. The absence of these documented controls increases the custody risk created by transmitting the key to an external service. ### Attack Path 1. A user creates a Hyperliquid API wallet and enters its private key into Decker as instructed. 2. Decker receives or stores the private key so that it can sign trading operations. 3. An attacker ...[truncated 1335 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Prefer client-side or locally isolated transaction signing so the private key never leaves the user's controlled environment. 2. Where supported, use revocable delegated authorization with narrowly scoped trading permissions instead of transmitting a private key. 3. Restrict authorization by account, exchange, permitted assets, order type, maximum position size, leverage, daily notional value, and expiration time. 4. Store any unavoidable signing key in a dedicated secrets manager or hardware-backed key-management system. 5. Encrypt credentials in transit and at rest, and prevent application operators from retrieving plaintext key material. 6. Ensure private keys never enter chat messages, URLs, application logs, analytics, crash reports, monitoring traces, or support tickets. 7. Require explicit informed consent explaining that a trade-only key can still cause financial losses even if withdrawals are disabled. 8. Use a dedicated low-balance API wallet and enforce conservative exchange-side limits. 9. Provide immediate key revocation and rotation procedures, and rotate the key after any suspected exposure. 10. Require multi-factor authentication and reauthentication for credential registration, replacement, and sensitive trading actions. 11. Maintain tamper-resistant audit logs for every use of delegated signing authority and alert users about anomalous orders. 12. Document the service's key-custody architecture, retention policy, encryption controls, administrative-access model, and incident-response process. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Missing User Warnings

High
Confidence
98% confidence
Finding
The documentation shows a GET request that places a secret value (`openclaw_secret`) directly in the URL query string. Secrets in URLs are commonly exposed through logs, browser history, intermediary proxies, monitoring tools, and referrer leakage, making credential compromise more likely; in this context, compromise could enable unauthorized order-request generation against a trading workflow.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The trigger list includes broad terms such as "DEX," "영구선물," and generic price/position phrases that can match ordinary crypto discussion, causing the trading skill to activate outside clear user intent. In a skill capable of facilitating order flows, over-broad invocation increases the chance of inappropriate tool routing and accidental progression toward sensitive trading actions.

Skill Enumeration

Medium
Category
Agent Snooping
Content
## 참고

- 메인 decker 스킬: `docs/openclaw_skills/decker/SKILL.md`
- Hyperliquid: 탈중앙 영구선물 DEX
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Static analysis

No suspicious patterns detected.