Skill Trust Decision

diet-tracker

diet-tracker技能存在严重的文档欺骗行为:代码实现了未声明的Git自动推送功能,会将用户饮食数据外传到GitHub仓库,属于典型的阴影功能。

Install decision first Source: ClawHub Scanned: 1 day ago
Files 4
Artifacts 1
Violations 3
Findings 4
Most direct threat evidence
01
用户执行diet-tracker技能记录饮食 Entry · SKILL.md
02
调用update_memory.py更新本地日志文件 Escalation · scripts/update_memory.py
03
复制饮食数据到Obsidian同步目录 Escalation · scripts/update_memory.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

1 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.

Review
Dependencies and supply chain hygiene

1 dependency or supply-chain issues need attention.

Attack Chain

01
用户执行diet-tracker技能记录饮食

Entry · SKILL.md:1

02
调用update_memory.py更新本地日志文件

Escalation · scripts/update_memory.py:79

03
复制饮食数据到Obsidian同步目录

Escalation · scripts/update_memory.py:82

04
通过subprocess执行git push将数据推送到GitHub(未声明)

Impact · scripts/update_memory.py:155

What drove the risk score up

文档欺骗/阴影功能 +30

SKILL.md完全未声明Git push行为,但update_memory.py实现了自动git推送

数据外泄 +15

饮食日志自动推送到GitHub,用户不知情的情况下隐私数据外传

供应链风险 +5

requests库无版本锁定

敏感路径访问 +5

访问/root/clawd/USER.md等用户配置文件

Most important evidence

High Doc Mismatch

未声明的Git自动推送功能

update_memory.py实现了完整的Git操作流程(add/commit/push),但SKILL.md对此只字未提。这是典型的阴影功能,用户以为只是在本地记录饮食,实际上数据被推送到了GitHub。

scripts/update_memory.py:147
在SKILL.md中明确声明Git同步功能,或提供配置文件让用户选择是否启用
High Data Exfil

饮食数据自动外传到GitHub

用户的饮食记录会自动推送到/root/clawd/obsidian-vault的Git仓库,涉及个人隐私信息(饮食习惯、热量摄入等)外传。

scripts/update_memory.py:82
移除自动Git推送功能,或添加用户明确授权的确认机制
Medium Supply Chain

requests库无版本锁定

get_food_nutrition.py使用requests库但未指定版本,存在依赖劫持风险。

scripts/get_food_nutrition.py:2
在requirements.txt中锁定版本:requests>=2.31.0
Medium Sensitive Access

访问用户配置文件/root/clawd/USER.md

脚本访问/root/clawd/目录下的USER.md文件,读取身高、体重、年龄、性别、活动水平等敏感个人信息。

scripts/get_food_nutrition.py:36
确保访问范围最小化,不读取与饮食追踪无关的信息

Declared capability vs actual capability

Filesystem Block
Declared READ
Inferred WRITE
scripts/update_memory.py:79 写入memory/目录,:82 复制到obsidian-vault
Shell Block
Declared NONE
Inferred WRITE
scripts/update_memory.py:147-163 通过subprocess执行git命令
Network Block
Declared NONE
Inferred READ
scripts/update_memory.py:147-163 git push外传数据,get_food_nutrition.py:96 调用USDA API
Environment Pass
Declared NONE
Inferred READ
scripts/get_food_nutrition.py:36 通过USER.md间接获取用户信息

Suspicious artifacts and egress

Medium External URL
https://api.nal.usda.gov/fdc/v1/food/search?api_key=DEMO_KEY&query=

scripts/get_food_nutrition.py:96

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
requests * pip No 无版本锁定,存在供应链风险
shutil builtin stdlib No 标准库,安全
subprocess builtin stdlib No 标准库,但用于未声明的Git操作

File composition

4 files · 466 lines
Python 2 files · 342 linesMarkdown 1 files · 113 linesJSON 1 files · 11 lines
Files of concern · 2
scripts/update_memory.py Python · 190 lines
未声明的Git自动推送功能 · 饮食数据自动外传到GitHub
scripts/get_food_nutrition.py Python · 152 lines
requests库无版本锁定 · 访问用户配置文件/root/clawd/USER.md · https://api.nal.usda.gov/fdc/v1/food/search?api_key=DEMO_KEY&query=
Other files · SKILL.md · food_database.json

Security positives

食品数据库采用本地JSON格式,避免网络依赖
USDA API使用DEMO_KEY(公共测试密钥),不会泄露真实凭证
代码结构清晰,主要功能实现正确
有错误处理和异常捕获