从正常运行的设备群中交付代码,而不泄露其机密
配送
我们的套件源自支撑我们自有设备群运行的代码,其配置文件包含 API 密钥、令牌、邮箱密码和账户 ID。若套件泄露其中任何一项,后果将比没有套件更糟,因此在三台机器上的三个扫描器均未发现任何机密之前,不会进行打包。
包含内容
打包程序仅复制套件清单中指定的文件,绝不复制整个文件夹,并排除缓存、备份和版本控制历史。示例和测试使用虚构的产品和数据,绝不使用我们的真实数据。
扫描过程
- 在构建机上:搜索暂存文件中设备群机密的实际值(上次构建时为 132 个),以及我们工作站中 16,259 个机密字符串的 SHA-256 指纹。仅传输指纹;工作站的机密从未离开过该机器。
- 在另外两台机器上:将相同的文件发送到每台机器,并针对该机器持有的机密(498 个和 129 个值)进行搜索,然后删除文件。
- 在所有机器上:检查密钥格式、私有地址和个人数据的模式。
- 在结果生效之前:每个扫描器首先对植入的诱饵文件运行,必须找到全部诱饵(每次运行 23 个),否则构建停止。
一旦发现机密,构建即停止。一旦某个版本售出,便不再重新构建:修复将以新版本发布,因此买家下载的文件就是经过扫描的文件。
教会我们最多的误报
- 一条以“Each pass ends with”开头的注释被标记为 Gmail 应用密码。这些密码由四组四个字母组成,而该短语也是如此。我们修改了该注释。
- 运营商级 NAT 和 Tailscale 使用的共享地址范围 100.64.0.0/10 被标记为私有地址。
- 像
[email protected]这样的 systemd 单元名称看起来像电子邮件地址,而像9NXXXXXXXXXX这样的占位符商店 ID 看起来像真实产品。
我们修改了那条注释;其他三个误报仅在该套件和该模式下被允许,从未全局允许,因此下一个套件将像第一个套件一样严格扫描。误报只花费一分钟,而漏掉一个密钥的代价则高得多。
每个在售套件都经历了此过程,每次发布均零发现。