Env credential access
- Finding
- Environment variable access combined with network send.
Security checks across static analysis, malware telemetry, and agentic risk
This trading skill can place real crypto futures trades and includes under-declared private-key use, hardcoded key material, and misleading random “AI” signals.
Do not use this with a funded wallet unless you have independently reviewed the code. Prefer testnet or a dedicated low-balance trading wallet, rotate any exposed keys, require explicit trade confirmations, and do not rely on the advertised AI signals until the implementation is corrected.
VirusTotal findings are pending for this skill version.
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Users may install a skill without realizing it expects credentials capable of controlling a funded trading account.
The registry credential contract says no credentials are needed, while the skill documentation and code require private keys and payment API credentials for trading and billing.
Required env vars: none; Env var declarations: none; Primary credential: none
Declare all sensitive credentials in metadata, separate read-only and trading modes, and clearly warn users before any private key is used.
An exposed private key can allow unauthorized trading or loss of funds, and users may copy an unsafe credential-handling pattern.
A published runnable script embeds a private-key literal and uses it to execute a real trade; similar hardcoded private-key findings appear across several trade/test files.
const PRIVATE_KEY = '0xd6b7...b02e'; ... const result = await trader.executeTrade('BTC', 'buy', 0.0001); ... executeRealTrade();Remove hardcoded keys, rotate any exposed wallets, keep live-trade test scripts out of the published package, and require keys only via secure user-controlled configuration.
A mistaken or overbroad agent invocation could open or increase leveraged futures positions and cause financial loss.
The main skill can place live buy/sell orders with user-supplied size and side, and the artifacts do not show a mandatory confirmation or hard safety cap before submitting the order.
await sdk.exchange.placeOrder({ coin: normalizedCoin, is_buy: isBuy, sz: parseFloat(size), limit_px: slippagePrice, order_type: { limit: { tif: 'Ioc' } }, reduce_only: false })Add explicit per-order user confirmation, testnet/dry-run defaults, max notional and leverage limits, and safer reduce-only options.
Users could trust fabricated trading signals and make real financial decisions based on random output.
The skill advertises paid AI trading signals, but the implementation chooses a random direction and confidence while presenting it as market analysis.
const signals = ['bullish', 'bearish', 'neutral']; const randomSignal = signals[Math.floor(Math.random() * signals.length)]; const confidence = Math.floor(Math.random() * 30) + 60;
Label this as demo/random output or replace it with transparent, data-backed analysis before offering it as AI trading advice.
SkillPay can receive user identifiers and charge details for paid calls.
The skill sends user billing data and an API key to the external SkillPay service, which is expected for the disclosed payment feature but still sensitive.
fetch(`${this.baseUrl}/billing/charge`, { ... 'Authorization': `Bearer ${this.apiKey}`, body: JSON.stringify({ user_id: userId, amount: amount, currency: 'USDT' }) })Use only if you trust the billing provider and verify which identifiers and payment credentials are being shared.