云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

谷歌云_华为云空间卡怎么获得_哪家好

小七 141 0

Web上压缩Oracles的一种解决方案

由Jean Jacques MILAN设计的CC 3.0这是英国伦敦大学皇家霍洛威博士生布莱克·洛林的客座帖子。布莱克2017年夏天在Cloudflare实习。压缩通常被认为是减少互联网服务带宽使用的一个重要工具。然而,使用这种压缩方案对安全性的影响常常被忽视。最近针对TLS的犯罪、泄密、时间和抢劫攻击的详细信息表明,如果攻击者可以代表用户发出请求,那么可以仅使用响应的长度从加密消息中提取秘密信息。决定一个网页的一个元素是否应该是秘密的通常取决于网页的内容,但是有一些网页的共同元素应该始终保持秘密,例如跨站点请求伪造(CSRF)令牌。此类令牌用于确保恶意网页无法伪造来自用户的请求,方法是强制要求任何请求必须包含先前响应中包含的秘密令牌。去年夏天,我在Cloudflare工作,研究解决这个问题的可能方法。结果是一个名为cf nocompress的项目。该项目的目标是开发一种工具,该工具能够在不显著影响压缩效果的情况下,透明地缓解Cloudflare托管服务上的攻击实例,特别是CSRF提取。我们已经在GitHub上发布了一个概念验证实现,并提供了一个挑战站点和工具来演示攻击的实际效果)。问题大多数web压缩方案都是通过引用压缩过程中创建的术语词典来替换公共序列来减少数据的大小。当使用这种压缩方案时,如果明文中存在重复的字符串,则加密响应的大小将减小。这可以通过使用canary(我们知道将添加到响应中的请求中的元素)来利用此漏洞,以使用压缩响应长度测试原始响应中是否存在字符串。从中我们可以通过猜测每个后续字符来逐步提取网页部分的内容。此攻击使恶意JavaScript有机会通过恶意代码从网页中提取CSRF令牌和其他机密信息,这些恶意代码使用数据包嗅探器(Duong和Rizzo在BEAST攻击中创建的方法)或JavaScript API(由Vanhoef描述)提供给浏览器和范·戈泰姆抢劫案)。有两种常见的攻击缓解方案。第一种方法是每次加载页面时发送一个唯一的CSRF。通过从页面中删除一致元素,攻击威胁将被移除。这种方法要求服务器保持有效csrf的状态以及它们是否已被使用,此外,它只能用于保护页令牌,而不能用于保护用户可读的数据。另一种方法是用每个请求随机数对响应中的所有机密进行异或,然后用响应传输该数字。一旦收到一段JavaScript,就可以通过再次对数据进行xooring来恢复原始秘密。或者,可以修改服务器,使其期望XOR变量和随机数,而不是原始机密。这种方法允许保护所有机密,但是它需要客户端的后处理。此外,这两种方法都需要大量的、每页的修改,这使得缓解在实践中非常麻烦。目前,完全缓解此类攻击的唯一方法是完全禁用对易受攻击网站的压缩,对于大多数网站和内容交付网络来说,这是一个不切实际的解决方案。我们的解决方案我们决定使用选择性压缩,只压缩页面的非机密部分,以停止从页面提取机密信息。我们发现,在大多数情况下,网页中的秘密可以用经典正则表达式来描述。这些描述允许我们在响应流式传输时在线识别机密。一旦机密被识别出来,就可以对它们进行标记,这样经过修改的压缩库就可以确保它们不会被添加到字典中。这种方法的主要优点是web服务器可以透明地提供保护,并且只要正则表达式可以用来清楚地表示响应的哪些部分是机密的,就不需要修改应用程序。此外,我们不需要为每个用户维护状态,也不需要客户端JavaScript来适当地呈现页面。概念验证是作为NGINX的插件实现的,需要对gzip模块进行一个小补丁。这个插件使用sregex来识别页面中的秘密。修改后的gzip功能正常,但是在处理机密时压缩被禁用。这样可以确保机密不会被添加到压缩字典中,从而删除任何响应大小。其他安全注意事项我们在这个概念证明中使用的正则表达式匹配引擎不能保证在恒定时间内运行。因此,将字符串与某些正则表达式匹配可能会导致基于时间的侧信道攻击。现代正则表达式的复杂性使这个问题更加复杂,因为匹配时间通常是不直观的。虽然在许多情况下,这样的攻击所带来的风险是最小的,但如果采用我们的缓解措施,则应开发具有恒定运行时间和无限循环限制的有限匹配器。挑战现场我们已经建立了挑战网站压缩网站有了保护,还有一个网站的克隆compression.website/不安全没有它。该页面是一个简单的表单,每个客户端都有一个CSRF,旨在模拟常见的CSRF保护。通过使用库中提供的示例攻击,我们可以从无保护变体的请求响应大小中提取CSRF,但我们无法在受保护的站点上提取CSRF。我们欢迎在不访问未加密响应的情况下提取CSRF的尝试。