安全决策报告

Dpetclaw 龙虾守护宠物

Dpetclaw 龙虾守护宠物是一个合法的桌面 AI 语音助手,具有声纹认证、语音识别和 OpenClaw 集成功能。代码审查未发现恶意行为,但存在轻微配置瑕疵(硬编码路径、shell=True 使用)

安装决策优先 来源: ClawHub 扫描时间: 2026/4/6
文件 29
IOC 77
越权项 0
发现 4

为什么得出这个结论

0/4 个维度触发
通过
声明与实际能力

声明资源与推断能力基本一致。

复核
隐藏执行与外联

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

通过
攻击链与高危发现

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

复核
依赖与供应链卫生

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

风险分是怎么被拉高的

subprocess.Popen 使用 shell=True +10

app.py:694 和 openclaw_client.py:65 使用 shell=True 执行本地脚本,存在潜在命令注入风险但 context 为受信任的本地启动脚本

硬编码 Windows 用户路径 +5

config.py 中包含 C:\Users\super\... 硬编码路径,为开发遗留配置

权限声明缺失 +5

SKILL.md 未声明 allowed-tools,权限声明宽泛但不构成实质威胁

最关键的证据

中危 权限提升

subprocess 使用 shell=True 执行本地脚本

app.py:694 使用 subprocess.Popen(..., shell=True) 执行 launch_command,存在潜在的命令注入风险。虽然执行的是受信任的本地启动脚本,但 shell=True 应避免使用。

lobster_pet/app.py:694
将 shell=True 改为列表参数形式:subprocess.Popen([self.config.launch_command], ...)
低危 敏感访问

硬编码的 Windows 用户路径

config.py 中包含硬编码的 Windows 用户路径(如 C:\Users\super\...),这是开发环境遗留配置,在不同用户环境下会失效。

lobster_pet/config.py:31
使用 Path.home() / 'Desktop' / ... 动态获取用户桌面路径
低危 文档欺骗

SKILL.md 缺少 allowed-tools 声明

SKILL.md 未声明 allowed-tools 权限,导致无法确认实际权限范围。

SKILL.md:1
在 SKILL.md 中添加 allowed-tools 字段,明确声明所需的工具权限
提示 供应链

requirements.txt 无版本锁定

requirements.txt 中依赖无版本锁定(如 SpeechRecognition>=3.14),存在供应链风险。

requirements.txt:1
锁定依赖版本以防止依赖混淆攻击

声明能力 vs 实际能力

文件系统 通过
声明 NONE
→
推断 READ
代码仅读取配置文件和声纹模型
网络访问 通过
声明 READ
→
推断 READ
仅与 SiliconFlow API 和本地 OpenClaw Gateway 通信
命令执行 通过
声明 NONE
→
推断 WRITE
app.py:694 subprocess.Popen 执行启动脚本
环境变量 通过
声明 NONE
→
推断 READ
仅读取 SILICONFLOW_API_KEY

可疑产物与外联

中危 外部 URL
https://cloud.siliconflow.cn

README.md:34

中危 外部 URL
https://alphacephei.com/vosk/models/vosk-model-small-cn-0.22.zip

README.md:103

中危 外部 URL
https://alphacephei.com/vosk/models

README.md:107

中危 外部 URL
http://127.0.0.1:19001/

lobster_pet/app.py:1254

中危 外部 URL
https://api.siliconflow.cn/v1/chat/completions

lobster_pet/chat_client.py:40

中危 外部 URL
https://api.siliconflow.cn/v1/audio/speech

lobster_pet/tts_client.py:44

中危 外部 URL
https://registry.npmmirror.com/@electron/get/-/get-2.0.3.tgz

package-lock.json:16

中危 外部 URL
https://registry.npmmirror.com/@sindresorhus/is/-/is-4.6.0.tgz

package-lock.json:38

中危 外部 URL
https://registry.npmmirror.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz

package-lock.json:51

中危 外部 URL
https://registry.npmmirror.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz

package-lock.json:64

中危 外部 URL
https://registry.npmmirror.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz

package-lock.json:77

中危 外部 URL
https://registry.npmmirror.com/@types/keyv/-/keyv-3.1.4.tgz

package-lock.json:84

依赖与供应链

包名版本来源漏洞备注
SpeechRecognition >=3.14 pip 否 无版本锁定
PyAudio >=0.2.14 pip 否 无版本锁定
soundfile >=0.12.1 pip 否 无版本锁定
speechbrain 未指定 代码导入 否 用于声纹识别模型

