Back to skill

Security audit

Bou Wallet

Security checks for vulnerabilities and agentic risk

Overview

The skill is a clear wallet and trading guide, but it needs Review because it can perform real financial actions and can send the account key to a custom backend.

Install only if you trust the Bank of Universe service and understand that the agent key may authorize spending, trading, transfers, and withdrawals. Keep the default official API URL unless you have an independently trusted backend, use narrowly scoped keys when possible, and require explicit approval before any trade, leverage change, transfer, or withdrawal.

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

Error
Location
SKILL.md:31
Finding

Arbitrary Backend Override Can Disclose the Agent Bearer Token

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 31–43 and 381–382
Vulnerability Type: Bearer-token disclosure through an untrusted backend URL
Risk Level: High

Vulnerable Code

text
- `BASE_URL`: use `https://api.bankofuniverse.org/` unless the user explicitly gives a different backend
- `AGENT_KEY`: bearer token in `ak_...` format

Treat the agent key as secret. Do not print, commit, or store it in repo files.
sh
curl -sS "$BASE_URL/..." \
  -H "Authorization: Bearer $AGENT_KEY" \
  -H "Accept: application/json"
text
Before running requests:

- Verify `BASE_URL` is correct
- Verify the token looks like `ak_...`

Technical Analysis

The Skill permits a user to replace the default API origin with an arbitrary BASE_URL, while its common request pattern sends AGENT_KEY to that origin in the HTTP Authorization header. It does not define an approved-host allowlist, require HTTPS for a custom backend, prohibit embedded credentials, or specify a robust destination-validation procedure.

Merely instructing the Agent to verify that the URL is “correct” does not establish an enforceable trust boundary. Likewise, checking that a token starts with ak_ validates only its superficial format and does not protect it from disclosure. The instruction not to print or store the key also does not prevent transmission to an attacker-controlled network endpoint.

Although sending the bearer key to the official API is necessary for the declared wallet functionality, sending that same key to an unrestricted custom backend exceeds minimum privilege. If support for alternative deployments is required, they should use independently scoped credentials rather than the production key associated with the official service.

Attack Path

  1. An attacker or untrusted prompt tells the Agent to use an attacker-controlled URL as BASE_URL.
  2. The Agent accepts the override because `S ...[truncated 1372 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin authenticated requests to the exact approved origin, https://api.bankofuniverse.org, and reject arbitrary overrides when using the production AGENT_KEY.

  2. If custom backends are operationally necessary:

    • Require explicit, informed user confirmation before transmitting credentials.
    • Maintain an allowlist of approved HTTPS origins.
    • Use a separate credential scoped specifically to each custom backend.
    • Never reuse the official production bearer token with another origin.
  3. Parse and validate the destination URL rather than relying on string-prefix checks:

    • Require the https scheme.
    • Compare the normalized hostname and port against an allowlist.
    • Reject user information embedded in URLs.
    • Reject unexpected ports and ambiguous or malformed hostnames.
  4. Prevent redirects from moving an authenticated request to another origin. For example, do not enable redirect following for requests carrying authorization headers, and consider using:

    sh
    curl --proto '=https' --proto-redir '=https' --max-redirs 0 \
      -sS "https://api.bankofuniverse.org/..." \
      -H "Authorization: Bearer $AGENT_KEY" \
      -H "Accept: application/json"
    
  5. Apply server-side least privilege by issuing separate, narrowly scoped credentials for read access, trading, transfers, withdrawals, and paid upstream calls.

  6. Require additional confirmation or authorization for irreversible operations such as withdrawals, transfers, leverage changes, and broad order cancellation.

  7. Add explicit Skill instructions that the bearer token must never be sent to merchant URLs, arbitrary hosts, diagnostic endpoints, or user-provided backends.

  8. Rotate any key suspected of having been transmitted to an untrusted origin and review account activity for unauthorized operations.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (6)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 5)May include surrounding context.

md
name: bou-wallet
description: >
  Use this skill when an external agent already has an agent API key and needs
  to call this backend directly with curl for three capability groups:
  (1) `POST /agent/pay-and-call` for x402-paid upstream requests.
  (2) `GET /agent/me` to inspect the current agent wallet/profile.
  (3) the `/hyperliquid` endpoints for status, balances, markets, asset data,

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 31)May include surrounding context.

md
Collect these values before making any request:

- `BASE_URL`: use `https://api.bankofuniverse.org/` unless the user explicitly gives a different backend
- `AGENT_KEY`: bearer token in `ak_...` format

Treat the agent key as secret. Do not print, commit, or store it in repo files.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 126)May include surrounding context.

md
Collect these values before making any request:

- `BASE_URL`: use `https://api.bankofuniverse.org/` unless the user explicitly gives a different backend
- `AGENT_KEY`: bearer token in `ak_...` format

Treat the agent key as secret. Do not print, commit, or store it in repo files.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 164)May include surrounding context.

md
Collect these values before making any request:

- `BASE_URL`: use `https://api.bankofuniverse.org/` unless the user explicitly gives a different backend
- `AGENT_KEY`: bearer token in `ak_...` format

Treat the agent key as secret. Do not print, commit, or store it in repo files.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 97)May include surrounding context.

md
-H "Authorization: Bearer $AGENT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://api.example.com/search",
    "method": "POST",
    "body": {
      "query": "BTC"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill documents order placement, cancellation, leverage changes, transfers, and withdrawals without requiring explicit user confirmation or warning about irreversible financial consequences. In an agent setting, this increases the chance that an automated workflow executes real trades or fund movements from ambiguous prompts, causing direct monetary loss.

Content

No source excerpt is available for this finding.