Back to skill

Security audit

crypto-wallet-explainer

Security checks for vulnerabilities and agentic risk

Overview

This skill is a read-only crypto wallet lookup helper that uses disclosed third-party APIs and does not request keys, signing, transactions, persistence, or local system access.

Before using this skill, understand that public wallet addresses and lookup parameters may be sent to the named dRPC and CoinGecko proxy services. Do not provide seed phrases, private keys, signatures, wallet connection approvals, or transaction approvals; this skill is only appropriate for read-only informational wallet analysis.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:9
Finding
Sensitive Wallet Context Transmitted to a Third-Party Service Without Privacy-Specific Approval## Vulnerability Details **File Location**: `SKILL.md`, lines 9–17 **Vulnerability Type**: Privacy-sensitive data disclosure through an external API **Risk Level**: Medium **Affected code:** ```markdown 1. Extract the public address, chain scope, desired balances/history/NFT view, pricing currency, and detail. Treat the address and its association with the user as sensitive context: minimize repetition and do not persist or disclose it. Never request seed phrases, private keys, signing, wallet connection, or transaction approval; never transact. **Done when:** the task is strictly read-only. 2. Read current documentation at `https://airnode-drpc.fly.dev/` and `https://airnode-coingecko.fly.dev/`. Use only documented POST operations and parameters; GET only reads documentation. **Done when:** schemas, costs, signer addresses, and verification rules are known. 3. Use the narrowest dRPC operation: `walletBalances`, `chainWalletBalances`, `nonEvmWalletBalances`, `netWorthHistory`, `chainNetWorthHistory`, `transactionHistory`, `walletNfts`, `nonEvmWalletNfts`, `nftCollections`, or `nftMetadata`. Use `supportedChains` when chain resolution is necessary. Keep limits conservative and never silently paginate or broaden chain scope. **Done when:** the minimum wallet call is selected. 4. Use CoinGecko `simplePrice` for current prices with explicit CoinGecko IDs and currencies; use `coinsMarkets` only for richer ranked data. Resolve ambiguous symbols rather than guessing. **Done when:** only required pricing calls are selected. 5. Before any paid, credentialed, quota-consuming, or uncertain-cost POST, state the cost and scope and obtain explicit approval. POST `{"operation":"<operation>","parameters":{...}}` with an HTTP-capable tool. Retry once for corrected schema or transient failure. **Done when:** attested results or an exact blocker is received. ``` ### Technical Analysis The skill explicitly treats the relationship between a wal ...[truncated 2505 chars]
Remediation
## Remediation Suggestions 1. Require explicit, informed approval before transmitting any wallet address or related lookup parameters to an external service, regardless of request cost. 2. Identify the external recipient and explain that the service may observe the wallet address, request timing, and associated network metadata. 3. Replace the absolute “do not disclose” statement with precise language distinguishing prohibited disclosure from the user-approved API transmission required to perform the lookup. 4. Show the exact address, chain scope, operation, and destination that will be submitted before requesting approval. 5. Minimize transmitted data by using the narrowest operation, limiting chain coverage, avoiding unnecessary pagination, and excluding unrelated request metadata. 6. Document applicable retention, logging, and privacy controls for the external service. If those controls cannot be established, disclose that limitation to the user. 7. Where feasible, support a user-selected or locally operated endpoint to reduce third-party correlation risk. 8. Continue prohibiting collection or transmission of seed phrases, private keys, signatures, wallet connection approvals, and transaction authorizations.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep

Static analysis

No suspicious patterns detected.