知识卡片

权限分离把签名密钥和用户自定义命令隔开

普通读书笔记卡 · 1459.d

内容

很多构建系统允许用户在脚本里写任意命令,这等同于允许远程代码执行;如果这些命令运行在能访问签名密钥的特权环境里,攻击者只需加一行窃取密钥的代码,就能拿到给恶意二进制文件签名的能力。解法是把构建拆成两部分:受信任的协调器负责启动构建并在完成后生成签名,用户自定义命令则运行在无权访问密钥的隔离环境里。这是[[处理不可信输入用独立信任空间]]的具体应用——执行外部可控代码的环节不该和高权限凭证共享执行环境。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第14章《部署代码》14.5.3节权限分离(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_116.html`) - 结论依据:原文明确说明"可通过权限分离来缓解此类威胁。使用受信任的协调器进程设置初始已知良好状态,开始构建,并在完成后创建已签名的来源信息……所有用户定义的生成命令都应在无权访问签名密钥或任何其他特殊权限的其他环境中执行"。 - 原始内容:可通过权限分离来缓解此类威胁。使用受信任的协调器进程设置初始已知良好状态,开始构建,并在完成后创建已签名的来源信息……所有用户定义的生成命令都应在无权访问签名密钥或任何其他特殊权限的其他环境中执行。