您可以通过 BREACH 攻击窃取会话 cookie 吗?

信息安全 tls Web应用程序 csrf 会话管理
2021-08-17 22:00:20

大多数关于 BREACH 漏洞的讨论都围绕着窃取基于会话的 CSRF 令牌。但是,如果您可以窃取基于会话的令牌,您是否也可以窃取会话令牌本身?显然,我不明白 BREACH 攻击的一些更好的点:)

我对 Django 特别感兴趣。在浏览器发送 cookie 的所有请求中,浏览csrftoken器也会发送sessionidcookie。

编辑

如果我新发现的理解是正确的,那么答案肯定是否定的。BREACH论文说:

要容易受到此侧通道的攻击,Web 应用程序必须:(1) 从使用 HTTP 级压缩的服务器提供服务,并且 (2) 在 HTTP 响应正文中反映用户输入,并且 (3) 反映秘密 (例如 CSRF 令牌)在 HTTP 响应正文中。

(2) 和 (3) 指的是同一件事吗?也就是说,只有在 HTTP 响应正文中重复的用户输入与您试图窃取的秘密相同的情况下,攻击才可能发生?

如果这是正确的,那么它是有道理的。

您可以窃取 CSRF 令牌,因为它是由用户输入的(通常通过表单 POST 参数或 cookie),并且它可能在响应中再次重复(作为表单的隐藏输入或作为 cookie),并且这是你试图窃取的秘密。

您无法窃取会话令牌,因为用户无法根据该输入更改输出。我的意思是,当然,用户可以提交更改的会话 cookie,但服务器(希望)不会在响应中重复该无效会话令牌。

1个回答

所以 BREACH 是一种专门针对响应体而不是标头的攻击。由于 cookie 作为标头发送,它们不易受到 BREACH 描述的技术的影响,但容易受到其他压缩侧通道攻击,例如 CRIME。

他们的意思是:

(2) 在 HTTP 响应正文中反映用户输入,并且 (3) 在 HTTP 响应正文中反映秘密(例如 CSRF 令牌)。

是(2)攻击者必须能够提交他控制的用户输入,然后以这样的方式添加到响应正文中,以便他可以提交关于秘密是什么的猜测,以及(3)应用程序还必须包含他在响应正文中猜测的秘密。

它的作用是创建一个预言机。因为是对压缩的攻击,他是对第一部分的秘密提交猜测,当他的猜测正确时,会导致响应体略短,因为他的猜测和真实秘密之间的重复会被消除压缩算法。因此,简单来说,他一直在一次猜测一个字符,直到他得到正确的下一个字符,并且响应正文变得更短一个字节。然后,他移动到下一个角色并重复这个过程,直到他知道完整的秘密。