Skill Trust Decision

smyx-fish-surface-symptom-detection-analysis

Skill performs legitimate fish health analysis but contains undeclared local SQLite database storage of user credentials and silent identity creation that exceeds documented behavior.

Install decision first Source: ClawHub Scanned: 27 days ago
Files 31
Artifacts 12
Violations 2
Findings 4
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

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

Pass
Attack chain and severe findings

There is no explicit malicious chain in the report.

Review
Dependencies and supply chain hygiene

4 dependency or supply-chain issues need attention.

What drove the risk score up

Undeclared local database with credentials +20

SKILL.md does not mention SQLite storage of tokens, open_token, and user data at data/smyx-common-claw.db

Silent identity auto-creation +10

OpenIdUtil automatically generates User_xxxxxx accounts without user knowledge or consent

Undeclared API key file storage +5

data/smyx-api-key.txt stores identity values not mentioned in documentation

Unpinned dependencies +5

requests>=2.28.0 and pydash==8.0.6 lack strict version pins

Most important evidence

Medium Doc Mismatch

Undeclared local SQLite database with credential storage

The skill creates a local SQLite database (data/smyx-common-claw.db) that stores user credentials including username, token, open_token, source, and timestamps. This is not mentioned in SKILL.md.

skills/smyx_common/scripts/dao.py:179
Document local credential storage in SKILL.md under Resource Index, or implement transparent user consent for credential persistence.
Medium Doc Mismatch

Silent auto-creation of synthetic user identities

OpenIdUtil.get_or_create_default_open_id() automatically generates User_xxxxxx identifiers without user knowledge, stores them in the local database, and reuses them across sessions. SKILL.md only states 'system handles identity internally' without explaining this mechanism.

skills/smyx_common/scripts/util.py:230
Disclose synthetic identity generation in SKILL.md, explain why it's necessary, and provide opt-out mechanism.
Low Sensitive Access

Undeclared API key file persistence

The skill reads/writes identity values to data/smyx-api-key.txt without mentioning this in documentation. This file can contain sensitive identifiers.

skills/smyx_common/scripts/util.py:212
Document the smyx-api-key.txt file in Resource Index section of SKILL.md.
Low Supply Chain

Unpinned dependency versions

SKILL.md declares requests>=2.28.0 (loose), while requirements.txt pins pydash==8.0.6 and SQLAlchemy==2.0.46. Loose pinning allows supply chain attacks via version escalation.

SKILL.md:1
Use strict version pinning (requests==2.x.x) in SKILL.md to prevent supply chain attacks.

Declared capability vs actual capability

Filesystem Block
Declared NONE
→
Inferred WRITE
dao.py:179 - creates SQLite DB in workspace data/
Network Pass
Declared READ
→
Inferred READ
RequestUtil sends HTTP to lifeemergence.com
Database Block
Declared NONE
→
Inferred WRITE
dao.py:179 - UserDao stores tokens in SQLite
Environment Pass
Declared NONE
→
Inferred READ
config.py:76 - reads OPENCLAW_SENDER_OPEN_ID, FEISHU_OPEN_ID

Suspicious artifacts and egress

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

SKILL.md:34

Medium External URL
https://clawhub.ai/user/18072937735

skill-card.md:9

Medium External URL
https://clawhub.ai/18072937735/skills/smyx-fish-surface-symptom-detection-analysis

skill-card.md:42

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 (SKILL.md) No Loose version pinning allows potential supply chain attack
pydash 8.0.6 requirements.txt No Strictly pinned
SQLAlchemy 2.0.46 requirements.txt No Strictly pinned
PyYAML 6.0.3 requirements.txt No Strictly pinned

File composition

31 files · 2777 lines
Python 18 files · 2363 linesMarkdown 4 files · 374 linesYAML 6 files · 29 linesText 2 files · 6 linesJSON 1 files · 5 lines
Files of concern · 4
skills/smyx_common/scripts/util.py Python · 718 lines
Silent auto-creation of synthetic user identities · Undeclared API key file persistence
skills/smyx_common/scripts/dao.py Python · 499 lines
Undeclared local SQLite database with credential storage
SKILL.md Markdown · 194 lines
Unpinned dependency versions · https://lifeemergence.com/sample.html
skill-card.md Markdown · 60 lines
https://clawhub.ai/user/18072937735 · https://clawhub.ai/18072937735/skills/smyx-fish-surface-symptom-detection-analysis
Other files · config.py · skill.py · api_doc.md · smyx_analysis.py · smyx_fish_surface_symptom_detection_analysis.py · api_service.py +2

Security positives

No reverse shell, C2 communication, or credential exfiltration to third parties
No base64 obfuscation or anti-analysis techniques detected
No access to ~/.ssh, ~/.aws, or other sensitive credential paths
Network requests go to legitimate lifeemergence.com domains (verified in config.yaml)
Fish health analysis functionality matches documentation
Uses standard HTTP requests library without suspicious network patterns
Sensitive tokens are not hardcoded (read from config files)
No curl|bash or wget|sh remote script execution
No eval() or exec() with user-controlled input