whale-alert-monitor
Hardcoded billing API key exposed in source code; payment.py makes undeclared external network calls to skillpay.me that are not mentioned in SKILL.md; all scripts use mock/simulated data with no real blockchain APIs called.
BILLING_API_KEY is defined as a string literal on line 12 of payment.py and transmitted in the X-API-Key header to https://skillpay.me. If this file is exposed (e.g., through skill publication, debugging, or a supply-chain attack), the key can be stolen and abused for billing fraud. This key is not pinned to an environment variable as best practice requires.
payment.py:12 Why this conclusion was reached
3/4 dimensions flagged3 undeclared or violating capabilities were inferred.
1 high-risk artifacts or egress signals were extracted.
The report includes 0 attack-chain steps and 1 severe findings.
2 dependency or supply-chain issues need attention.
What drove the risk score up
BILLING_API_KEY = 'sk_f03aa8f8...' is hardcoded in payment.py:12 and sent to external skillpay.me
payment.py sends requests to https://skillpay.me/api/v1/billing/* — not declared in SKILL.md capabilities
SKILL.md describes functionality but buries the 0.01 USDT/call charge in an inline comment without declaring network:WRITE or environment access
All scripts generate random simulated blockchain data; Etherscan/Alchemy keys in env vars are never used, reducing actual risk
Most important evidence
Hardcoded billing API key in payment.py
BILLING_API_KEY is defined as a string literal on line 12 of payment.py and transmitted in the X-API-Key header to https://skillpay.me. If this file is exposed (e.g., through skill publication, debugging, or a supply-chain attack), the key can be stolen and abused for billing fraud. This key is not pinned to an environment variable as best practice requires.
payment.py:12 Undeclared external network calls in payment.py
SKILL.md declares network usage only for Telegram/Discord notifications. However, payment.py silently makes HTTP GET/POST requests to https://skillpay.me during verify_payment() and charge_user(). The skill payload (payment.py) is included in the published skill but its external network behavior is not documented.
payment.py:26 Silent payment enforcement on skill invocation
require_payment() in payment.py raises SystemExit if balance is insufficient. This means the skill refuses to function without payment, but this behavior is only visible as an inline comment in SKILL.md, not as a declared dependency or pre-condition.
payment.py:88 Environment variable access not declared
Multiple scripts read API keys and tokens from os.environ (ETHERSCAN_API_KEY, TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID, DISCORD_WEBHOOK_URL) but SKILL.md does not declare environment:READ as a capability.
whale_tracker.py:17 File write operations not declared
Scripts write to local files (whale_profile.json, alert_history.json, whale_monitor.log) but filesystem:WRITE is not declared in SKILL.md.
whale_tracker.py:231 All scripts use mock/simulated data
No script makes actual Etherscan, Alchemy, or Moralis API calls. All data is generated via random number generation. The ETHERSCAN_API_KEY read from environment is never used. This reduces the real-world risk but raises questions about the skill's utility.
whale_tracker.py:67 Declared capability vs actual capability
payment.py:15 — requests.post to skillpay.me with API key whale_tracker.py:17 — os.getenv('ETHERSCAN_API_KEY'); alert_manager.py:105 — os.getenv('TELEGRAM_BOT_TOKEN') whale_tracker.py:231 — open(filename,'w'); monitor_daemon.py:44 — logging.FileHandler No subprocess or shell execution found Suspicious artifacts and egress
API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2" payment.py:12
0x742d35Cc6634C0532925a3b8D4E6D3b6e8d3e8D3 SKILL.md:78
0x3f5CE5FBFe3E9af3971dD833D26bA9b5C936f0bE SKILL.md:96
0x71660c4005BA85c37ccec55d0C4493E66Fe775d3 SKILL.md:101
https://skillpay.me payment.py:11
https://api.etherscan.io/api references/api-configuration.md:8
https://eth-mainnet.g.alchemy.com/v2/ references/api-configuration.md:54
https://deep-index.moralis.io/api/v2/ references/api-configuration.md:89
https://eth-mainnet.g.alchemy.com/v2/KEY references/api-configuration.md:112
https://eth-mainnet.g.alchemy.com/v2/$ references/api-configuration.md:137
https://etherscan.io references/api-configuration.md:138
https://bsc-dataseed.binance.org references/api-configuration.md:142
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| requests | * | pip | No | Version not pinned; used for billing and notification HTTP calls |
| pyyaml | * | pip | No | Used for config loading in monitor_daemon.py |
File composition
scripts/alert_manager.py SKILL.md payment.py references/api-configuration.md references/wallet-labels.md