安全决策报告

package-detection-analysis

合法的包裹检测云分析技能,核心功能为调用外部AI API分析监控图像/视频,但存在本地凭证存储、环境变量读取和未声明的调试模式等中等风险。

安装决策优先 来源: ClawHub 扫描时间: 2026/8/27
文件 30
IOC 12
越权项 2
发现 6

为什么得出这个结论

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

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

复核
隐藏执行与外联

提取到 12 个一般风险产物,需要结合上下文判断。

通过
攻击链与高危发现

没有形成明确的恶意路径。

通过
依赖与供应链卫生

依赖结构存在,但暂未看到明显高危告警。

风险分是怎么被拉高的

未声明的本地凭证存储 +10

skill-card.md 已知风险提到本地存储 token,但 SKILL.md 完全未提及,文档欺骗 +8

读取多个环境变量 +5

读取 OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID,SKILL.md 未声明

调试日志泄露敏感数据 +5

is_debug() 为 True 时打印完整 HTTP 请求/响应(包含 token 和 username)

最关键的证据

中危 文档欺骗

SKILL.md 与 skill-card.md 存在信息不对称

SKILL.md 仅描述包裹检测功能,但 skill-card.md 已知风险(Known Risks)明确提到:本技能静默管理云账户身份并将令牌存储在本地工作区数据库。SKILL.md 完全未声明这一行为。

skill-card.md:18
SKILL.md 应补充说明本技能会在本地 SQLite 数据库(data/smyx-common-claw.db)中存储云账户身份令牌。
中危 敏感访问

未声明的环境变量读取

skills/smyx_common/scripts/config.py 在 ConstantEnum.init() 中读取 OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID 环境变量,用于设置内部身份标识。SKILL.md 未声明这些环境变量访问行为。

skills/smyx_common/scripts/config.py:114
在 SKILL.md 中声明本技能读取的环境变量及其用途。
中危 数据外泄

监控图片/视频被发送至外部云服务

用户提供的监控图像或视频文件会通过 multipart/form-data POST 到 open.lifeemergence.com AI 分析接口,media 会被云服务存储和处理。SKILL.md 中仅笼统提到'云端 API 查询',未明确说明用户上传的监控画面会被发送到外部。skill-card.md 明确列为已知风险。

skills/smyx_analysis/scripts/skill.py:50
在 SKILL.md 前置准备部分明确声明:所有上传的图片/视频将被发送至 lifeemergence.com 云服务,建议用户不要上传含个人隐私或高度敏感的监控画面。
低危 供应链

依赖包无版本上限锁定

SKILL.md 声明 requests>=2.28.0(无上限),smyx_analysis 和 smyx_common 的 requirements.txt 使用 pydash==8.0.6、SQLAlchemy==2.0.46、PyYAML==6.0.3(精确版本)。requests 无上限可能引入依赖混淆风险。

SKILL.md:65
为 requests 设置版本上限,如 requests>=2.28.0,<2.32.0。
低危 凭证窃取

调试模式可能泄露敏感凭证

skills/smyx_common/scripts/util.py 中 is_debug() 在 Windows 或非 Linux 平台返回 True,开启后会将完整 HTTP 请求/响应打印到 stdout,包含 Authorization、X-Access-Token 等凭证信息。如果在日志聚合环境中使用,可能造成凭证泄露。

skills/smyx_common/scripts/util.py:33
在生产环境将 is_debug 强制设为 False;调试模式下对 headers 中的 token 值做脱敏处理(代码已有部分脱敏但不完整)。
低危 文档欺骗

SKILL.md 包含无关描述内容

