对网站的基于 HPKP 的持续拒绝服务攻击

信息安全 tls 拒绝服务 hsts 证书固定
2021-09-04 07:27:24

HTTP 公钥固定(HPKP) 是一种标准,它允许 HTTPS 网站指定其信任的证书,并指示浏览器不允许与受任何其他证书保护的该站点进行任何连接。

这可以用来促进对网站的持续拒绝服务攻击吗?假设攻击者破坏了像 cnn.com 这样的网站(比如说)。看起来攻击者可以配置网络服务器以启用HSTS和 HPKP,具有指定攻击者控制的证书的固定策略。攻击可能会被发现,合法管理员重新获得控制权,但在此期间访问 cnn.com 的每个人都会收到 HSTS 和 HPKP 策略,并且他们的浏览器会缓存它。结果,他们的浏览器将不允许与 cnn.com 的任何 HTTP 连接(由于 HSTS 策略),并且仅在服务器使用固定证书和公钥时才允许 HTTPS 连接。但由于攻击者指定了固定证书,它可能使用了由攻击者控制的私钥,cnn.com 不知道。因此,在攻击者被踢出后,cnn.com 无法使用攻击者选择的私钥终止 SSL 会话。因此,从这些浏览器到 cnn.com 的所有未来连接都将失败。

HPKP 标准确实建议浏览器应为这些策略设置最长期限,但它也建议将最长期限设置为 60 天。所以,如果我理解正确的话,这意味着如果攻击者暂时破坏了一个网站,那么攻击者可以确保在接下来的 60 天内,所有在短时间内访问该网站的用户都绝对无法访问该网站。该网站已被入侵。基本上,在攻击者控制的时间访问该网站的任何用户都会在接下来的 60 天内“中毒”,并且该网站看起来根本无法访问。

由于网站违规并非闻所未闻,这似乎是一个相当严重的结果。这是一种相当不寻常的拒绝服务攻击:它允许对网站进行不可逆转的破坏,除了等待之外,网站管理员无能为力。看起来这种攻击可能会被用于攻击任何网站,甚至是当前未使用 HPKP、HSTS 甚至 HTTPS 的网站。

我是否正确理解了这一点?网站是否可以采取任何缓解措施来防止自己以这种方式受到 DoS 攻击?是否有人认为 HPKP 不会引入任何比 HPKP 之前已经存在的风险更严重的新 DoS 风险?这种持续的 DoS 攻击是否曾在野外观察到过?

我已经阅读了描述 HPKP 的标准 RFC 7469,它似乎没有任何缓解措施。看来我描述的攻击可以作为'hostile pinning'的一个实例,但该标准似乎没有提到任何有用的敌对 pinning 缓解措施(除了 max-age)。

1个回答

通读这份备忘录,这里有一个链接到 Perrin 的 un-pin 草稿对于您在本草案中描述的情况,我看到了两种对策:

让我们从第一个开始,它可以用不同的方式来解释:

每当执行“pin 激活”的客户端看到“pin 激活”pin 存储中未表示的主机名和 TSK 组合时,就会创建一个非活动 pin。以后每次客户看到相同的 pin 时,pin 都会被“激活”一段时间,这段时间等于第一次看到 pin 和最近一次之间的时间跨度,最长为 30 天。

在我的解释中,上述段落的实现意味着攻击者只能在非常有限的时间跨度内激活新引脚。然而,攻击者似乎仍然可以撤销旧的密码。因此,我们继续描述第二个对策:

不可撤销的大头钉:不能撤销第 255 代的大头钉。此类策略可用于将受损的 TSK 私钥可用于影响站点可用性的风险降至最低。

因此,已发布不可撤销策略的服务器实际上可以永远使用该策略。我的理解是,服务器可以创建一个不使用的密钥对,但它会创建一个不可撤销的策略。(在 Perrin 的实现中,这将成为无法删除的最多两个 PIN 之一)。如果服务器遭到入侵,可以检索此密钥并用于撤消攻击者的更改。

这是否在当前浏览器中实现,我不知道。

编辑:正如@StackzOfZtuff 在其中一条评论中指出的那样,实际上有一份 IETF:WEBSEC 和 Perrin 之间的电子邮件对话记录,指出要为 HSTS 实施类似 TACK 的机制。