请不要开公开 issue。用 GitHub 的私密报告通道:仓库 → Security → Report a vulnerability(Security Advisories)。
如果该通道不可用,可以开一个不含细节的 issue,只说明"有一个安全问题需要私下沟通",我们会给出联系方式。
请在报告里尽量包含:影响版本、复现步骤、影响范围(能否读/写用户数据、能否执行任意代码)、你的环境。我们会在确认后告知修复计划,并在修复版本发布后致谢(除非你希望匿名)。
桌面壳不修改官方 dsh,也不在壳里注入业务代码。它的安全边界如下,改动这些边界的 PR 必须显式说明并附测试:
| 边界 | 现状 |
|---|---|
| 网络暴露 | dsh 被强制监听 127.0.0.1,端口由系统随机分配(--port 0),不对外暴露 |
| 工作台来源 | 工作台是远程来源(http://127.0.0.1),Tauri 默认拒绝其全部 IPC;唯一授权是把 ⌘/Ctrl+K 与 ⌘/Ctrl+1–4 五组组合键转发回壳页 |
| 管理命令 | 只有壳页(tauri://localhost)能调用;安装/卸载命令内另有 label 校验作为第二道防线 |
| 日志 | 工作台 URL 的 token= 与 URL 中的 userinfo 凭据在写盘前替换为 *** |
| 安装可信 | dsh 由内置 pnpm 从 npm registry 安装并校验 dist.integrity(sha512);切换前做双重自检 |
| App 更新 | 校验 SHA-256 与产物大小,不符即失败并清理临时文件 |
| 卸载清理 | 只触碰以本 App bundle id 命名的精确绝对路径(加自产临时包 dsh-desktop-update-*),共享父目录一律拒绝——该不变量由单元测试守护 |
| 数据收集 | 无。不上报、不统计、不含任何形式的遥测 |
- 应用未签名/未公证:首次打开 macOS 需右键确认、Windows 可能提示 SmartScreen。这是已知取舍(见 README「已知限制与路线」),不是漏洞;但它意味着你应当只从本仓库的 Releases 下载产物。
- 本地工作台需要凭据:
dsh web会生成带token=的本地访问链接,这是上游 dsh 的行为。同机上的其它进程本就能读取你的用户数据,不属于本项目能防御的范围。