安全决策报告

smyx-driver-flushing-sweat-detection-analysis

Skill's core analysis path is legitimate but contains an undocumented subprocess capability with fully commented-out shell execution, suppressed CLI arguments for credentials, and auto-registration API calls that were not declared in SKILL.md.

安装决策优先 来源: ClawHub 扫描时间: 2026/9/14
文件 31
IOC 12
越权项 1
发现 5
最直接的威胁证据

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

复核
依赖与供应链卫生

发现 3 项需要关注的依赖或供应链线索。

风险分是怎么被拉高的

Doc-code mismatch - subprocess capability not declared +20

smyx_common/scripts/skill.py contains fully commented-out subprocess.run() invoking 'openclaw agent' with session-id, thinking, and timeout parameters — a significant undocumented capability.

Hidden credential arguments +10

--api-key and --open-id use argparse.SUPPRESS, hiding them from CLI help while still accepting them. open_id silently falls back to auto-created user identities.

Undeclared auto-registration API +10

RequestUtil.http_request silently POSTs to /sys/phoneLogin with open_id for auto user registration, sending user identity to external API without explicit user consent.

Actual analysis path is legitimate +-10

The running code path (video upload → API → analysis) is clean with no shell execution, no credential theft, and no exfiltration.

Pinned dependencies +-5

All dependencies (pydash==8.0.6, SQLAlchemy==2.0.46, PyYAML==6.0.3) are version-pinned with no known vulnerabilities.

最关键的证据

中危 文档欺骗

Undeclared subprocess execution capability

smyx_common/scripts/skill.py contains a commented-out AgentSkill class with a full subprocess.run() command that invokes 'openclaw agent' with prompt injection risk via the --thinking parameter. This capability is not declared anywhere in SKILL.md.

skills/smyx_common/scripts/skill.py:48
Remove the commented subprocess code entirely or document it in SKILL.md with explicit shell:WRITE permission declaration.
中危 文档欺骗

Hidden credential-bearing CLI arguments

--api-key and --open-id are marked with argparse.SUPPRESS, hiding them from CLI help output. The open_id silently resolves to auto-generated 'User_{6hex}' identifiers without user consent, and the api_key is passed to external APIs. Neither is declared in SKILL.md.

scripts/smyx_driver_flushing_sweat_detection_analysis.py:31
Declare --open-id and --api-key in SKILL.md, or remove argparse.SUPPRESS so users can see what parameters are accepted.
中危 敏感访问

Undeclared auto-registration with identity exfiltration

RequestUtil.http_request silently calls POST /sys/phoneLogin with open_id, auto-registering a generated user identity with the external health API service (lifeemergence.com). This sends user identifiers to a third-party service without explicit declaration in SKILL.md.

skills/smyx_common/scripts/util.py:257
Declare the auto-registration behavior in SKILL.md under the network:WRITE section, and document what user identifiers are sent to external services.
低危 敏感访问

Environment variable reading without declaration

The config system reads OPENCLAW_SENDER_OPEN_ID, OPENCLAW_SENDER_USERNAME, and FEISHU_OPEN_ID from environment variables. This behavior is not declared in SKILL.md's resource declarations.

skills/smyx_common/scripts/config.py:178
Add environment:READ to declared permissions in SKILL.md.
低危 敏感访问

Local SQLite database storing authentication tokens

The UserDao stores user records including token and open_token fields in a local SQLite database (smyx-common-claw.db) under the workspace data directory. While this is a standard pattern, the storage of authentication tokens locally is not documented.

skills/smyx_common/scripts/dao.py:95
Document the local token storage in SKILL.md's privacy section.

声明能力 vs 实际能力

文件系统 通过
声明 NONE
→
推断 READ
skills/smyx_analysis/scripts/skill.py:65 — open(input_path, 'rb') for video file reading
网络访问 通过
声明 READ
→
推断 READ+WRITE
skills/smyx_common/scripts/util.py:257 — POST to /sys/phoneLogin auto-registration API not declared
命令执行 阻止
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/skill.py:48-58 — commented subprocess.run(cmd=['openclaw','agent',...])
数据库 通过
声明 NONE
→
推断 WRITE
skills/smyx_common/scripts/dao.py:71 — SQLite database creation in workspace data dir
环境变量 通过
声明 NONE
→
推断 READ
skills/smyx_common/scripts/config.py:178-185 — reads OPENCLAW_SENDER_OPEN_ID, OPENCLAW_SENDER_USERNAME, FEISHU_OPEN_ID

可疑产物与外联

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

SKILL.md:34

中危 外部 URL
https://clawhub.ai/user/smyx-sunjinhui

skill-card.md:9

中危 外部 URL
https://clawhub.ai/smyx-sunjinhui/skills/smyx-driver-flushing-sweat-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

依赖与供应链

包名版本来源漏洞备注
pydash 8.0.6 pip 否 Version pinned
SQLAlchemy 2.0.46 pip 否 Version pinned
PyYAML 6.0.3 pip 否 Version pinned; yaml in requirements.txt is PyYAML alias

文件构成

31 个文件 · 2720 行
Python 18 个文件 · 2363 行Markdown 4 个文件 · 317 行YAML 6 个文件 · 29 行Text 2 个文件 · 6 行JSON 1 个文件 · 5 行
需关注文件 · 7
skills/smyx_common/scripts/util.py Python · 718 行
Undeclared auto-registration with identity exfiltration
skills/smyx_common/scripts/config.py Python · 399 行
Environment variable reading without declaration
skills/smyx_common/scripts/dao.py Python · 499 行
Local SQLite database storing authentication tokens
SKILL.md Markdown · 178 行
https://lifeemergence.com/sample.html
scripts/smyx_driver_flushing_sweat_detection_analysis.py Python · 102 行
Hidden credential-bearing CLI arguments
skill-card.md Markdown · 59 行
https://clawhub.ai/user/smyx-sunjinhui · https://clawhub.ai/smyx-sunjinhui/skills/smyx-driver-flushing-sweat-detection-analysis
skills/smyx_common/scripts/skill.py Python · 85 行
Undeclared subprocess execution capability
其他文件 · skill.py · smyx_analysis.py · api_doc.md · api_service.py · api_service.py

安全亮点

No active shell execution — subprocess code is fully commented out
No base64, eval(), or obfuscation patterns detected
No direct IP network requests or C2 communication
All Python dependencies are version-pinned (pydash==8.0.6, SQLAlchemy==2.0.46, PyYAML==6.0.3)
No credential harvesting loops or environment variable iteration for sensitive keys
No curl|bash, wget|sh, or remote script execution patterns
No access to ~/.ssh, ~/.aws, .env, or other sensitive host paths
Database operations are confined to the workspace data directory with proper path sanitization
File operations are constrained to the skill's own directory and workspace data
API endpoints resolve to a single legitimate domain (lifeemergence.com/open.lifeemergence.com)