Bun 锁文件与您的供应链安全
二进制锁文件是一种安全税——你迟早要付,而且还要付利息。
Bun 过去将依赖项存储在一个名为 bun.lockb 的二进制文件中。它虽然快速且体积小,但你无法读取它。你无法在 Pull Request 中进行 diff,也无法看到具体更改了什么。
当你无法审查依赖项的变化时,你就没有政策可言——只能凭感觉。
Bun v1.2 将默认格式切换为基于文本的 bun.lock。仅此一项就是重大的安全胜利。
为什么基于文本的锁文件很重要
- 有意义的 diff – 审查者可以清楚地看到哪些包发生了移动或更改。
- 便于进行策略检查 – CI 可以扫描被禁止的模式或不受信任的注册表。
- 更快的取证分析 –
git log可以显示引入恶意包的确切提交。
锁文件保证了完整性和可复现性,但它并不是万灵药。它无法阻止被合法发布恶意版本的包,也无法阻止被攻破的维护者。
文本锁文件增加的是可见性。可见性是你的第一道防线。
如何保障您的 Bun 工作流安全
- 在 CI 中运行
bun install --frozen-lockfile。如果锁文件需要更新,构建将会失败。 - 在 CI 中运行
bun install --lockfile-only。你可以在不执行繁重的安装脚本的情况下验证解析结果。 - 立即将任何 bun.lockb 文件迁移到 bun.lock。
- 要求对锁文件的更改进行人工审查。将相应的负责人添加到
CODEOWNERS中,以便让正确的人看到每一次依赖项更新。
不要盲目信任工具。相反,请验证每一次更改。
