T09 · Insecure Skill Coding Practices
- Location
client/src/solana/index.js:274- Finding
Incorrect SPL Token Decimal Conversion Can Cause 1,000× Overpayment
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill matches its marketplace purpose, but it handles real wallet secrets and payments in ways that could expose funds or cause unintended spending.
Review carefully before installing. Use only a dedicated low-balance wallet, avoid storing a primary wallet mnemonic/private key in this client, confirm exact recipient and price out of band before calls, and treat downloaded provider results as untrusted. The skill should add safer secret storage, payment confirmation and spending limits, fixed token amount handling, path containment for downloads, endpoint authorization, and a reproducible dependency lockfile before ordinary use.
client/src/solana/index.js:274Incorrect SPL Token Decimal Conversion Can Cause 1,000× Overpayment
client/src/consumer/index.js:243Remote Provider Data Controls Automatic Cryptocurrency Payments Without Price Authorization
client/src/consumer/index.js:157Provider-Controlled Result Filename Allows Arbitrary File Overwrite
scripts/setup.sh:143Wallet Mnemonic Is Entered Visibly and Stored Without Enforced Restrictive Permissions
client/src/provider/server.js:186Job Results and Generated Files Are Exposed Without Consumer Authorization
scripts/setup.sh:77Setup Installs Mutable Dependencies Without a Lockfile
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
The skill asks users to store a wallet private key or mnemonic locally and run setup/configuration scripts, while presenting itself as a marketplace client. Even if that behavior matches the intended design, collecting high-value crypto secrets into a local config file materially increases theft risk and is more dangerous in a skill that also performs shell and network actions.
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
echo ""
# Fetch and pretty-print
RESULT=$(curl -s "$AGGREGATOR/api/$API_ID")
# Try python, then node, then raw output
if command -v python3 &> /dev/null; then
The script prompts for a wallet private key and writes it directly into config.json in plaintext under the user's home directory, with no warning, encryption, or permission hardening. In the context of a Solana/$BOB marketplace client, compromise of this file can directly enable theft of funds, unauthorized transactions, and impersonation of the user on the network.
The setup script interactively prompts for a Solana private key or mnemonic and writes it directly into config.json in plaintext under the user's home directory. This is dangerous because wallet secrets can be exposed through local file compromise, backups, shell observation/shoulder-surfing, or accidental disclosure, leading to theft of on-chain funds and unauthorized transactions. The skill context increases risk because this wallet is intended to hold and spend real Solana-based assets on mainnet.
The skill instructs users to run shell scripts and perform network operations, but it declares no explicit tool scope or permission boundaries. In an agent environment, missing scope metadata increases the chance that the skill can be invoked with broader-than-expected shell/network access and makes review and enforcement harder.
The setup flow creates persistent local configuration and prompts for wallet configuration, which implies session persistence of sensitive operational state. In this context, persistence becomes risky because the stored state includes or may lead to storing cryptocurrency credentials and long-lived connectivity settings that survive beyond the immediate task.
This will:
1. Clone the bob-p2p-client repository
2. Install Node.js dependencies
3. Create config from template
4. Prompt you for wallet configuration
### Manual Setup
The setup instructions tell users to place a Solana wallet private key or mnemonic directly into config.json, but the immediate step lacks a clear warning that this stores highly sensitive credentials in plaintext. Plaintext seed phrase storage makes wallet compromise much more likely through filesystem exposure, backups, logs, malware, or accidental commits.
No suspicious patterns detected.