知识卡片

隔离构建才能对输入做安全策略检查

普通读书笔记卡 · 1459.c

内容

如果构建过程中依赖的编译器版本、第三方库版本是在构建时临时拉取最新版,那么同一份源代码在不同时间构建出来的产物可能天差地别,也没法在构建之前先检查”这些依赖里有没有已知漏洞”——因为直到构建真正跑起来才知道用的是哪个版本。让构建变得”隔绝”,即所有输入都必须在构建开始前用精确版本号或加密哈希完整声明、并规定只有编排器才能获取这些内容,换来的好处是可以在真正编译之前先对完整依赖清单做检查,把风险拦截在生成产物之前而不是之后。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第14章《部署代码》14.5.3节权限分离(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_116.html`) - 结论依据:原文说明"大多数构建依赖于其他工件。这类依赖项会成为威胁构建的攻击面……因此,推荐使用隔绝的构建……构建过程应该预先声明所有输入,并规定只有编排器才能获取这些内容。隔绝的构建有更强的可信度,能保证来源信息中列出的输入都是正确的"。 - 原始内容:即使用户和构建步骤是可信的,大多数构建依赖于其他工件。这类依赖项会成为威胁构建的攻击面……因此,推荐使用隔绝的构建……构建过程应该预先声明所有输入,并规定只有编排器才能获取这些内容。