Why this conclusion was reached
3/4 dimensions flagged Block Declared vs actual capability 2 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 6 attack-chain steps and 2 severe findings.
Review Dependencies and supply chain hygiene 2 dependency or supply-chain issues need attention.
Attack Chain
01 用户通过 SKILL.md 了解服务为合法OCR工具 Entry · SKILL.md:1
02 用户上传银行回单/发票等财务文件进行分析 Escalation · scripts/api_client.py:138
03 文件通过 POST 请求发送至外部 IP 8.135.62.13:5000 Impact · scripts/api_client.py:173
04 攻击者获取财务数据(账号、交易金额、交易对手) Impact · 外部服务器
05 自动升级机制下载并覆盖技能文件 Escalation · scripts/updater.py:97
06 攻击者通过升级通道植入恶意代码 Impact · 外部服务器
What drove the risk score up
硬编码外部IP服务器 +20
SKILL.md:3等多处硬编码 8.135.62.13:5000,无域名,声称合法服务但使用裸IP可疑
财务票据数据外传 +15
用户银行回单、发票等敏感财务文件通过 POST 请求发送至外部IP,无明确数据保护声明
自动升级可覆盖文件 +10
updater.py 支持从远程下载并覆盖当前技能文件,无代码签名验证
API Key加密方案弱 +5
config_manager.py 使用 machine_id 派生密钥,攻击者若知机器信息可解密
第三方依赖无版本锁定 +5
requests、cryptography 库无版本约束,存在供应链风险
Most important evidence
High Data Exfil
财务票据数据发送至外部IP
用户上传的银行回单、发票、对账单等敏感财务文件通过 POST 请求发送至硬编码IP 8.135.62.13:5000。SKILL.md未明确说明数据流向和保护措施,财务数据外泄风险高。
scripts/api_client.py:24 使用域名而非裸IP;明确数据存储和处理政策;增加端到端加密
High Supply Chain
自动升级机制无代码签名验证
updater.py 从 ClawHub 下载 ZIP 包并直接解压覆盖当前技能文件,未验证签名或哈希。攻击者若入侵下载源或中间人攻击可植入恶意代码。
scripts/updater.py:97 实现代码签名验证;使用 HTTPS + 证书 pinning;添加更新包哈希校验
Medium Credential Theft
API Key加密方案依赖机器信息
config_manager.py 使用 platform.node() 和 getpass.getuser() 派生加密密钥。攻击者若获取机器名和用户名可本地解密 API Key。
scripts/config_manager.py:38 使用更强密钥派生函数(如 PBKDF2);增加用户自定义密码保护
Medium Doc Mismatch
硬编码IP替代域名不合常规
SKILL.md 多次出现硬编码IP 8.135.62.13 而非域名。合法商业服务通常使用域名便于维护和 CDN 加速,裸IP常见于临时或规避检测场景。
SKILL.md:3 要求使用域名并验证 TLS 证书
Low Supply Chain
第三方依赖无版本锁定
requirements.txt 或依赖声明中 requests、cryptography 等库无版本约束,可能引入恶意或漏洞版本。
scripts/api_client.py:14 在 requirements.txt 中锁定版本,如 requests>=2.28.0,<3.0.0
Declared capability vs actual capability
Filesystem Block
Declared READ
→ Inferred WRITE
scripts/updater.py:104 shutil.copytree 覆盖技能目录文件 Network Block
Declared READ
→ Inferred WRITE
scripts/api_client.py:24 所有接口调用 POST 到 8.135.62.13:5000 Shell Pass
Declared NONE
→ Inferred NONE
未发现直接 shell 执行
Suspicious artifacts and egress
High IP Address
8.135.62.13 SKILL.md:3
Medium External URL
http://8.135.62.13:5000/AIService/experience/page SKILL.md:3
Medium External URL
http://8.135.62.13:5000/ SKILL.md:67
Medium External URL
http://8.135.62.13:5000/AIService backup/v1.0.0_20260612_180227/scripts/api_client.py:25
Medium External URL
http://8.135.62.13:5000/static/skills/yqzl-ai-service/latest.json backup/v1.0.0_20260612_180227/scripts/updater.py:26
Medium External URL
https://wry-manatee-359.convex.site/api/v1/download?slug=yqzl-ai-service scripts/updater.py:26
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
| requests | * | pip | No | 无版本锁定 |
| cryptography | * | pip | No | 无版本锁定 |
File composition
18 files · 3534 lines Python 9 files · 2891 linesMarkdown 3 files · 431 linesJSON 2 files · 206 linesOther 3 files · 3 linesText 1 files · 3 lines
Files of concern · 6
scripts/api_client.py Python · 1110 lines
财务票据数据发送至外部IP · 第三方依赖无版本锁定
SKILL.md Markdown · 183 lines
硬编码IP替代域名不合常规 · 8.135.62.13 · http://8.135.62.13:5000/AIService/experience/page · http://8.135.62.13:5000/
scripts/updater.py Python · 347 lines
自动升级机制无代码签名验证 · https://wry-manatee-359.convex.site/api/v1/download?slug=yqzl-ai-service
backup/v1.0.0_20260612_180227/scripts/updater.py Python · 305 lines
http://8.135.62.13:5000/static/skills/yqzl-ai-service/latest.json
backup/v1.0.0_20260612_180227/scripts/api_client.py Python · 227 lines
http://8.135.62.13:5000/AIService
scripts/config_manager.py Python · 128 lines
API Key加密方案依赖机器信息
Other files · updater.py · async_result.json · api_client.py · SKILL.md · SKILL.md · config_manager.py
18 files · 128.3 KB · 3534 lines
Python 9f · 2891LMarkdown 3f · 431LJSON 2f · 206LOther 3f · 3LText 1f · 3L
├─
▾
📁
backup
│ ├─
▾
📁
v1.0.0_20260612_180227
│ │ ├─
▾
📁
scripts
│ │ │ ├─
🐍
api_client.py
Python
227L · 7.1 KB
│ │ │ ├─
🐍
config_manager.py
Python
121L · 3.8 KB
│ │ │ └─
🐍
updater.py
Python
305L · 9.4 KB
│ │ ├─
📝
SKILL.md
Markdown
124L · 4.6 KB
│ │ └─
📄
version
1L · 5 B
│ └─
▾
📁
v1.0.1_20260612_182622
│ ├─
▾
📁
scripts
│ │ ├─
🐍
api_client.py
Python
227L · 7.1 KB
│ │ ├─
🐍
config_manager.py
Python
121L · 3.8 KB
│ │ └─
🐍
updater.py
Python
305L · 9.4 KB
│ ├─
📝
SKILL.md
Markdown
124L · 4.6 KB
│ └─
📄
version
1L · 5 B
├─
▾
📁
scripts
│ ├─
🐍
api_client.py
Python
1110L · 44.3 KB
│ ├─
🐍
config_manager.py
Python
128L · 4.1 KB
│ └─
🐍
updater.py
Python
347L · 10.5 KB
├─
📝
SKILL.md
Markdown
183L · 11.9 KB
├─
📋
async_result.json
JSON
200L · 7.3 KB
├─
📄
output.txt
Text
3L · 227 B
├─
📋
result.json
JSON
6L · 244 B
└─
📄
version
1L · 6 B
Security positives
API Key 本地加密存储(虽方案较弱但有加密意识)
升级前有备份机制
支持游客体验模式无需 API Key(适合测试)
代码结构清晰,主要功能正常