Skill Trust Decision

wenzi-runse

硬编码有效API密钥暴露于源码中,且用户文本发送至腾讯云函数端点无法验证数据是否真正丢弃,存在数据外泄隐患。

Install decision first Source: ClawHub Scanned: 8 days ago
Files 4
Artifacts 6
Violations 1
Findings 4
Most direct threat evidence
01
从源码提取硬编码API密钥 Escalation · scripts/runse.py
02
使用提取的密钥进行未授权API调用 Impact · scripts/runse.py
03
用户提交敏感文本至第三方端点,存在数据留存风险 Impact · scripts/runse.py

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

2 high-risk artifacts or egress signals were extracted.

Block
Attack chain and severe findings

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

Pass
Dependencies and supply chain hygiene

Dependencies are present but no obvious high-risk issue stands out.

Attack Chain

01
从源码提取硬编码API密钥

Escalation · scripts/runse.py:21

02
使用提取的密钥进行未授权API调用

Impact · scripts/runse.py:40

03
用户提交敏感文本至第三方端点,存在数据留存风险

Impact · scripts/runse.py:40

What drove the risk score up

硬编码API密钥暴露 +15

DEFAULT_API_KEY = sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7 硬编码于 scripts/runse.py:21,任何查看源码者均可获取

用户文本发送至第三方端点 +13

所有处理文本POST至腾讯云函数(tencentscf.com),声称'无状态运行丢弃数据'但无技术验证手段

密钥明文本地存储 +5

用户提供的个人密钥以明文JSON存储于 ~/.workbuddy/wenzi-runse-config.json,文档虽有提示但仍为风险

allowed-tools权限声明合理 +-5

filesystem:WRITE(临时文件)、shell:WRITE(运行脚本) 均在文档中声明,使用场景合理

Most important evidence

Medium Supply Chain

硬编码API密钥于源码中

DEFAULT_API_KEY 硬编码为有效格式的sk-密钥,存储于公开源码中。任何获取此技能的用户可提取该密钥用于其他用途,或该密钥被滥用于API配额消耗。

scripts/runse.py:21
将密钥移至环境变量或加密配置,运行时通过环境注入而非源码存储
Medium Data Exfil

文本数据发送至外部端点且无法验证处理

用户提交的文本通过POST请求发送至 https://1257707270-955niawhww.ap-shanghai.tencentscf.com/bailian/chat 。文档声称'云函数无状态运行,处理完立即返回结果并丢弃,不存储原文',但代码中无任何验证机制证明数据实际被丢弃,端点行为完全由第三方控制。

scripts/runse.py:40
1. 明确在文档中声明网络WRITE权限;2. 考虑使用端到端加密或本地处理方案;3. 用户不应提交包含隐私、凭证或商业秘密的文本
Low Credential Theft

用户密钥明文存储于本地

当用户选择保存个人密钥时,密钥以明文JSON格式写入本地配置文件(~/.workbuddy/wenzi-runse-config.json)。虽然代码设置了0o600权限限制其他用户访问,但文件内容本身未加密。

scripts/runse.py:75
使用系统密钥链(如keyring)替代文件存储,或提供加密存储选项
Info Priv Escalation

网络请求权限未在allowed-tools中声明

SKILL.md声明 allowed-tools: [Read, Write, Bash],但代码实际进行了网络请求操作。network:WRITE权限未被声明。

SKILL.md:11
更新 allowed-tools 声明包含网络操作

Declared capability vs actual capability

Filesystem Pass
Declared WRITE
→
Inferred WRITE
scripts/runse.py:89 创建临时文件写入待处理文本
Network Block
Declared NONE
→
Inferred WRITE
scripts/runse.py:40 urllib.request.urlopen 向腾讯云函数POST数据,SKILL.md未声明网络WRITE权限
Shell Pass
Declared WRITE
→
Inferred WRITE
SKILL.md声明Bash工具,脚本通过python3执行命令

Suspicious artifacts and egress

Critical API Key
sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7

scripts/runse.py:21

High API Key
API_KEY = "sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7"

scripts/runse.py:21

Medium External URL
https://1257707270-955niawhww.ap-shanghai.tencentscf.com/bailian/chat

scripts/runse.py:19

Medium External URL
https://1257707270-955niawhww.ap-shanghai.tencentscf.com/v1/models

scripts/runse.py:20

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

skill-card.md:9

Medium External URL
https://clawhub.ai/abcqq1234567/skills/wenzi-runse

skill-card.md:39

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
urllib stdlib Python内置 No 使用Python标准库,无第三方依赖风险

File composition

4 files · 478 lines
Markdown 3 files · 289 linesPython 1 files · 189 lines
Files of concern · 3
SKILL.md Markdown · 115 lines
网络请求权限未在allowed-tools中声明
scripts/runse.py Python · 189 lines
硬编码API密钥于源码中 · 文本数据发送至外部端点且无法验证处理 · 用户密钥明文存储于本地 · sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7 · API_KEY = "sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7" · https://1257707270-955niawhww.ap-shanghai.tencentscf.com/bailian/chat · https://1257707270-955niawhww.ap-shanghai.tencentscf.com/v1/models
skill-card.md Markdown · 59 lines
https://clawhub.ai/user/abcqq1234567 · https://clawhub.ai/abcqq1234567/skills/wenzi-runse
Other files · README.md

Security positives

文档对数据处理有隐私说明(虽无法验证)
脚本逻辑清晰,无明显恶意代码如eval、subprocess注入
未发现凭证收割、环境变量遍历等典型攻击模式
用户密钥保存需要明确确认(--save-key需用户主动触发)
文本长度限制(≥300字)可防止小规模批量处理滥用