other
Warning
- Location
- SKILL.md:96
- Finding
- Ethereum Wallet Address Transmitted to Third-Party RPC Providers Despite Contrary Privacy Claim<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 96-104 and line 162 **Vulnerability Type**: Privacy disclosure inconsistency **Risk Level**: Medium ### Vulnerable Code ```python def get_eth_balance(address: str) -> float: payload = {"jsonrpc":"2.0","method":"eth_getBalance", "params":[address,"latest"],"id":1} for url in ["https://eth.llamarpc.com", "https://rpc.ankr.com/eth"]: try: r = requests.post(url, json=payload, timeout=8) ``` The documented privacy claim states: ```text - Does not store or transmit your wallet address to any third party ``` ### Technical Analysis The `get_eth_balance` function inserts the user's Ethereum wallet address into a JSON-RPC request and sends it to `eth.llamarpc.com` or `rpc.ankr.com`. Both endpoints are externally operated third-party services. This behavior directly contradicts the documented claim that the skill does not transmit the wallet address to third parties. Although an Ethereum address is public on-chain, associating it with request metadata such as an IP address, request timing, user agent, or service account can reveal additional information about its owner. The fallback logic may expose the same address to more than one provider if the first provider fails. The documentation does not disclose these recipients, explain their data-handling policies, or request informed consent. ### Attack Path 1. A user configures their Ethereum wallet address for optional balance tracking. 2. The user or a scheduled agent executes the supplied report code. 3. `get_eth_balance` places the address in an `eth_getBalance` JSON-RPC request. 4. The request is sent to `https://eth.llamarpc.com`. 5. If that request fails or does not produce a usable result, the address may also be sent to `https://rpc.ankr.com/eth`. 6. The RPC provider can log the wallet address together with network and timing metadata. 7. The provider, a compromised provider, or a party with ...[truncated 587 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove the inaccurate statement that wallet addresses are never transmitted to third parties. 2. Clearly identify every default RPC provider and explain that the wallet address and request metadata are disclosed to those providers. 3. Require explicit user consent before enabling wallet tracking. 4. Allow users to configure their own trusted RPC endpoint, including a locally operated Ethereum node. 5. Disable automatic fallback to additional providers unless the user has approved each provider. 6. Provide a local-only mode that omits Ethereum balance tracking. 7. Document provider privacy policies, expected logging behavior, and data-retention implications. 8. Minimize identifying request metadata where possible and avoid adding unnecessary authentication or tracking headers. ]]>
