Skill Trust Decision

smyx-environmental-anomaly-analysis

SKILL.md 声明仅做视频分析,但代码实际包含完整的用户身份管理系统(注册、凭证存储、API登录),存在文档欺骗和未声明的敏感操作

Install decision first Source: ClawHub Scanned: 23 days ago
Files 29
Artifacts 10
Violations 3
Findings 5
Most direct threat evidence
01
用户调用技能分析畜禽舍视频 Entry · SKILL.md
02
OpenIdUtil 自动初始化用户身份,创建或读取本地数据库 Escalation · scripts/smyx_environmental_anomaly_analysis.py
03
自动调用 /sys/phoneLogin 注册用户并获取凭证 Escalation · skills/smyx_common/scripts/util.py

Why this conclusion was reached

2/4 dimensions flagged
Block
Declared vs actual capability

3 undeclared or violating capabilities were inferred.

Review
Hidden execution and egress

10 lower-risk artifacts were extracted and still need context.

Block
Attack chain and severe findings

The report includes 4 attack-chain steps and 2 severe findings.

Pass
Dependencies and supply chain hygiene

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

Attack Chain

01
用户调用技能分析畜禽舍视频

Entry · SKILL.md:1

02
OpenIdUtil 自动初始化用户身份,创建或读取本地数据库

Escalation · scripts/smyx_environmental_anomaly_analysis.py:68

03
自动调用 /sys/phoneLogin 注册用户并获取凭证

Escalation · skills/smyx_common/scripts/util.py:343

04
凭证(token/open_token)持久化到本地 SQLite 数据库

Impact · skills/smyx_common/scripts/dao.py:133

What drove the risk score up

文档欺骗 - 阴影功能 +20

SKILL.md 仅声明视频分析功能,但代码实现完整的用户身份管理系统(UserDao、User模型、自动注册)

凭证持久化存储 +10

token/openToken 存储在本地 SQLite 数据库,未在文档中声明

自动用户注册 +8

自动调用 /sys/phoneLogin API 注册用户,未在文档中声明

依赖无版本锁定 +4

requests>=2.28.0 无上限版本锁定

Most important evidence

High Doc Mismatch

文档声明与实际能力严重不符

SKILL.md 仅声明畜禽舍视频分析和环境传感器数据处理功能,但代码实际实现完整的用户身份管理系统,包括 UserDao、User 模型、自动注册用户到外部 API、凭证本地持久化等,与声明用途无关的阴影功能

skills/smyx_common/scripts/dao.py:133
如用户身份管理非必需功能,应移除相关代码;如为必需,应在 SKILL.md 中明确声明
High Credential Theft

自动注册用户并存储凭证

代码在运行时自动调用 /sys/phoneLogin API 注册用户,并将 token 和 open_token 持久化到本地 SQLite 数据库。这些凭证与外部服务关联,未在文档中声明

skills/smyx_common/scripts/util.py:343
明确告知用户此行为,或提供退出机制
Medium Sensitive Access

访问内部身份文件

OpenIdUtil.get_api_key_file_open_id() 读取 data/smyx-api-key.txt 中的内部身份值,这是未声明的敏感文件访问

skills/smyx_common/scripts/util.py:300
在文档中声明此文件访问行为
Medium Supply Chain

依赖包无版本锁定

requests>=2.28.0 无上限版本锁定,存在依赖劫持风险

SKILL.md:1
锁定具体版本,如 requests==2.31.0
Low Doc Mismatch

注释掉的可疑代码

skills/smyx_common/scripts/skill.py 中存在被注释的 subprocess 调用(ai_chat 方法),虽未执行但表明可能具备远程命令执行能力

skills/smyx_common/scripts/skill.py:30
移除未使用的代码,或明确说明其用途

Declared capability vs actual capability

Network Pass
Declared READ
Inferred READ
代码调用外部API进行视频分析和用户认证
Filesystem Block
Declared NONE
Inferred WRITE
skills/smyx_common/scripts/dao.py:94-98 创建和写入本地 SQLite 数据库
Database Block
Declared NONE
Inferred WRITE
skills/smyx_common/scripts/dao.py:133-138 UserDao 创建 sys_user 表存储用户凭证
Environment Block
Declared NONE
Inferred READ
skills/smyx_common/scripts/config.py:182-190 读取 OPENCLAW_SENDER_OPEN_ID、FEISHU_OPEN_ID 等环境变量

Suspicious artifacts and egress

Medium External URL
https://lifeemergence.com/sample.html

SKILL.md:29

Medium External URL
http://192.168.1.234:9601/smyx-open-api

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

Medium External URL
http://192.168.1.234:4100

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

Medium External URL
http://192.168.1.234:7070/jeecg-boot-xzgz

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

Medium External URL
https://livemonitortest.lifeemergence.com/smyx-open-api

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

Medium External URL
http://livemonitortest.lifeemergence.com

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

Medium External URL
https://healthtest.lifeemergence.com/jeecg-boot-xzgz

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

Medium External URL
https://lifeemergence.com/jeecg-boot-xzgz

skills/smyx_common/scripts/config.yaml:4

Medium External URL
https://open.lifeemergence.com/smyx-open-api

skills/smyx_common/scripts/config.yaml:5

Medium External URL
http://livemonitor.lifeemergence.com

skills/smyx_common/scripts/config.yaml:6

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
requests >=2.28.0 pip No 无上限版本锁定
pydash 8.0.6 pip No
SQLAlchemy 2.0.46 pip No
yaml 6.0.3 pip No

File composition

29 files · 2699 lines
Python 18 files · 2363 linesMarkdown 3 files · 301 linesYAML 6 files · 29 linesText 2 files · 6 lines
Files of concern · 4
skills/smyx_common/scripts/util.py Python · 718 lines
自动注册用户并存储凭证 · 访问内部身份文件
skills/smyx_common/scripts/dao.py Python · 499 lines
文档声明与实际能力严重不符
SKILL.md Markdown · 262 lines
依赖包无版本锁定 · https://lifeemergence.com/sample.html
skills/smyx_common/scripts/skill.py Python · 85 lines
注释掉的可疑代码
Other files · config.py · skill.py · smyx_analysis.py · smyx_environmental_anomaly_analysis.py · api_service.py · api_service.py +2

Security positives

代码结构清晰,模块化设计良好
使用 SQLAlchemy ORM 而非直接 SQL 拼接,降低 SQL 注入风险
数据库路径强制重定向到工作区 data 目录,避免污染其他位置
配置文件通过 YAML 管理,易于审计
API 响应包含 success 校验机制