dex-arbitrage
Undeclared payment/billing system with hardcoded API key exposes credential; SKILL.md falsely presents tool as general-purpose DEX arbitrage without disclosing mandatory per-call charges.
SKILL.md describes a free DEX arbitrage assistant but payment.py silently implements a mandatory billing system charging 0.01 USDT per invocation. Users are unaware they will be charged. The _meta.json declares pricing but SKILL.md never mentions it.
payment.py:1 为什么得出这个结论
3/4 个维度触发发现 2 项声明之外的能力或越权行为。
提取到 1 个高危 IOC 或外联信号。
报告包含 0 步攻击链,另有 2 项高危或严重发现。
没有完整依赖信息,供应链判断需要保留弹性。
风险分是怎么被拉高的
SKILL.md describes free arbitrage tools but payment.py charges 0.01 USDT per call; billing functionality never mentioned in docs
BILLING_API_KEY hardcoded in plaintext at payment.py:12 — exposes service credential to repo/public
SKILL.md declares no allowed-tools; payment.py silently makes HTTPS requests to skillpay.me
User IDs from SKILLPAY_USER_ID env var are sent to external endpoint
最关键的证据
Undeclared mandatory payment/billing system
SKILL.md describes a free DEX arbitrage assistant but payment.py silently implements a mandatory billing system charging 0.01 USDT per invocation. Users are unaware they will be charged. The _meta.json declares pricing but SKILL.md never mentions it.
payment.py:1 Hardcoded API key exposed in source code
BILLING_API_KEY = 'sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2' is hardcoded at payment.py:12. This credential is permanently embedded in the skill package and visible to anyone who inspects the code.
payment.py:12 Missing allowed-tools declaration
SKILL.md declares no allowed-tools. The skill performs network requests (to skillpay.me and DEX APIs) and reads environment variables, but these resource accesses are not declared in the skill manifest.
SKILL.md:1 User ID transmitted to external endpoint
verify_payment() reads SKILLPAY_USER_ID from environment and sends it to skillpay.me/api/v1/billing/* endpoints. While this is necessary for billing, it is undeclared and the endpoint's data handling policy is unknown.
payment.py:99 声明能力 vs 实际能力
No file writes in code; scripts are generators/calculators only payment.py:27-30 sends POST to skillpay.me; price_monitor.py:43-49 fetches DEX prices — no declaration in SKILL.md No subprocess/shell execution found payment.py:99 reads SKILLPAY_USER_ID from os.environ without declaration 可疑产物与外联
API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2" payment.py:12
https://skillpay.me payment.py:11
https://dexscreener.com/ references/arbitrage-tools.md:7
https://www.coingecko.com/ references/arbitrage-tools.md:25
https://api.coingecko.com/api/v3/simple/price?ids= references/arbitrage-tools.md:32
https://portal.1inch.dev/ references/arbitrage-tools.md:47
https://api.1inch.dev/swap/v5.2/1/quote? references/arbitrage-tools.md:58
https://eth.llamarpc.com references/arbitrage-tools.md:99
https://api.0x.org/swap/v1/quote? references/arbitrage-tools.md:144
https://li.quest/v1/quote references/arbitrage-tools.md:163
https://socket.tech/ references/arbitrage-tools.md:177
https://across.to/ references/arbitrage-tools.md:186
依赖与供应链
没有结构化依赖告警。
文件构成
scripts/flashloan_generator.py SKILL.md scripts/price_monitor.py references/arbitrage-tools.md references/mev-protection.md payment.py