安全决策报告

odds-movement-monitor

技能功能正常但存在硬编码第三方API密钥的严重安全问题,可能导致凭证滥用风险

安装决策优先 来源: ClawHub 扫描时间: 2026/4/11
文件 10
IOC 4
越权项 2
发现 4
最直接的威胁证据
01
用户安装并激活技能 初始入口 · SKILL.md
02
代码中硬编码的API密钥被暴露 权限提升 · payment.py
03
攻击者利用暴露的密钥冒充作者扣费或消耗配额 最终危害 · payment.py

为什么得出这个结论

3/4 个维度触发
阻止
声明与实际能力

发现 2 项声明之外的能力或越权行为。

阻止
隐藏执行与外联

提取到 1 个高危 IOC 或外联信号。

阻止
攻击链与高危发现

报告包含 3 步攻击链,另有 1 项高危或严重发现。

复核
依赖与供应链卫生

发现 2 项需要关注的依赖或供应链线索。

攻击链

01
用户安装并激活技能

初始入口 · SKILL.md:1

02
代码中硬编码的API密钥被暴露

权限提升 · payment.py:12

03
攻击者利用暴露的密钥冒充作者扣费或消耗配额

最终危害 · payment.py:43

风险分是怎么被拉高的

硬编码第三方API密钥 +35

payment.py:12 硬编码了SkillPay API密钥,任何代码访问者都可使用

文档声明不完整 +15

SKILL.md未说明API密钥配置方式,用户无法知晓是否需要自备密钥

本地数据库写入 +5

monitor.py创建本地SQLite数据库odds_data.db,文档未声明

外部网络请求 +5

访问skillpay.me和the-odds-api.com,属于功能必要但未充分说明

最关键的证据

高危 凭证窃取

硬编码第三方API密钥

payment.py第12行硬编码了SkillPay的API密钥'sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2'。这意味着:1)密钥对所有代码访问者可见 2)可能被滥用于冒充技能作者进行扣费 3)消耗技能作者的API配额

payment.py:12
将API密钥改为从环境变量读取:os.environ.get('SKILLPAY_API_KEY'),并在文档中说明需要用户配置
中危 文档欺骗

未声明本地数据存储

monitor.py会创建本地SQLite数据库odds_data.db存储赔率历史,但SKILL.md未提及此功能

monitor.py:35
在SKILL.md中添加数据存储相关说明
中危 文档欺骗

未声明的环境变量依赖

代码依赖SKILLPAY_USER_ID和ODDS_API_KEY环境变量,但SKILL.md未说明

payment.py:24
在SKILL.md中添加所需环境变量说明
低危 供应链

依赖包版本未锁定

requirements.txt中aiohttp和requests使用>=约束,存在供应链风险

requirements.txt:1
锁定具体版本以确保可复现性和安全性

声明能力 vs 实际能力

文件系统 阻止
声明 NONE
推断 WRITE
monitor.py:35 创建本地SQLite数据库odds_data.db
网络访问 通过
声明 READ
推断 READ+WRITE
payment.py:43 向skillpay.me发送POST请求扣费
命令执行 通过
声明 NONE
推断 NONE
环境变量 阻止
声明 NONE
推断 READ
payment.py:11 读取SKILLPAY_USER_ID, payment.py:24 读取ODDS_API_KEY

可疑产物与外联

高危 API 密钥
API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2"

payment.py:12

中危 外部 URL
https://api.the-odds-api.com/v4

config.json:15

中危 外部 URL
https://the-odds-api.com/

monitor.py:527

中危 外部 URL
https://skillpay.me

payment.py:11

依赖与供应链

包名版本来源漏洞备注
aiohttp >=3.8.0 pip 无版本锁定
requests >=2.28.0 pip 无版本锁定

文件构成

10 个文件 · 1699 行
Python 5 个文件 · 1432 行Markdown 2 个文件 · 194 行JSON 2 个文件 · 71 行Text 1 个文件 · 2 行
需关注文件 · 4
config.json JSON · 49 行
https://api.the-odds-api.com/v4
monitor.py Python · 597 行
未声明本地数据存储 · https://the-odds-api.com/
payment.py Python · 142 行
硬编码第三方API密钥 · 未声明的环境变量依赖 · API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2" · https://skillpay.me
requirements.txt Text · 2 行
依赖包版本未锁定
其他文件 · change_detector.py · demo.py · README.md · SKILL.md · __init__.py · _meta.json

安全亮点

代码结构清晰,模块化设计良好
使用dataclass进行数据结构化
具备异步支持(aiohttp)
有完整的预警和报告功能
使用SQLite存储,无外部数据库依赖