Back to skill

Security audit

Goldrush Foundational Api

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a legitimate GoldRush API reference skill, but it needs review because some examples could expose API keys or sensitive wallet information if followed exactly.

Review before installing. Use this skill only when you intend to query GoldRush/Covalent with the supplied wallet identifiers, and treat xPub/yPub/zPub values, approvals, portfolio, and transaction history as sensitive. Prefer the SDK or Authorization header with secrets kept in environment variables or a secret manager; do not place API keys in URLs, prompts, logs, screenshots, or reusable shell commands. For WebSocket or real-time streaming work, use a dedicated streaming skill instead of relying on the mixed guidance here.

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
references/overview.md:219
Finding
API Key Exposure Through URL Query Parameters and Command-Line Arguments<![CDATA[ ## Vulnerability Details **File Location**: `references/overview.md`, lines 219–243 **Vulnerability Type**: Insecure credential handling **Risk Level**: Medium ### Vulnerable Code ```bash curl -X GET https://api.covalenthq.com/v1/eth-mainnet/address/demo.eth/balances_v2/ \ -u YOUR_API_KEY_HERE: \ -H 'Content-Type: application/json' ``` ```bash curl -X GET https://api.covalenthq.com/v1/eth-mainnet/address/demo.eth/balances_v2/ \ -H 'Authorization: Bearer YOUR_API_KEY_HERE' ``` ```bash curl -X GET "https://api.covalenthq.com/v1/eth-mainnet/address/demo.eth/balances_v2/?key=YOUR_API_KEY_HERE" ``` ### Technical Analysis The documentation presents authentication examples that encourage users to substitute a real API key directly into a URL or command-line argument. Placing an API key in the `key` query parameter is particularly unsafe because complete URLs are commonly retained by: - Reverse proxies and HTTP access logs - Application performance monitoring systems - Browser history and bookmarks - Terminal output, shell history, and copied diagnostic reports - Analytics, tracing, and network-observability platforms - Referrer headers in some navigation scenarios Although HTTPS protects the request in transit, it does not prevent the URL from being recorded at either endpoint or by local tooling. The document later discourages query-string authentication, but the actionable example remains available for users and agents to copy. Embedding an API key directly in a `curl` command can also expose it through shell history, terminal session recording, CI job logs, debugging output, and—depending on the operating system and process isolation—process argument inspection. This behavior exceeds minimum necessary credential exposure because the Skill only needs to authenticate requests to the declared GoldRush API; it does not need to place secrets in URLs or durable command history. Related command-line credential examples also appear in: ...[truncated 1496 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the query-parameter authentication example entirely. Do not support or demonstrate URLs containing `?key=...`. 2. Recommend the HTTPS `Authorization: Bearer` header as the sole REST authentication method. 3. Do not encourage users to place literal credentials directly in reusable commands or source files. 4. For application code, load the key at runtime from a protected environment variable or secret manager and ensure it is never committed to source control. 5. For interactive command-line testing, use a protected credential file, secret-manager integration, or non-persistent prompt mechanism that avoids storing the key in shell history. Apply restrictive file permissions where a temporary configuration file is unavoidable. 6. Configure applications, proxies, CI systems, and observability tools to redact: - `Authorization` headers - `key` query parameters - API-key prefixes such as `cqt_` and `ckey_` 7. Add an explicit warning that API keys must not be included in URLs, logs, screenshots, support tickets, or copied terminal output. 8. Rotate any key that has already been used in a query string, committed to source control, or exposed in command history or logs. 9. Update related examples in `SKILL.md` and `references/integration-guide.md` to follow the same protected credential-handling guidance. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (23)

Memory Manipulation

High
Category
Memory Poisoning
Content
false // Disable caching
        );

        // Clear memory and disk cache if needed
        clearCache();
        ```
Confidence
80% confidence
Finding
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The skill is positioned as the default for a very broad set of blockchain-related lookups, which can cause over-selection in contexts where a narrower or more privacy-preserving tool would be more appropriate. This increases the chance that wallet addresses, transaction history, or portfolio data are sent to an external provider when the user did not clearly intend that specific integration.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
This markdown file documents endpoints that retrieve wallet balances, transfers, and HD wallet data, including xPub/yPub/zPub inputs that can expose broad visibility into a user's addresses and holdings. The descriptions present these operations as routine API calls but do not warn users that submitting wallet identifiers may reveal sensitive financial activity and portfolio information to the service.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
This markdown file describes endpoints that retrieve token approvals and cross-chain wallet activity for a supplied wallet address, which can reveal sensitive financial behavior and risk exposure. The documentation provides no user-facing warning about privacy implications or the sensitivity of querying third-party services with wallet addresses.

Missing User Warnings

Medium
Confidence
83% confidence
Finding
This markdown file documents endpoints that retrieve wallet-address transaction histories and optional detailed traces such as internal transfers, state changes, and input data. Although these are read-only API calls, the description does not warn users that querying and handling this data can expose sensitive financial activity and address associations.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# WRONG
http://api.covalenthq.com/v1/...

# CORRECT
https://api.covalenthq.com/v1/...
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Intent-Code Divergence

Medium
Confidence
91% confidence
Finding
The manifest says this skill is for the GoldRush Foundational REST API and explicitly directs real-time streaming/WebSocket use to a different skill, `goldrush-streaming-api`. However, this file documents Streaming API GraphQL/WebSocket authentication behavior as part of the same skill reference, which conflicts with the stated routing and separation of responsibilities.

Intent-Code Divergence

Medium
Confidence
95% confidence
Finding
The document gives conflicting authentication guidance for the Foundational API: elsewhere it requires a Bearer token in the Authorization header, but this example uses curl basic-auth syntax (`-u YOUR_API_KEY_HERE:`). In an agent skill, contradictory auth instructions can cause failed requests, insecure credential handling patterns, or accidental propagation of API keys in the wrong channel.

External Transmission

Medium
Category
Data Exfiltration
Content
| Item | Value |
|------|-------|
| **Base URL** | `https://api.covalenthq.com/v1` |
| **Protocol** | HTTPS (REST) |
| **Authentication** | Bearer token in `Authorization` header |
| **API Key** | Sign up at goldrush.dev/platform (starts with `cqt_` or `ckey_`) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Item | Value |
|------|-------|
| **Base URL** | `https://api.covalenthq.com/v1` |
| **Protocol** | HTTPS (REST) |
| **Authentication** | Bearer token in `Authorization` header |
| **API Key** | Sign up at goldrush.dev/platform (starts with `cqt_` or `ckey_`) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Item | Value |
|------|-------|
| **Base URL** | `https://api.covalenthq.com/v1` |
| **Protocol** | HTTPS (REST) |
| **Authentication** | Bearer token in `Authorization` header |
| **API Key** | Sign up at goldrush.dev/platform (starts with `cqt_` or `ckey_`) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Item | Value |
|------|-------|
| **Base URL** | `https://api.covalenthq.com/v1` |
| **Protocol** | HTTPS (REST) |
| **Authentication** | Bearer token in `Authorization` header |
| **API Key** | Sign up at goldrush.dev/platform (starts with `cqt_` or `ckey_`) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Item | Value |
|------|-------|
| **Base URL** | `https://api.covalenthq.com/v1` |
| **Protocol** | HTTPS (REST) |
| **Authentication** | Bearer token in `Authorization` header |
| **API Key** | Sign up at goldrush.dev/platform (starts with `cqt_` or `ckey_`) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Item | Value |
|------|-------|
| **Base URL** | `https://api.covalenthq.com/v1` |
| **Protocol** | HTTPS (REST) |
| **Authentication** | Bearer token in `Authorization` header |
| **API Key** | Sign up at goldrush.dev/platform (starts with `cqt_` or `ckey_`) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Item | Value |
|------|-------|
| **Base URL** | `https://api.covalenthq.com/v1` |
| **Protocol** | HTTPS (REST) |
| **Authentication** | Bearer token in `Authorization` header |
| **API Key** | Sign up at goldrush.dev/platform (starts with `cqt_` or `ckey_`) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Item | Value |
|------|-------|
| **Base URL** | `https://api.covalenthq.com/v1` |
| **Protocol** | HTTPS (REST) |
| **Authentication** | Bearer token in `Authorization` header |
| **API Key** | Sign up at goldrush.dev/platform (starts with `cqt_` or `ckey_`) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Item | Value |
|------|-------|
| **Base URL** | `https://api.covalenthq.com/v1` |
| **Protocol** | HTTPS (REST) |
| **Authentication** | Bearer token in `Authorization` header |
| **API Key** | Sign up at goldrush.dev/platform (starts with `cqt_` or `ckey_`) |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The documentation explicitly recommends an authentication method that places the API key in the URL query string. Query parameters are commonly logged by browsers, proxies, load balancers, observability tools, shell history, and server access logs, which can expose the credential beyond the intended recipient. In this skill’s context, which teaches developers how to authenticate to a production blockchain data API, that guidance increases the chance of widespread insecure implementation.

External Transmission

Medium
Category
Data Exfiltration
Content
Include your API key as the `key` query parameter in the request URL.

```bash
curl -X GET "https://api.covalenthq.com/v1/eth-mainnet/address/demo.eth/balances_v2/?key=YOUR_API_KEY_HERE"
```

## Error Handling
Confidence
95% confidence
Finding
Although the external transmission is to the legitimate API, this example embeds the API key directly in the request URL. URLs are prone to exposure through logs, analytics, browser history, reverse proxies, and monitoring systems, turning a normal outbound request into a credential-leak risk. In a developer-facing authentication guide, this is especially dangerous because users may copy the insecure pattern into production systems.

Intent-Code Divergence

Medium
Confidence
96% confidence
Finding
The manifest explicitly says this skill is for REST API access and that real-time streaming or WebSocket push data should use a different skill, goldrush-streaming-api. However, the documentation section 'Wallet Activity Stream' provides WebSocket connection and subscription troubleshooting, which directly contradicts the stated skill boundary and suggests this skill covers streaming behavior.

Missing User Warnings

Low
Confidence
82% confidence
Finding
The description does not warn that wallet addresses, ENS names, approvals, holdings, and cross-chain activity may be transmitted to a third-party API and may reveal sensitive financial or behavioral information. In a skill specifically built for on-chain lookups, omission of this notice raises privacy and consent concerns rather than introducing direct code execution risk.

Missing User Warnings

Low
Confidence
82% confidence
Finding
The document repeatedly shows API key usage patterns and sample credentials without an explicit warning against hardcoding, storing in prompts, or exposing them in logs. In an LLM-agent context, this omission increases the chance that downstream implementations embed secrets in code, transcripts, or tool calls where they can be leaked.

Description-Behavior Mismatch

Low
Confidence
85% confidence
Finding
The manifest frames this skill as the default REST API for on-chain data lookups and says users needing real-time streaming or WebSocket push data should use a different skill. This file nevertheless includes concrete WebSocket client configuration and reconnection guidance, which goes beyond the described REST-only purpose.

Static analysis

Detected: suspicious.prompt_injection_instructions

Prompt-injection style instruction pattern detected.

Warn
Code
suspicious.prompt_injection_instructions
Location
references/integration-guide.md:493