安全
报告问题
- FlatPark 自身的漏洞(构建、签名或发布流程、工作流、发布 webhook):请通过 GitHub 安全公告私下报告,避免在修复前公开。
- 会让用户面临风险的软件包或应用版本(运行或访问了不该碰的东西,或者某个版本有恶意):请在 github.com/flatpark/flatpark/issues 开一个 issue,并在标题里注明是安全问题,让其他用户也能看到警告。
两种都会被优先处理。
绝不允许的事
无论其他规则怎么写,下面这些都不会上架,一旦发现立即下架:
- 窃取数据、破坏系统或隐瞒自己行为的应用或版本;
- 未经申报就触及沙箱之外(
--filesystem=host、Flatpak 控制总线),或者索取功能并不需要的危险权限的软件包; - 不是开发者官方文件的下载。
某个版本有危险时
任何维护者都会立刻撤下它,不等任何人:把应用从目录里删除,或者回退到上一个安全版本,然后发布。7 天内会有一个 issue 说明发生了什么、影响了哪些版本、用户该怎么做。
撤下能做到和做不到的:它会阻止新的安装和更新。已经装好的副本会继续运行,直到用户自己删除,所以说明里会写清怎么删(flatpak uninstall --delete-data <app-id>)。
软件仓库怎么签名
- 仓库用一把 GPG 密钥签名。它的长期主密钥只用于认证,不放进 CI,离线备份。实际签名的是子密钥,只有发布工作流持有它。
- Pull request(包括来自 fork 的)在没有任何密钥的环境里构建,用一次性的密钥签名。发布用的密钥从不接触 PR 的内容。
- 你的 Flatpak 客户端在每次安装和更新时都会校验签名,也会校验每个下载的应用文件的校验和与大小。
FlatPark 检查什么、不检查什么
FlatPark 检查每个应用文件都是开发者的官方发布、按校验和固定,每个软件包只做了它申报的事,所发布的内容没有明显的恶意行为。它不审计应用的源码,闭源应用更是无从审计:应用做什么,你信任的是开发者;它怎么被打包和送到你手里,你信任的是 FlatPark。详见信任与安全。