Skill Trust Decision

odds-movement-monitor-v2026

技能功能本身为合法的赔率监控系统,但存在多处文档-行为不符:SKILL.md未声明计费系统、未声明外部网络通信、未声明环境变量读取;payment.py中硬编码计费API密钥构成供应链风险。虽无直接恶意行为证据,但阴影功能特征明显。

Install decision first Source: ClawHub Scanned: 13 days ago
Files 11
Artifacts 6
Violations 4
Findings 5
Most direct threat evidence

Why this conclusion was reached

2/4 dimensions flagged
Block
Declared vs actual capability

4 undeclared or violating capabilities were inferred.

Block
Hidden execution and egress

1 high-risk artifacts or egress signals were extracted.

Pass
Attack chain and severe findings

There is no explicit malicious chain in the report.

Review
Dependencies and supply chain hygiene

2 dependency or supply-chain issues need attention.

What drove the risk score up

文档欺骗 - 计费系统未声明 +15

SKILL.md未提及SkillPay计费逻辑,但payment.py在verify_payment中读取SKILLPAY_USER_ID并扣费

硬编码凭证 +10

payment.py:12 硬编码BILLING_API_KEY='sk_f03aa8f8...', 未使用环境变量注入

未声明的环境变量读取 +5

payment.py:59 读取SKILLPAY_USER_ID,payment.py:16读取ODDS_API_KEY,均未在SKILL.md声明

未声明的外部网络通信 +5

SKILL.md未声明连接skillpay.me,技能卡片虽提及但SKILL.md主文档缺失

Most important evidence

Medium Doc Mismatch

计费系统未在SKILL.md中声明

payment.py实现了完整的SkillPay计费系统:查询余额、扣费、生成充值链接,但SKILL.md对此只字未提。verify_payment()函数读取环境变量SKILLPAY_USER_ID并对用户扣费,属于影响用户财务的敏感操作。

SKILL.md:1
在SKILL.md核心能力章节明确声明计费逻辑,说明每次调用的费用结构和收费机制
Medium Supply Chain

硬编码计费API密钥

payment.py:12 硬编码BILLING_API_KEY='sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2'。如代码仓库公开或AI Agent将该凭证输出给用户,将导致计费密钥泄露。

payment.py:12
使用环境变量ODDS_API_KEY模式,从os.environ.get('SKILLPAY_API_KEY')读取,文档说明由宿主机密管理器注入
Medium Doc Mismatch

外部服务通信未完整声明

SKILL.md完全未提及连接skillpay.me和api.the-odds-api.com。仅在skill-card.md(非主文档)中有少量外部URL提及。payment.py和monitor.py中的requests/aiohttp外部调用无文档背书。

SKILL.md:1
在SKILL.md明确列出所有外部服务依赖(技能卡片中已列出skillpay.me和the-odds-api.com,应同步到SKILL.md)
Medium Priv Escalation

计费操作可无用户确认直接扣费

require_payment()函数在技能启动时自动执行,先charge_user再决定是否抛出异常。用户余额不足时显示充值链接。无用户授权确认机制。

payment.py:74
在技能执行前增加显式用户确认流程,或要求平台层提供可信的支付绑定机制
Low Supply Chain

第三方依赖无版本锁定

requirements.txt中aiohttp>=3.8.0和requests>=2.28.0均为浮动版本。aiohttp历史上存在多个安全漏洞(CVE-2024-30281等),无版本锁定增加了供应链攻击面。

requirements.txt:1
锁定到具体版本,如aiohttp==3.9.0、requests==2.31.0,并定期更新

Declared capability vs actual capability

Filesystem Block
Declared NONE
→
Inferred WRITE
monitor.py:57-58 sqlite3.connect创建本地数据库odds_data.db
Network Block
Declared NONE
→
Inferred WRITE
payment.py:22-69 requests.post向skillpay.me发送POST请求含user_id+skill_id+amount
Environment Block
Declared NONE
→
Inferred READ
payment.py:59 os.environ.get('SKILLPAY_USER_ID');monitor.py:24 os.getenv('ODDS_API_KEY')
Database Block
Declared NONE
→
Inferred WRITE
monitor.py:57-117 sqlite3创建并写入odds_data.db

Suspicious artifacts and egress

High API Key
API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2"

payment.py:12

Medium External URL
https://api.the-odds-api.com/v4

config.json:15

Medium External URL
https://the-odds-api.com/

monitor.py:527

Medium External URL
https://skillpay.me

payment.py:11

Medium External URL
https://clawhub.ai/user/shenmeng

skill-card.md:9

Medium External URL
https://clawhub.ai/shenmeng/skills/shenmeng-odds-movement-monitor

skill-card.md:39

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
aiohttp >=3.8.0 pip Yes 无版本锁定;aiohttp历史CVE(CVE-2024-30281等)
requests >=2.28.0 pip No 无版本锁定

File composition

11 files · 1670 lines
Python 5 files · 1432 linesMarkdown 3 files · 182 linesJSON 2 files · 54 linesText 1 files · 2 lines
Files of concern · 6
config.json JSON · 49 lines
https://api.the-odds-api.com/v4
monitor.py Python · 597 lines
https://the-odds-api.com/
payment.py Python · 142 lines
硬编码计费API密钥 · 计费操作可无用户确认直接扣费 · API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2" · https://skillpay.me
skill-card.md Markdown · 60 lines
https://clawhub.ai/user/shenmeng · https://clawhub.ai/shenmeng/skills/shenmeng-odds-movement-monitor
SKILL.md Markdown · 42 lines
计费系统未在SKILL.md中声明 · 外部服务通信未完整声明
requirements.txt Text · 2 lines
第三方依赖无版本锁定
Other files · change_detector.py · demo.py · README.md · __init__.py · _meta.json

Security positives

代码结构清晰,无混淆、base64编码或反分析技术
无凭证收割逻辑(不遍历os.environ寻找API密钥关键字)
无未声明的shell执行(无subprocess/os.system)
无数据外泄行为(网络请求均为主功能所必需)
无持久化后门(无crontab、init脚本修改)
数据库操作仅用于本地存储赔率数据,路径正常
硬编码API密钥为计费系统所需,非数据窃取密钥