T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:27- Finding
Global Credential Declaration Violates the Principle of Least Privilege
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a disclosed crypto trading helper, but it asks for broad exchange credentials and raw wallet private keys globally, creating avoidable financial risk even for read-only use.
Install only if you intend to use live crypto trading features. Prefer separating read-only analytics from execution, provide only the one provider credential needed for a specific task, use withdrawal-disabled trade-only exchange keys with IP allowlisting, and never use a primary or well-funded wallet private key in this skill.
SKILL.md:27Global Credential Declaration Violates the Principle of Least Privilege
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
⚪ Config: Safe to commit to .env.example as placeholder values
🟡 Sensitive: Must be in .env (gitignored), contains API keys or RPC endpoints with keys
🔴 Secret: Must NEVER appear in logs, code, or git history
🔴 Critical: Private keys — highest security; compromise = total fund loss
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
⚪ Config: Safe to commit to .env.example as placeholder values
🟡 Sensitive: Must be in .env (gitignored), contains API keys or RPC endpoints with keys
🔴 Secret: Must NEVER appear in logs, code, or git history
🔴 Critical: Private keys — highest security; compromise = total fund loss
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
⚪ Config: Safe to commit to .env.example as placeholder values
🟡 Sensitive: Must be in .env (gitignored), contains API keys or RPC endpoints with keys
🔴 Secret: Must NEVER appear in logs, code, or git history
🔴 Critical: Private keys — highest security; compromise = total fund loss
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
⚪ Config: Safe to commit to .env.example as placeholder values
🟡 Sensitive: Must be in .env (gitignored), contains API keys or RPC endpoints with keys
🔴 Secret: Must NEVER appear in logs, code, or git history
🔴 Critical: Private keys — highest security; compromise = total fund loss
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
⚪ Config: Safe to commit to .env.example as placeholder values
🟡 Sensitive: Must be in .env (gitignored), contains API keys or RPC endpoints with keys
🔴 Secret: Must NEVER appear in logs, code, or git history
🔴 Critical: Private keys — highest security; compromise = total fund loss
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
⚪ Config: Safe to commit to .env.example as placeholder values
🟡 Sensitive: Must be in .env (gitignored), contains API keys or RPC endpoints with keys
🔴 Secret: Must NEVER appear in logs, code, or git history
🔴 Critical: Private keys — highest security; compromise = total fund loss
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
⚪ Config: Safe to commit to .env.example as placeholder values
🟡 Sensitive: Must be in .env (gitignored), contains API keys or RPC endpoints with keys
🔴 Secret: Must NEVER appear in logs, code, or git history
🔴 Critical: Private keys — highest security; compromise = total fund loss
The trigger phrases are extremely broad and span discovery, analytics, trading, broadcasting, and meme/speculative workflows. In a user-invocable skill that can access exchange APIs and signing keys, ambiguous triggers increase the chance of accidental invocation or misuse for sensitive financial actions, even if the metadata says auto-triggering is disabled.
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.
| API | Method | Path | Purpose |
| -------------------- | ------ | ------------------------------------------------------------------------- | ----------------------------------------- |
| OKX Search | GET | /api/v6/dex/market/token/search?chains=&search= | Search by name/symbol/address |
| OKX Ranking | GET | /api/v6/dex/market/token/toplist?chains=&sortBy={2\|5\|6}&timeFrame={1-4} | Rank by change/volume/mcap |
| OKX Basic Info | POST | /api/v6/dex/market/token/basic-info | Batch metadata |
| OKX Holders | GET | /api/v6/dex/market/token/holder?chainIndex=&tokenContractAddress= | Top 20 holder distribution |
| Binance Search | GET | bapi/.../market/token/search?keyword=&chainIds=&orderBy=volume24h | Alternative search source |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
## VII. Domain 5 — DEX Swap Execution
### OKX Aggregator (all GET)
| Endpoint | Purpose |
| ------------------------------------------------------------------------------------------- | -------------------------------- |
| /api/v6/dex/aggregator/quote?chainIndex=&fromTokenAddress=&toTokenAddress=&amount= | Get quote |
| /api/v6/dex/aggregator/approve-transaction?chainIndex=&tokenContractAddress=&approveAmount= | ERC20 approval |
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.
- Bitget: https://www.bitget.com/account/newapi
- Alchemy (RPC): https://dashboard.alchemy.com
→ Ask the user to set it in .env
→ NEVER ask the user to paste secrets into chat
Rule 5: For DEPLOYER_PRIVATE_KEY / SOL_PRIVATE_KEY:
→ Recommend generating locally (cast wallet new, solana-keygen new)
→ For mainnet: use hardware wallet or the project Vault system
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
Before activating this skill with live credentials, verify every item below:
| # | Check | Status |
| --- | ---------------------------------------------------------------------------------------------------------------------------------- | ------ |
| 1 | **Testnet first** — `ENABLE_TESTNET=true` tested successfully before mainnet | ☐ |
| 2 | **Dedicated wallets** — `DEPLOYER_PRIVATE_KEY` / `SOL_PRIVATE_KEY` are fresh wallets with minimal balance, not your primary wallet | ☐ |
The documented endpoint includes targetLanguage=en, which imposes a specific language choice in natural-language behavior. There is no indication here that the user can choose another language or that English is a justified fixed requirement.