文件构成

29 个文件 · 6756 行
Python 18 个文件 · 4402 行JSON 2 个文件 · 883 行CSS 1 个文件 · 596 行JavaScript 4 个文件 · 513 行Markdown 2 个文件 · 295 行HTML 1 个文件 · 64 行
需关注文件 · 5
lobster_pet/app.py Python · 1570 行
subprocess 使用 shell=True 执行本地脚本 · http://127.0.0.1:19001/
package-lock.json JSON · 871 行
https://registry.npmmirror.com/@electron/get/-/get-2.0.3.tgz · https://registry.npmmirror.com/@sindresorhus/is/-/is-4.6.0.tgz · https://registry.npmmirror.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz · https://registry.npmmirror.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz · https://registry.npmmirror.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz · https://registry.npmmirror.com/@types/keyv/-/keyv-3.1.4.tgz · https://registry.npmmirror.com/@types/node/-/node-22.19.15.tgz · https://registry.npmmirror.com/@types/responselike/-/responselike-1.0.3.tgz · https://registry.npmmirror.com/@types/yauzl/-/yauzl-2.10.3.tgz · https://registry.npmmirror.com/boolean/-/boolean-3.2.0.tgz · https://www.npmjs.com/support · https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz · https://registry.npmmirror.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz · https://registry.npmmirror.com/cacheable-request/-/cacheable-request-7.0.4.tgz · https://registry.npmmirror.com/clone-response/-/clone-response-1.0.3.tgz · https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz · https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz · https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz · https://registry.npmmirror.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz · https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz · https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz · https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz · https://registry.npmmirror.com/electron/-/electron-35.7.5.tgz · https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.5.tgz · https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz · https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz · https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz · https://registry.npmmirror.com/es6-error/-/es6-error-4.1.1.tgz · https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz · https://registry.npmmirror.com/extract-zip/-/extract-zip-2.0.1.tgz · https://registry.npmmirror.com/fd-slicer/-/fd-slicer-1.1.0.tgz · https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz · https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz · https://registry.npmmirror.com/global-agent/-/global-agent-3.0.0.tgz · https://registry.npmmirror.com/semver/-/semver-7.7.4.tgz · https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz · https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz · https://registry.npmmirror.com/got/-/got-11.8.6.tgz · https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz · https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz · https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz · https://registry.npmmirror.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz · https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz · https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz · https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz · https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz · https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz · https://registry.npmmirror.com/matcher/-/matcher-3.0.0.tgz · https://registry.npmmirror.com/mimic-response/-/mimic-response-1.0.1.tgz · https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz · https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz · https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz · https://registry.npmmirror.com/once/-/once-1.4.0.tgz · https://registry.npmmirror.com/p-cancelable/-/p-cancelable-2.1.1.tgz · https://registry.npmmirror.com/pend/-/pend-1.2.0.tgz · https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz · https://registry.npmmirror.com/pump/-/pump-3.0.4.tgz · https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz · https://registry.npmmirror.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz · https://registry.npmmirror.com/responselike/-/responselike-2.0.1.tgz · https://registry.npmmirror.com/roarr/-/roarr-2.15.4.tgz · https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz · https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz · https://registry.npmmirror.com/serialize-error/-/serialize-error-7.0.1.tgz · https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.3.tgz · https://registry.npmmirror.com/sumchecker/-/sumchecker-3.0.1.tgz · https://registry.npmmirror.com/type-fest/-/type-fest-0.13.1.tgz · https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz · https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz · https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz · https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz
README.md Markdown · 190 行
https://cloud.siliconflow.cn · https://alphacephei.com/vosk/models/vosk-model-small-cn-0.22.zip · https://alphacephei.com/vosk/models
lobster_pet/chat_client.py Python · 139 行
https://api.siliconflow.cn/v1/chat/completions
lobster_pet/config.py Python · 97 行
硬编码的 Windows 用户路径
其他文件 · voice_listener.py · pet_window.py · styles.css · speaker_verifier.py · openclaw_bridge.mjs · openclaw_client.py +1

安全亮点

声纹验证机制合法且有效,非主人无法操控系统
访客模式设计合理,限制了对本地数据的访问
外部通信仅限 SiliconFlow API 和本地 OpenClaw Gateway,无可疑外泄
代码无混淆、无隐藏后门、无提示词注入
base64 仅用于音频数据编码用于 ASR API,符合正常用途