samantha
The Samantha skill is an emotional AI companion with legitimate device-integration features, but contains undeclared shell execution, undocumented LAN ping sweeps, and plain-text credential storage — all absent from SKILL.md, creating a doc-to-code mismatch that warrants suspicion.
为什么得出这个结论
2/4 个维度触发发现 1 项声明之外的能力或越权行为。
提取到 1 个高危 IOC 或外联信号。
没有形成明确的恶意路径。
发现 4 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
scripts/discover_lan.py:19 uses subprocess.run(['ping', ...]) for LAN sweeps — shell:WRITE not declared in SKILL.md
SSDP multicast (239.255.255.250) and ping sweeps of 192.168.31.x are in code but absent from SKILL.md
Xiaomi (mi_user/mi_pass) and Feishu (FEISHU_APP_ID/FEISHU_APP_SECRET) credentials stored in plain JSON with no encryption, not mentioned in docs
openclaw>=1.0.0 and miservice>=0.1.0 have no upper-bound pins; miservice handles auth credentials
read_ppt.py:74 embeds a literal user desktop path from a one-time development run
最关键的证据
Undeclared shell execution via subprocess ping sweep
scripts/discover_lan.py conditionally invokes subprocess.run(['ping', ...]) to sweep 192.168.31.x when SSDP discovery fails. This shell:WRITE capability is not declared anywhere in SKILL.md.
scripts/discover_lan.py:19 LAN device discovery and network probing undocumented
The skill performs SSDP multicast discovery (239.255.255.250:1900) and falls back to ping sweeps of 192.168.31.x. SKILL.md does not mention any network probing capabilities. The xiaoai-speaker SKILL.md documents the miservice integration but not the local network scan.
scripts/discover_lan.py:6 Plain-text credential storage for Xiaomi and Feishu
Xiaomi account credentials (mi_user, mi_pass) and Feishu app credentials (FEISHU_APP_ID, FEISHU_APP_SECRET) are stored in plain-text JSON files (data/xiaoai_config.json) and/or .env files. No encryption, no keyring integration. SKILL.md documents the config format but not the security implications.
skills/xiaoai-speaker/scripts/tts_bridge.py:30 Critical auth dependency miservice has no version cap
requirements.txt pins miservice>=0.1.0 with no upper bound. miservice handles Xiaomi account authentication (username/password). An unconstrained dependency handling credentials poses supply-chain risk.
requirements.txt:15 openclaw framework dependency unpinned
requirements.txt specifies openclaw>=1.0.0 with no upper bound. This is the core framework; an unbounded dependency could pull a breaking or malicious update.
requirements.txt:1 Hardcoded Windows user path in read_ppt.py
read_ppt.py contains a literal hardcoded path 'D:\xuyan\桌面\Samantha\邓小闲koki-寻找Samantha.pptx'. This is a one-time development artifact but leaks a real username and desktop location into the codebase.
read_ppt.py:74 声明能力 vs 实际能力
scripts/memory.py:40 — sqlite3.connect() + write; scripts/personality.py:53 — json.dump() to disk scripts/discover_lan.py:19 — subprocess.run(['ping', '-n', '1', '-w', '200', ip]) scripts/discover_lan.py:6 — UDP sendto SSDP multicast; skills/xiaoai-speaker/scripts/tts_bridge.py — Xiaomi API calls skills/xiaoai-speaker/scripts/tts_bridge.py:30 — os.getenv() reads MI_USER, MI_PASS; scripts/deploy.sh:49 — pip install reads env scripts/memory.py:56-96 — CREATE TABLE + INSERT into relationship.db via sqlite3 可疑产物与外联
239.255.255.250 scripts/discover_lan.py:6
https://docs.openclaw.ai CONTRIBUTING.md:127
https://www.sqlite.org/docs.html CONTRIBUTING.md:129
https://discord.com/invite/clawd CONTRIBUTING.md:139
https://twitter.com/charlie88931442 CONTRIBUTING.md:171
https://img.youtube.com/vi/xeqP4j0-cfc/0.jpg README.md:5
https://youtube.com/shorts/xeqP4j0-cfc?si=H4sY9CP5JTBLD06h README.md:5
https://api.minimaxi.com/v1/t2a_v2 mm-voice-maker/scripts/mm_tts.py:26
http://schemas.openxmlformats.org/presentationml/2006/main read_ppt.py:25
https://open.feishu.cn/open-apis skills/mbti-coach/scripts/feishu_calendar.sh:12
https://your-openclaw-gateway/webhook/shortcut skills/shortcuts-awareness/SKILL.md:101
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| miservice | >=0.1.0 | pip | 否 | Handles Xiaomi auth credentials but has no upper-version cap |
| openclaw | >=1.0.0 | pip | 否 | Core framework, unpinned with no upper bound |
| torch | >=2.0.0 | pip | 否 | Unpinned — large ML dependency with broad attack surface |
| transformers | >=4.35.0 | pip | 否 | Unpinned — HuggingFace package, broad supply-chain surface |
| requests | >=2.31.0 | pip | 否 | Version pinned, well-maintained |
文件构成
README.md