Back to skill

Security audit

Fg Micro

Security checks for vulnerabilities and agentic risk

Overview

This skill appears to provide the advertised paid market-signal lookup, but it asks an agent to use a wallet private key for automatic paid calls without clear spend limits or key-safety controls.

Review before installing. Use only a dedicated low-balance wallet, never a primary wallet, and set your own call limits or budgets before using this in polling loops. Confirm the expected price, chain, asset, and endpoint before allowing repeated requests.

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:30
Finding

Unbounded Automatic Payments Using a Raw Wallet Private Key

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 6–9, 30–40, and 46–53
Vulnerability Type: Automatic financial authorization with a highly sensitive wallet credential
Risk Level: Medium

Complete Code Snippets

yaml
requires:
  env:
    - EVM_PRIVATE_KEY
primaryEnv: EVM_PRIVATE_KEY
text
The x402 client handles payment authorisation automatically. No API key, no account, no subscription required — just an EVM wallet with USDC on Base mainnet.
python
# Example using the x402-python client
from x402.client import x402_get

response = x402_get(
    url="https://apexrunner.ai/signals/fg-micro",
    private_key=os.environ["EVM_PRIVATE_KEY"]
)
print(response.json())
text
**$0.01/call** — standard price

Early adopters automatically receive 30% off ($0.01/call) until 2026-09-21. Discount tiers apply automatically based on wallet call history:
- Early Adopter (0–9 calls): 30% off
- Engaged (10–49 calls): 15% off
- Loyal (50–199 calls): 15% permanent
- VIP (200+ calls): 20% permanent

Technical Analysis

The Skill requires direct access to EVM_PRIVATE_KEY and passes that secret to an x402 client that automatically authorizes paid requests. The documented use case explicitly includes high-frequency polling, but the Skill defines no per-request confirmation, maximum call count, session budget, daily spending limit, rate limit, or wallet-balance restriction.

A private key represents the full authority granted to its wallet. Supplying it directly to an agent-accessible dependency increases the consequences of accidental disclosure, dependency compromise, or uncontrolled invocation. Although the reviewed file contains no evidence that the key is deliberately exfiltrated, the architecture unnecessarily places a high-value credential in the execution path of an externally billed request.

The remote service and payment protocol determine whether each ...[truncated 1605 chars]

Remediation
View remediation

Remediation Suggestions

  1. Use a dedicated, low-balance wallet created exclusively for this Skill; never use a primary or treasury wallet.
  2. Replace direct private-key access with a scoped signing service or policy-controlled wallet that can restrict the recipient, network, token, transaction type, and maximum amount.
  3. Enforce local per-call, per-session, and daily spending limits before invoking the x402 client.
  4. Add strict polling rate limits, maximum retry counts, exponential backoff, and circuit breakers.
  5. Require explicit user confirmation when a payment exceeds the expected price or when cumulative spending crosses a configured threshold.
  6. Validate the chain ID, payment recipient, asset contract, and exact maximum charge before signing.
  7. Pin the x402 dependency to a reviewed version, verify package provenance and integrity, and audit updates before deployment.
  8. Prevent secrets from appearing in logs, exceptions, telemetry, prompts, or diagnostic output.
  9. Revoke and rotate the wallet credential immediately if exposure is suspected.
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 (1)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill instructs the agent to use an environment-supplied EVM private key to make x402-authenticated requests and states that payment authorization happens automatically, but it does not prominently warn that this can spend funds from the wallet or advise on secure key handling. In an agent setting, this creates a real risk of unintended spending and unsafe credential use, especially during high-frequency polling where repeated calls can accumulate charges quickly.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.