T09 · Insecure Skill Coding Practices
- Location
SUBMISSION.md:194- Finding
Credential-Shaped Etherscan API Key Committed in Documentation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly performs crypto address risk checks, but it under-discloses live Etherscan lookups during checks and includes risky API-key handling examples.
Review before installing. Use only with the expectation that unknown wallet addresses may be sent to Etherscan, rotate the exposed example API key if it was real, avoid putting real keys in cron or systemd command lines, and treat risk scores as advisory rather than definitive scam determinations.
SUBMISSION.md:194Credential-Shaped Etherscan API Key Committed in Documentation
crypto_check_db.py:133Unknown-Address Checks Undisclosedly Transmit Addresses and API Credentials
sync_worker.py:278Etherscan API Key Prefix Disclosed to Worker Logs
DATABASE_ARCHITECTURE.md:218Persistent Deployment Examples Store API Keys in Plaintext
install.sh:31Installer Executes Dependencies Without Artifact Integrity Verification
database.py:16Local Wallet-Analysis Database Is Created Without Explicit Restrictive Permissions
The skill metadata promises 'No external API calls during checks,' but this document states the system routes lookups to Etherscan/Solscan and fetches live scanner data. That mismatch can mislead users and integrators about network exposure, privacy boundaries, and trust assumptions, causing them to submit sensitive wallet addresses under false expectations.
The multi-chain design described here exceeds the manifest's claimed database-first, no-external-calls model by documenting scanner-based checks, data fetching, and persistence. In a security-focused scam-detection skill, this discrepancy is especially risky because users may submit sensitive financial identifiers expecting offline or local analysis, while the system may contact external services and expand the attack/privacy surface.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
Each blockchain scanner requires its own API key:
| Blockchain | API Key | Get Key From |
|------------|---------|--------------|
| Ethereum | `ETHERSCAN_API_KEY` | https://etherscan.io/apis |
| Solana | `SOLANA_API_KEY` | https://pro.solscan.io/ (coming soon) |
The usage examples explicitly show live fetches from etherscan.io and solscan.io, directly contradicting the stated no-external-calls model. This is dangerous because users may rely on the privacy/security claim when evaluating suspicious cryptocurrency addresses, while the tool may actually disclose those addresses and metadata to third parties.
The documentation explicitly states that checks for uncached addresses now perform live Etherscan fetches, which directly contradicts the skill's stated design constraint of 'No external API calls during checks.' This is dangerous because operators and downstream agents may rely on the manifest's privacy, determinism, and offline-safety claims, while the actual behavior introduces network dependence, metadata leakage, and a larger attack surface during security-sensitive checks.
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.
From v2.0.0 to v2.1.0:
# Update skill
clawhub update crypto-scam-detector
# Or download new version
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.env
*.key
secrets/
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.env
*.key
secrets/
The documentation presents the skill as a local real-time detector, while the underlying behavior reportedly includes external Etherscan calls, queued background ingestion, and narrower heuristic detection than advertised. In a fraud-detection context, this mismatch can cause both privacy harm and dangerous overtrust in weak signals.
The documentation presents the skill as a local real-time detector, while the underlying behavior reportedly includes external Etherscan calls, queued background ingestion, and narrower heuristic detection than advertised. In a fraud-detection context, this mismatch can cause both privacy harm and dangerous overtrust in weak signals.
The documentation presents the skill as a local real-time detector, while the underlying behavior reportedly includes external Etherscan calls, queued background ingestion, and narrower heuristic detection than advertised. In a fraud-detection context, this mismatch can cause both privacy harm and dangerous overtrust in weak signals.
The documentation presents the skill as a local real-time detector, while the underlying behavior reportedly includes external Etherscan calls, queued background ingestion, and narrower heuristic detection than advertised. In a fraud-detection context, this mismatch can cause both privacy harm and dangerous overtrust in weak signals.
The documentation presents the skill as a local real-time detector, while the underlying behavior reportedly includes external Etherscan calls, queued background ingestion, and narrower heuristic detection than advertised. In a fraud-detection context, this mismatch can cause both privacy harm and dangerous overtrust in weak signals.
The documentation presents the skill as a local real-time detector, while the underlying behavior reportedly includes external Etherscan calls, queued background ingestion, and narrower heuristic detection than advertised. In a fraud-detection context, this mismatch can cause both privacy harm and dangerous overtrust in weak signals.
The documentation presents the skill as a local real-time detector, while the underlying behavior reportedly includes external Etherscan calls, queued background ingestion, and narrower heuristic detection than advertised. In a fraud-detection context, this mismatch can cause both privacy harm and dangerous overtrust in weak signals.
The documentation presents the skill as a local real-time detector, while the underlying behavior reportedly includes external Etherscan calls, queued background ingestion, and narrower heuristic detection than advertised. In a fraud-detection context, this mismatch can cause both privacy harm and dangerous overtrust in weak signals.
The documentation presents the skill as a local real-time detector, while the underlying behavior reportedly includes external Etherscan calls, queued background ingestion, and narrower heuristic detection than advertised. In a fraud-detection context, this mismatch can cause both privacy harm and dangerous overtrust in weak signals.
The documentation presents the skill as a local real-time detector, while the underlying behavior reportedly includes external Etherscan calls, queued background ingestion, and narrower heuristic detection than advertised. In a fraud-detection context, this mismatch can cause both privacy harm and dangerous overtrust in weak signals.
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
# Check address (instant, database-only)
python3 crypto_check_db.py 0x1234567890abcdef1234567890abcdef12345678
Manual mode:
python3 sync_worker.py
# Runs continuously, processes queue
Batch mode:
python3 sync_worker.py --max-jobs 20
# Process 20 addresses then exit
Cron schedule (recommended):
# Add to crontab
*/10 * * * * cd ~/.openclaw/workspace/skills/crypto-scam-detector && source venv/bin/activate && ETHERSCAN_API_KEY="key" python3 sync_worker.py --max-jobs 30
User checks address
↓
┌──────────────────┐
│ crypto_check_db │ ← Queries local database ONLY
└────────┬─────────┘ (No external API calls)
│
↓
┌──────────────────────┐
│ Local SQLite DB │
│ ~/.config/cr
The submission claims or is associated with a 'No external API calls during checks' posture, yet the document explicitly advertises ChainAbuse and Etherscan lookups plus 'real-time API integration.' This kind of documentation mismatch is dangerous because reviewers and users may trust the skill as privacy-preserving or offline when it can actually transmit wallet addresses or transaction data to third parties during analysis.
The script contradicts the skill's explicit security/behavior claim by performing an on-demand sync via Etherscan when an address is missing from the database. This is dangerous because users or downstream agents may rely on the 'no external API calls during checks' guarantee for privacy, determinism, offline operation, or policy compliance, but the check can unexpectedly transmit queried addresses to a third party.
The skill metadata and module behavior claim checks are database-only and make no external API calls, but a missing address triggers a live Etherscan sync using an API key. This creates a trust-boundary violation: user-supplied wallet addresses are transmitted externally during a check, which can leak sensitive investigation targets and violate operator expectations or policy controls.
Pinning FastAPI to a version with a known security advisory exposes any service built with this skill to framework-level compromise paths, depending on how the application uses the affected components. In a security-focused skill that may process untrusted inputs, retaining a known-vulnerable web framework materially increases attack surface and undermines trust in the service.
Package name closely resembles a popular package, suggesting possible typosquatting. Attackers publish malicious packages with similar names to trick developers into installing them.
Using cryptography==42.0.5 with multiple reported advisories, including issues related to bundled OpenSSL in wheels, can expose the application to flaws in core cryptographic operations or TLS handling. Because this skill advertises secure key storage, weaknesses in the crypto stack are especially concerning and can affect confidentiality and integrity guarantees.