知识卡片

吊销依赖的故障时打开会被攻击者反向利用

普通读书笔记卡 · 1454.e

内容

如果证书吊销校验依赖一个外部时间或历元服务,而这个服务在故障时选择”打开”(校验失败时默认放行),攻击者只需用DoS攻击打垮这个时间服务,就能让本该失效的旧凭证重新被判定为有效——为容错而设的”故障时打开”,反而成了绕过吊销机制的现成后门。更安全的做法是让每个节点本地缓存最近一次收到的吊销列表,在拿到更新数据前先用这份本地缓存兜底,这样即使依赖的服务不可用,节点手里仍是”目前所知最新、但不是无条件放行”的信息。

参考来源

- 位置:《Google系统架构解密:构建安全可靠的系统》第9章《面向恢复性的设计》9.2.4节故障时打开(源文件:`../OREILY动物书合辑 图灵新版/_epub-src/text/part0014_split_080.html`) - 结论依据:原文举例说明证书有效性数据库若依赖时间/历元服务且在其不可用时"只要凭据签名正确就接受",攻击者可发起DoS攻击使已吊销凭据重新生效,并给出"以吊销列表的形式将已知良好的数据……缓存在服务器节点本地……取代故障时打开的机制"的解法。 - 原始内容:假如数据库依赖时间或历元服务,只要凭据签名正确就接受。如果证书有效性数据库无法访问时间或历元服务,则攻击者可以发起相对简单的拒绝服务攻击……甚至可以重用非常旧的已吊销凭据……可以吊销列表的形式将已知良好的数据从吊销服务分发到各服务器,这些数据可以缓存在服务器节点本地。