知识卡片
用单调版本号切开回滚的安全可靠性悖论
内容
允许任意回滚会让攻击者把系统拖回存在已知漏洞的旧版本,完全禁止回滚又会让一次有缺陷的更新无法撤销——两个极端都不可取。折中方案是引入独立于版本号、只能单调递增的”最低可接受安全版本号”(MASVN):可在下限之上自由前进后退做常规稳定性回滚,但永远无法降到下限以下,等安全补丁验证稳定后再推高下限锁死。这把”允许自由试错的可靠性区间”和”绝不允许退回的安全底线”用两个独立数字分开管理,而非用不断膨胀的拒绝列表堵每个坏版本。
参考来源
- 位置:《Google系统架构解密:构建安全可靠的系统》第9章《面向恢复性的设计》9.2.3节MASVN方案(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_080.html`)
- 结论依据:原文对比"允许随意回滚"(可能重新引入已知漏洞)和"禁止回滚"(无法撤销有缺陷更新)两个极端后,给出MASVN方案:`Release[SVN] >= ComponentState[MASVN]`作为更新前提,安全补丁验证稳定后再提升MASVN下限,使版本无法降到该下限以下。
- 原始内容:可以使用MASVN定义一个低水位线值。当低于该值时,系统将永远不会运行……一旦版本i在生产环境下验证稳定,在下一个版本i+1中,MASVN将增加。这表明安全补丁转为强制,如果缺失则不允许发布。