6

研究人员发现价值约 4 万美元的 70 个 Web 缓存中毒漏洞,涉及 GitHub、GitLab 等

 3 years ago
source link: https://segmentfault.com/a/1190000041235099
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

研究人员发现价值约 4 万美元的 70 个 Web 缓存中毒漏洞,涉及 GitHub、GitLab 等

发布于 1 月 6 日

近日,安全研究员 Iustin Ladunca(Youstin)针对包括一些高流量在线服务在内的许多网站进行了调研,结果发现了 70 个具有不同影响的缓存中毒漏洞。

Web 缓存中毒攻击的目标是 Web 服务器和客户端设备之间的中间存储点,例如point-of-presence servers、代理和负载平衡器。中介机构通过存储本地版本的 Web 内容来加快向 Web 客户端的传送速度,从而帮助提高网站的性能。Web 缓存中毒攻击会操纵缓存服务器的行为,以及它们如何响应客户端的特定 URL 请求。

Ladunca称自己从 2020 年 11 月开始研究Web 缓存中毒,并谈到:

“仅仅几周后,我就发现了两个新的缓存中毒漏洞,这让我意识到缓存中毒的攻击面有多大。” 在 Ladunca的一篇博客中,他详细介绍了自己是如何发现和报告 Web 缓存漏洞的,其中包括 Apache Traffic Server、GitHub、GitLab、HackerOne 和 Cloudflare 以及其他服务器。

“一个常见的模式是缓存服务器被配置为仅缓存静态文件,这意味着攻击仅限于静态文件,”ladunca 说。“即便如此,仍然会产生重大影响,因为现代网站严重依赖 JS和 CSS,而删除这些文件会真正影响应用程序的可用性。”

多个 Web 缓存漏洞导致拒绝服务 (DoS) 攻击。缓存服务器使用一些 headers作为 keys来存储和检索 URL 请求。通过在 unkeyed headers中使用无效值,ladunca 能够强制服务器缓存错误响应,并在之后提供这些响应而不是原始内容,这将使客户端无法访问目标网页。

“就所使用的技术而言,迄今为止最常见的是通过 unkeyed headers的 CP-DoS,这可能占总发现的 80%,”Ladunca 说。其他 Web 缓存中毒漏洞可能会导致跨站点脚本 (XSS) 攻击。

例如,一个漏洞可以强制缓存服务器将 JavaScript 文件请求转发到攻击者控制的地址。在另一种情况下,ladunca 能够将缓存请求从一个主机重定向到另一个容易受到基于 DOM 的 XSS 攻击的主机。

Ladunca 因其发现的 70 个 Web 缓存漏洞而获得了总计约 40,000 美元的漏洞赏金,同时也得到了有关保护 Web 缓存服务器的重要经验。“我认为保护 CDN 免受缓存中毒攻击的一个好方法是禁用错误状态代码的缓存,这种缓解措施应该能阻止大部分 CP-DoS 攻击,”Ladunca 表示。

研究人员还建议使用 PortSwigger 的 Param Miner,这是一个开源工具,可以识别隐藏的、未链接的参数。针对 Web 应用程序运行 Param Miner 可以帮助检测可用于 Web 缓存中毒的 unkeyed headers。

不过 Reddit 上有网友对 Ladunca 的建议进行了反驳:

“禁用错误状态代码的缓存”绝对不是一个可行的解决方案。如果禁用错误状态代码的缓存,处理错误响应的每个请求都会返回到 origin,从而有效地创建了一个错误率不断增加的 DDoS 攻击;这将使得 origin offline,直到有人干预。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK