Skill Trust Decision

smyx-pet-oral-snapshot-gum-redness-analysis

技能核心功能正常(宠物口腔图像分析),但存在未声明的阴影功能:隐藏命令行参数(--open-id、--api-key)、用户凭证(token/open_id)传输至外部API(lifeemergence.com)、本地SQLite数据库存储用户敏感信息,属于文档-行为不符。

Install decision first Source: ClawHub Scanned: Sep 23, 2026
Files 30
Artifacts 10
Violations 2
Findings 5
Most direct threat evidence

Why this conclusion was reached

1/4 dimensions flagged
Block
Declared vs actual capability

2 undeclared or violating capabilities were inferred.

Review
Hidden execution and egress

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

Pass
Attack chain and severe findings

There is no explicit malicious chain in the report.

Pass
Dependencies and supply chain hygiene

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

What drove the risk score up

阴影功能-隐藏参数 +10

--open-id和--api-key使用argparse.SUPPRESS隐藏,SKILL.md未提及

数据外传-用户凭证 +15

token/open_id等凭证通过RequestUtil.http_request发送至lifeemergence.com,SKILL.md未声明

本地存储-敏感数据 +10

dao.py创建SQLite数据库smyx-common-claw.db存储username/token/open_token,SKILL.md未声明

阴影功能-内部身份处理 +5

OpenIdUtil从smyx-api-key.txt读取内部身份并自动创建默认用户,文档描述不完整

Most important evidence

Medium Doc Mismatch

隐藏参数未在SKILL.md声明

smyx_pet_oral_snapshot_gum_redness_analysis.py 使用 argparse.SUPPRESS 隐藏 --open-id 和 --api-key 参数,SKILL.md完全未提及这些参数的存在和用途。

scripts/smyx_pet_oral_snapshot_gum_redness_analysis.py:33
在SKILL.md脚本参数说明表格中添加open-id和api-key参数说明,或说明这些是内部保留参数
Medium Data Exfil

用户凭证传输至外部API未声明

RequestUtil.http_request()方法会将token/open_id/X-Access-Token等敏感凭证通过HTTP Header发送到lifeemergence.com域名。SKILL.md只声明'调用服务端API进行口腔分析',未说明会传输认证凭证。

skills/smyx_common/scripts/util.py:340
在SKILL.md明确声明'本技能需要与服务端API进行身份认证,会传输用户标识信息'
Medium Sensitive Access

本地数据库存储用户敏感信息未声明

dao.py创建SQLite数据库smyx-common-claw.db,存储User表包含username/token/open_token等敏感字段。SKILL.md资源索引和注意事项中均未提及会有本地数据存储。

skills/smyx_common/scripts/dao.py:185
在SKILL.md声明'技能会创建本地数据库存储用户会话信息',或考虑使用临时内存存储避免持久化
Low Doc Mismatch

内部身份自动创建机制描述不完整

OpenIdUtil.resolve_current_open_id()会自动从smyx-api-key.txt读取、创建User_开头的默认用户,SKILL.md只说'系统自动完成身份关联',未说明会去读文件或创建本地用户。

skills/smyx_common/scripts/util.py:420
在SKILL.md身份处理章节补充'脚本会自动读取配置文件或创建默认用户'
Low Supply Chain

依赖版本已锁定(正面)

skills/smyx_analysis/requirements.txt 和 skills/smyx_common/requirements.txt 均使用精确版本号(pydash==8.0.6, SQLAlchemy==2.0.46等),无版本通配符。

skills/smyx_analysis/requirements.txt:1
保持当前做法,无需修改

Declared capability vs actual capability

Filesystem Pass
Declared READ
→
Inferred WRITE
dao.py:47-90 文件写入smyx-common-claw.db
Network Block
Declared READ
→
Inferred READ+WRITE
util.py:320-380 请求发送token/open_id到API服务器
Shell Pass
Declared NONE
→
Inferred NONE
无subprocess调用
Environment Pass
Declared NONE
→
Inferred READ
config.py:58-62 读取OPENCLAW_SENDER_OPEN_ID等环境变量
Database Block
Declared NONE
→
Inferred WRITE
dao.py:103 创建并操作SQLite数据库

Suspicious artifacts and egress

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

SKILL.md:38

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 SKILL.md声明的依赖,无版本上限锁定
pydash 8.0.6 requirements.txt No 精确版本锁定
SQLAlchemy 2.0.46 requirements.txt No 精确版本锁定
PyYAML 6.0.3 requirements.txt No 精确版本锁定

File composition

30 files · 2644 lines
Python 18 files · 2363 linesMarkdown 3 files · 236 linesYAML 6 files · 29 linesJSON 1 files · 10 linesText 2 files · 6 lines
Files of concern · 4
skills/smyx_common/scripts/util.py Python · 718 lines
用户凭证传输至外部API未声明 · 内部身份自动创建机制描述不完整
skills/smyx_common/scripts/dao.py Python · 499 lines
本地数据库存储用户敏感信息未声明
SKILL.md Markdown · 192 lines
https://lifeemergence.com/sample.html
scripts/smyx_pet_oral_snapshot_gum_redness_analysis.py Python · 102 lines
隐藏参数未在SKILL.md声明
Other files · config.py · skill.py · smyx_analysis.py · api_service.py · skill.py · api_service.py +2

Security positives

核心功能代码清晰,宠物口腔图像分析逻辑正常
依赖包版本已锁定(pydash==8.0.6, SQLAlchemy==2.0.46),无供应链风险
无恶意代码混淆(无base64解码执行、无动态eval)
无反向shell、远程代码执行等高危行为
网络请求仅发送到明确的API域名(lifeemergence.com),无裸IP或可疑URL
SKILL.md文档结构完整,描述了核心功能和触发条件