安全决策报告

self-evolution-engine

存在硬编码API密钥、宽泛的默认权限路径和未声明的支付扣费功能,风险点被承认但未实际修复

安装决策优先 来源: ClawHub 扫描时间: 12 天前
文件 10
IOC 4
越权项 1
发现 6
最直接的威胁证据
严重 凭证窃取
硬编码API密钥泄露

payment.py 第12行硬编码了 SkillPay API 密钥 sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2,可被提取用于冒充该服务进行未授权扣费

payment.py:12

为什么得出这个结论

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

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

阻止
隐藏执行与外联

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

阻止
攻击链与高危发现

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

复核
依赖与供应链卫生

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

攻击链

01
下载安装 self-evolution-engine skill

初始入口 · SKILL.md:1

02
从 payment.py 提取硬编码的 API 密钥

权限提升 · payment.py:12

03
利用泄露密钥向 skillpay.me 发送未授权扣费请求

最终危害 · payment.py:44

04
设置 SKILLPAY_USER_ID 环境变量对任意用户扣费

权限提升 · payment.py:68

风险分是怎么被拉高的

硬编码API密钥泄露 +25

payment.py:12 硬编码 sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2

影子功能-自动扣费 +15

verify_payment() 自动从环境变量 SKILLPAY_USER_ID 读取用户ID进行扣费,SKILL.md 未声明

权限提升风险 +15

version_manager.py 和 evolution_generator.py 默认操作 /root/.openclaw/workspace/skills 路径

依赖无版本锁定 +5

requirements.txt 中 pandas>=2.0.0, numpy>=1.24.0 等均无上限版本

不安全哈希算法 +5

version_manager.py 使用 MD5 计算文件校验和

最关键的证据

严重 凭证窃取

硬编码API密钥泄露

payment.py 第12行硬编码了 SkillPay API 密钥 sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2,可被提取用于冒充该服务进行未授权扣费

payment.py:12
将 API 密钥存储在环境变量或受保护的运行时密钥库中,如 os.environ.get('SKILLPAY_API_KEY')
高危 文档欺骗

未声明的自动扣费功能

SKILL.md 声明的性能监控、错误分析、版本管理等核心功能均未提及付费机制,但 payment.py 的 verify_payment() 和 require_payment() 会在执行时自动从环境变量 SKILLPAY_USER_ID 读取用户ID并扣除 0.01 USDT

payment.py:67
在 SKILL.md 核心能力部分明确声明付费系统,包括扣费时机、金额和获取方式
高危 权限提升

默认指向root权限路径

version_manager.py 和 evolution_generator.py 默认工作目录设置为 /root/.openclaw/workspace/skills,在容器环境中可能具有root权限,可操作其他用户的skill文件

version_manager.py:14
使用相对路径或环境变量指定工作目录,避免硬编码root路径
中危 供应链

依赖包无版本锁定

requirements.txt 中 pandas>=2.0.0, numpy>=1.24.0, psutil>=5.9.0, matplotlib>=3.7.0, python-dateutil>=2.8.0 均无上限版本约束,可能引入恶意或漏洞依赖

requirements.txt:1
使用精确版本(如 pandas==2.0.3)或设置上限版本(如 pandas>=2.0.0,<3.0.0)
中危 代码混淆

使用不安全的MD5哈希

version_manager.py 使用 MD5 算法计算文件校验和(_calculate_checksum 方法),MD5 存在碰撞攻击风险,不应用于安全敏感场景

version_manager.py:50
使用 SHA-256 或更安全的哈希算法替代 MD5
低危 敏感访问

访问环境变量获取用户标识

payment.py 从环境变量 SKILLPAY_USER_ID 读取用户身份用于扣费,如该环境变量被恶意设置,可导致对任意用户扣费

payment.py:68
验证用户身份来源,确保环境变量不可被外部篡改

声明能力 vs 实际能力

文件系统 阻止
声明 READ
→
推断 WRITE
version_manager.py:87-90 执行文件快照和回滚
网络访问 通过
声明 NONE
→
推断 WRITE
payment.py:40-65 POST扣费请求到外部API
环境变量 通过
声明 NONE
→
推断 READ
payment.py:68 读取 SKILLPAY_USER_ID

可疑产物与外联

高危 API 密钥
API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2"

payment.py:12

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

payment.py:11

中危 外部 URL
https://clawhub.ai/user/shenmeng

skill-card.md:9

中危 外部 URL
https://clawhub.ai/shenmeng/skills/shenmeng-self-evolution-engine

skill-card.md:44

依赖与供应链

包名版本来源漏洞备注
python-dateutil >=2.8.0 pip 否 无版本锁定
pandas >=2.0.0 pip 否 无版本锁定,存在供应链风险
numpy >=1.24.0 pip 否 无版本锁定,存在供应链风险
psutil >=5.9.0 pip 否 无版本锁定
matplotlib >=3.7.0 pip 否 无版本锁定

文件构成

10 个文件 · 1710 行
Python 5 个文件 · 1300 行Markdown 3 个文件 · 391 行Text 1 个文件 · 14 行JSON 1 个文件 · 5 行
需关注文件 · 3
payment.py Python · 142 行
硬编码API密钥泄露 · 未声明的自动扣费功能 · 访问环境变量获取用户标识 · API_KEY = "sk_f03aa8f8bbcf79f7aa11c112d904780f22e62add1464e3c41a79600a451eb1d2" · https://skillpay.me
skill-card.md Markdown · 62 行
https://clawhub.ai/user/shenmeng · https://clawhub.ai/shenmeng/skills/shenmeng-self-evolution-engine
requirements.txt Text · 14 行
依赖包无版本锁定
其他文件 · evolution_generator.py · version_manager.py · error_analyzer.py · performance_monitor.py · architecture.md · SKILL.md +1

安全亮点

skill-card.md 已知风险部分明确记录了 API 密钥暴露、自动扣费、权限路径等风险
进化应用流程要求人类审核后确认(--confirm 参数)
版本回滚前自动创建备份,支持一键回滚
错误分析器对日志文件的操作在声明的数据目录范围内