Spotube 插件安全检查清单——避免恶意 .smplug
为什么重要
Spotube 的插件架构虽然灵活,但插件拥有你的全部音乐数据访问权限:
- Spotify / Last.fm / ListenBrainz 的 OAuth token 存储在本地数据库,插件理论上可以读取
- 插件可以发起任意 HTTP 请求(通过宿主 Bridge),把 token 发到外部服务器
- 插件可以读取本地缓存的所有音乐文件和元数据
Spotube 自己不做插件内容审核,安全责任在用户。
插件安全检查清单
✅ 优先级一(必做)
- [ ] 优先装 Official 标签的插件(Spotube Team / KRTirtho 发布的)
- [ ] 社区插件先查源码——去仓库看
main.kt或main.js,有没有可疑的 HTTP 请求、文件访问、混淆代码 - [ ] 看 Star / Fork / Issue 数量——几十个 star 的冷门插件风险高
✅ 优先级二(推荐)
- [ ] 不要在主力账号上测试插件——先在备用 Spotify / Last.fm 账号上试
- [ ] 隔离插件目录——测试插件时新建一个 Spotube 配置目录(Spotube 支持
--data-dir参数) - [ ] 退出 Spotify / ListenBrainz 登录后装插件再登录——插件拿不到已缓存的 token
✅ 优先级三(进阶)
- [ ] 用网络抓包看插件请求——Wireshark 或 mitmproxy,看插件除了它声称的服务外还连了谁
- [ ] 用沙箱跑——Windows Sandbox、macOS VM、Linux firejail,隔离运行 Spotube
- [ ] Spotube 沙箱模式——部分平台(macOS、Flatpak)的 Spotube 已经受系统沙箱限制
可疑信号
看到这些特征就应该警惕:
- 插件不提供 GitHub 仓库或代码
- 插件作者频繁换名字 / 换仓库 / 被原项目踢出
- 插件请求的权限超过它声明的能力(比如只实现
LyricsAPI但却访问 AudioAPI) - 插件运行时网络请求异常多(连接了音乐服务之外的域名)
- 插件体积异常大(超过 1MB)——Kotlin/JS 插件通常只有几十 KB
Spotube 官方的安全机制
Spotube 宿主层面做了一些基础防护:
- Zipline 沙箱:插件不能直接访问文件系统、网络、传感器,所有操作走宿主 Bridge
- 插件签名验证(计划中):v5.2 考虑增加插件签名机制,官方插件由 Spotube Team 签名
- 崩溃隔离:单个插件崩溃不会导致整个 Spotube 退出
但这些都是降低风险,不是消除风险。恶意插件可以合法地通过宿主 Bridge 发起 HTTP 请求——这是插件架构本身的设计(插件需要联网才能访问音乐服务 API),不是安全漏洞。
发现恶意插件怎么办
- 立即从插件目录删除该
.smplug - 在 Spotube 里退出所有外部账号登录(Spotify / ListenBrainz / Last.fm)
- 到对应音乐服务的网页端重置密码——因为 token 可能已被泄露
- 清除本地数据库:Spotube 设置 → 清除数据 → 全部
- 在 Spotube GitHub Issues 里反馈,维护者会把该插件加到 blacklist