T09 · Insecure Skill Coding Practices
- Location
SKILL.md:52- Finding
Credential-Bearing Configuration Is Exposed to the Agent
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is coherent for OKX account management, but it handles high-impact financial access with credential and install-supply-chain concerns users should review before installing.
Install only if you are comfortable giving the OKX CLI access to sensitive account data and limited account-mutation authority. Prefer demo mode first, use least-privilege OKX API keys with withdrawals disabled and IP restrictions where possible, verify the npm package version matches 1.3.7, and avoid exposing raw config output that may contain secrets.
SKILL.md:52Credential-Bearing Configuration Is Exposed to the Agent
SKILL.md:24Unpinned Global npm Installation Creates a Supply-Chain Risk
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
### Step 2: Run read commands immediately — confirm profile (Step 0) then writes
**Read commands** (1–10): run immediately, no confirmation needed.
- `ccy` filter: use currency symbol like `USDT`, `BTC`, `ETH`
- `--instType` for fees/positions: `SPOT`, `SWAP`, `FUTURES`, `OPTION`
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
## Global Notes
- All write commands require valid credentials (OAuth session or API key in `~/.okx/config.toml`)
- Auth method and trading mode are determined in "Credential & Profile Check"; see that section for parameter rules
- Every command result includes a `[mode: live]` or `[mode: demo]` tag for audit reference
- `--json` returns the raw OKX API v5 response by default. Add `--env` to wrap the output as `{"env": "<live|demo>", "profile": "<name>", "data": <response>}`
No suspicious patterns detected.