SKILL.md 在技能概览部分包含一段关于帕金森病(Parkinson's disease)患者运动特征监测的描述,明显与包裹检测功能无关,可能是从模板复制未清理的残留内容。

SKILL.md:13
清理 SKILL.md 中无关的医疗描述内容,保持文档与技能功能一致。

声明能力 vs 实际能力

文件系统 通过
声明 READ
→
推断 READ
scripts/package_detection_analysis.py:42-50 读取本地图片/视频文件
网络访问 通过
声明 READ
→
推断 READ+WRITE
skills/smyx_common/scripts/util.py:385 POST 图片到 open.lifeemergence.com
环境变量 阻止
声明 NONE
→
推断 READ
skills/smyx_common/scripts/config.py:114-118 读取 OPENCLAW_SENDER_OPEN_ID 等环境变量
数据库 阻止
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/dao.py 创建/读写 SQLite 存储用户 token
命令执行 通过
声明 NONE
→
推断 NONE
无 subprocess/eval 调用

可疑产物与外联

中危 外部 URL
https://lifeemergence.com/sample.html

SKILL.md:34

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

skill-card.md:9

中危 外部 URL
https://clawhub.ai/18072937735/skills/smyx-package-detection-analysis

skill-card.md:39

中危 外部 URL
http://192.168.1.234:9601/smyx-open-api

skills/smyx_common/scripts/config-dev.yaml:2

中危 外部 URL
http://192.168.1.234:4100

skills/smyx_common/scripts/config-dev.yaml:3

中危 外部 URL
http://192.168.1.234:7070/jeecg-boot-xzgz

skills/smyx_common/scripts/config-dev.yaml:4

中危 外部 URL
https://livemonitortest.lifeemergence.com/smyx-open-api

skills/smyx_common/scripts/config-test.yaml:2

中危 外部 URL
http://livemonitortest.lifeemergence.com

skills/smyx_common/scripts/config-test.yaml:3

中危 外部 URL
https://healthtest.lifeemergence.com/jeecg-boot-xzgz

skills/smyx_common/scripts/config-test.yaml:4

中危 外部 URL
https://lifeemergence.com/jeecg-boot-xzgz

skills/smyx_common/scripts/config.yaml:4

中危 外部 URL
https://open.lifeemergence.com/smyx-open-api

skills/smyx_common/scripts/config.yaml:5

中危 外部 URL
http://livemonitor.lifeemergence.com

skills/smyx_common/scripts/config.yaml:6

依赖与供应链

包名版本来源漏洞备注
requests >=2.28.0 (无上限) pip 否 SKILL.md 声明宽松版本,smyx_common 未在 requirements.txt 中列出
pydash 8.0.6 pip 否 精确版本锁定
SQLAlchemy 2.0.46 pip 否 精确版本锁定
PyYAML 6.0.3 pip 否 精确版本锁定

文件构成

30 个文件 · 2666 行
Python 18 个文件 · 2357 行Markdown 4 个文件 · 274 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行
需关注文件 · 5
skills/smyx_common/scripts/util.py Python · 718 行
调试模式可能泄露敏感凭证
skills/smyx_common/scripts/config.py Python · 399 行
未声明的环境变量读取
SKILL.md Markdown · 174 行
依赖包无版本上限锁定 · SKILL.md 包含无关描述内容 · https://lifeemergence.com/sample.html
skills/smyx_analysis/scripts/skill.py Python · 175 行
监控图片/视频被发送至外部云服务
skill-card.md Markdown · 60 行
SKILL.md 与 skill-card.md 存在信息不对称 · https://clawhub.ai/user/18072937735 · https://clawhub.ai/18072937735/skills/smyx-package-detection-analysis
其他文件 · dao.py · smyx_analysis.py · package_detection_analysis.py · api_service.py · skill.py · api_service.py +1

安全亮点

未发现 subprocess/eval/exec 等代码执行调用
未发现 base64 解码、字符串动态执行等混淆技术
未发现对 ~/.ssh、~/.aws、.env 等典型敏感路径的直接访问
未发现明显的反向 shell 或 C2 通信模式
数据库路径强制重定向到工作区共享 data 目录,避免技能私有化数据库
依赖包使用精确版本锁定(smyx_analysis/smyx_common)
API 请求超时合理设置(120s),有 401 自动重试机制