Skill Trust Decision

dex-arbitrage

Skill contains a hardcoded API key exposed in source code and makes undeclared network requests, but scripts are benign calculators and generators without malicious execution capabilities.

Install decision first Source: ClawHub Scanned: 9 days ago
Files 12
Artifacts 52
Violations 1
Findings 3
Most direct threat evidence
High Credential Theft
Hardcoded API Key in Source Code

A BILLING_API_KEY is hardcoded directly in payment.py line 12. This API key is exposed in the package distribution and could be stolen if the source code is accessed. API keys should be stored in environment variables, not hardcoded.

payment.py:12

Why this conclusion was reached

3/4 dimensions flagged
Block
Declared vs actual capability

1 undeclared or violating capabilities were inferred.

Block
Hidden execution and egress

1 high-risk artifacts or egress signals were extracted.

Block
Attack chain and severe findings

The report includes 0 attack-chain steps and 1 severe findings.

Review
Dependencies and supply chain hygiene

1 dependency or supply-chain issues need attention.

What drove the risk score up

Hardcoded API key in source +25

BILLING_API_KEY hardcoded in payment.py:12 - exposed in package distribution

Undeclared network access +15

Scripts make requests to skillpay.me and crypto APIs not declared in SKILL.md

Most important evidence

High Credential Theft

Hardcoded API Key in Source Code

A BILLING_API_KEY is hardcoded directly in payment.py line 12. This API key is exposed in the package distribution and could be stolen if the source code is accessed. API keys should be stored in environment variables, not hardcoded.

payment.py:12
Replace hardcoded key with os.environ.get('SKILLPAY_API_KEY') and document required environment variables
Medium Doc Mismatch

Undeclared Network Access

SKILL.md does not declare any network permissions, but scripts make requests to external services: skillpay.me (billing), thegraph.com (DEX data), coingecko.com (prices), curve.fi (pool data). This violates the doc-to-code matching principle.

SKILL.md:1
Add 'network:READ' to declared permissions if external API calls are intended
Low Supply Chain

Unpinned Dependency (requests library)

payment.py uses 'import requests' without version pinning, which could allow malicious updates.

payment.py:3
Add requirements.txt with pinned versions: requests>=2.28.0

Declared capability vs actual capability

Network Block
Declared NONE
Inferred READ
payment.py:25 requests.get(f'{BILLING_API_URL}/api/v1/billing/balance')
Filesystem Pass
Declared NONE
Inferred NONE
No file operations found in scripts
Shell Pass
Declared NONE
Inferred NONE
No subprocess/os.system calls found

Suspicious artifacts and egress

High API Key
API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2"

payment.py:12

Medium External URL
https://skillpay.me

payment.py:11

Medium External URL
https://dexscreener.com/

references/arbitrage-tools.md:7

Medium External URL
https://www.coingecko.com/

references/arbitrage-tools.md:25

Medium External URL
https://api.coingecko.com/api/v3/simple/price?ids=

references/arbitrage-tools.md:32

Medium External URL
https://portal.1inch.dev/

references/arbitrage-tools.md:47

Medium External URL
https://api.1inch.dev/swap/v5.2/1/quote?

references/arbitrage-tools.md:58

Medium External URL
https://eth.llamarpc.com

references/arbitrage-tools.md:99

Medium External URL
https://api.0x.org/swap/v1/quote?

references/arbitrage-tools.md:144

Medium External URL
https://li.quest/v1/quote

references/arbitrage-tools.md:163

Medium External URL
https://socket.tech/

references/arbitrage-tools.md:177

Medium External URL
https://across.to/

references/arbitrage-tools.md:186

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
requests * pip No Version not pinned

File composition

12 files · 3943 lines
Markdown 7 files · 2563 linesPython 4 files · 1375 linesJSON 1 files · 5 lines
Files of concern · 7
scripts/flashloan_generator.py Python · 545 lines
0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e · 0xE592427A0AEce92De3Edee1F18E0157C05861564 · 0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F · 0xBA12222222228d8Ba445958a75a0704d566BF2C8 · 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb · 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
SKILL.md Markdown · 542 lines
Undeclared Network Access
scripts/price_monitor.py Python · 293 lines
https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3 · https://api.thegraph.com/subgraphs/name/sushiswap/exchange · https://api.curve.fi/api/getPools
references/arbitrage-tools.md Markdown · 461 lines
https://dexscreener.com/ · https://www.coingecko.com/ · https://api.coingecko.com/api/v3/simple/price?ids= · https://portal.1inch.dev/ · https://api.1inch.dev/swap/v5.2/1/quote? · https://eth.llamarpc.com · https://api.0x.org/swap/v1/quote? · https://li.quest/v1/quote · https://socket.tech/ · https://across.to/ · https://protect.flashbots.net/ · https://rpc.flashbots.net · https://www.edennetwork.io/ · https://api.edennetwork.io/v1/rpc · https://cowswap.exchange/ · https://dune.com/ · https://eigenphi.io/ · https://explorer.flashbots.net/ · https://tenderly.co/ · https://book.getfoundry.sh/ · https://hardhat.org/ · https://zapper.fi/ · https://debank.com/ · https://www.alchemy.com/ · https://infura.io/ · https://www.quicknode.com/ · https://rpc.ankr.com/eth · https://ethereum.publicnode.com · https://arb1.arbitrum.io/rpc · https://arbitrum.llamarpc.com · https://chainlist.org/ · https://docs.uniswap.org/ · https://docs.flashbots.net/ · https://docs.ethers.org/ · https://explore.flashbots.net/ · https://writings.flashbots.net/
references/mev-protection.md Markdown · 410 lines
https://relay.flashbots.net · https://protect.flashbots.net/v1/rpc · https://rpc.mevblocker.io · https://cowswap.exchange
payment.py Python · 142 lines
Hardcoded API Key in Source Code · Unpinned Dependency (requests library) · API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2" · https://skillpay.me
skill-card.md Markdown · 46 lines
https://clawhub.ai/user/shenmeng
Other files · arbitrage_calculator.py · flashloan-arbitrage.md · bridge-guide.md · arbitrage-basics.md · _meta.json

Security positives

No shell execution (subprocess/os.system) found in any script
No credential harvesting from os.environ iteration
No base64 encoded or obfuscated code detected
No access to sensitive paths (~/.ssh, ~/.aws, .env)
No reverse shell, C2, or data exfiltration mechanisms
Scripts are educational calculators and code generators - no direct wallet interaction
Smart contract code is template generation only, not deployment logic