smyx-environmental-anomaly-analysis
合法的畜禽养殖环境监测技能,功能与文档基本一致,存在自动身份创建、第三方云端数据发送和隐藏参数等可改进之处,但均为有文档支撑的正常行为,无恶意代码发现。
Why this conclusion was reached
0/4 dimensions flaggedDeclared resources and inferred behavior are broadly aligned.
12 lower-risk artifacts were extracted and still need context.
There is no explicit malicious chain in the report.
Dependencies are present but no obvious high-risk issue stands out.
What drove the risk score up
将视频/传感器数据、open_id 身份和历史报告发送到 lifeemergence.com,虽在 skill-card.md Known Risks 中有披露,但未在 SKILL.md 隐私声明中明确列出具体数据类型
无 open_id 时自动生成 User_xxx 并持久化到 SQLite,--open-id 参数隐藏(argparse.SUPPRESS),用户无感知。SKILL.md 有基本描述但粒度不足
Token 缺失时自动 POST /sys/phoneLogin 注册(silent=1),实现云端账户自动关联,文档未明确说明
API 端点硬编码在 config.yaml(prod 环境指向 lifeemergence.com),完全依赖第三方服务可用性
无 base64/eval 混淆、无远程 shell 执行、无凭证遍历、无敏感路径访问、依赖已版本锁定
Most important evidence
完全依赖第三方云服务(lifeemergence.com)
API 端点硬编码在 config.yaml prod 环境:base_url_health=https://lifeemergence.com/jeecg-boot-xzgz, base_url_open_api=https://open.lifeemergence.com/smyx-open-api。视频/传感器数据、open_id 身份信息均发送至该服务。
skills/smyx_common/scripts/config.yaml:2 静默身份创建未充分告知
OpenIdUtil.resolve_current_open_id() 在无 open_id 时自动生成 User_xxx 并持久化到 SQLite,--open-id 参数使用 argparse.SUPPRESS 隐藏。SKILL.md 仅模糊提及"系统自动处理",未说明会创建本地数据库记录。
skills/smyx_common/scripts/util.py:258 静默登录注册未声明
当本地无 Token 且无 open_id 时,RequestUtil.http_request() 自动调用 /sys/phoneLogin 进行静默注册(silent=1),将 open_id 用作手机号参数向云端注册账户。
skills/smyx_common/scripts/util.py:306 读取多个环境变量
config.py 的 ConstantEnum.init() 读取 OPENCLAW_SENDER_OPEN_ID、OPENCLAW_SENDER_USERNAME、FEISHU_OPEN_ID 等环境变量,并写入 CURRENT__OPEN_ID、CURRENT__USER_NAME。这些值会被用于 API 请求中。
skills/smyx_common/scripts/config.py:168 本地数据库存储凭证
UserDao 将 token 和 open_token 明文存储在 SQLite 数据库(workspace data 目录下的 shared.db)中。
skills/smyx_common/scripts/dao.py:76 隐私声明数据覆盖不足
SKILL.md 隐私声明称"仅采集与畜禽舍环境异常联动直接相关的图像/视频/传感器数据",但实际还会发送 pnaUserName(身份标识)、tenantCode 等内部参数到云端,这些在隐私声明中未提及。
skills/smyx_common/scripts/util.py:360 隐藏参数 --api-key 和 --open-id
--api-key 和 --open-id 使用 argparse.SUPPRESS 隐藏,不会在帮助信息中显示。这是 API 客户端的常见做法,但结合静默身份创建,审查难度增加。
scripts/smyx_environmental_anomaly_analysis.py:44 Declared capability vs actual capability
SKILL.md:通过 --input 读取本地文件; skills/smyx_analysis/scripts/skill.py:64 open(input_path,'rb') SKILL.md:声明通过 API 服务完成分析请求; skills/smyx_common/scripts/util.py:344 POST 请求发送视频/数据/身份到外部 API,实质是网络 WRITE SKILL.md 未声明本地数据库; skills/smyx_common/scripts/dao.py:SQLite 存储用户 token/open_token; skills/smyx_common/scripts/util.py:285 将云端 token 写入本地库 skills/smyx_common/scripts/config.py:读取 OPENCLAW_SENDER_OPEN_ID, OPENCLAW_SENDER_USERNAME, FEISHU_OPEN_ID 无 subprocess/shell 执行 Suspicious artifacts and egress
https://lifeemergence.com/sample.html SKILL.md:29
https://clawhub.ai/user/18072937735 skill-card.md:9
https://clawhub.ai/18072937735/skills/smyx-environmental-anomaly-analysis skill-card.md:35
http://192.168.1.234:9601/smyx-open-api skills/smyx_common/scripts/config-dev.yaml:2
http://192.168.1.234:4100 skills/smyx_common/scripts/config-dev.yaml:3
http://192.168.1.234:7070/jeecg-boot-xzgz skills/smyx_common/scripts/config-dev.yaml:4
https://livemonitortest.lifeemergence.com/smyx-open-api skills/smyx_common/scripts/config-test.yaml:2
http://livemonitortest.lifeemergence.com skills/smyx_common/scripts/config-test.yaml:3
https://healthtest.lifeemergence.com/jeecg-boot-xzgz skills/smyx_common/scripts/config-test.yaml:4
https://lifeemergence.com/jeecg-boot-xzgz skills/smyx_common/scripts/config.yaml:4
https://open.lifeemergence.com/smyx-open-api skills/smyx_common/scripts/config.yaml:5
http://livemonitor.lifeemergence.com skills/smyx_common/scripts/config.yaml:6
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| pydash | 8.0.6 | pip | No | 版本锁定,无已知漏洞 |
| SQLAlchemy | 2.0.46 | pip | No | 版本锁定,无已知漏洞 |
| PyYAML | 6.0.3 | pip | No | 版本锁定(修复了 CVE-2020-14343) |
| requests | >=2.28.0 | pip | No | 范围锁定,可接受 |
File composition
skills/smyx_common/scripts/util.py skills/smyx_common/scripts/config.py skills/smyx_common/scripts/dao.py SKILL.md scripts/smyx_environmental_anomaly_analysis.py skill-card.md