Akamai检索Amazon Web Services(AWS) S3资源的方式存在漏洞,可能允许攻击者对网站发起网络缓存中毒攻击。Web缓存中毒涉及恶意客户端强制内容分发网络(CDN)或Web服务器缓存恶意内容,然后将其提供给请求相同资源的其他客户端。
Akamai可以将各种HTTP请求映射到它们相应的S3存储桶,并将它们缓存起来以供以后检索。安全研究员Tarunkant Gupta发现他可以诱骗Akamai服务器缓存来自恶意存储桶的文件。
“几个月前,我遇到了一个不可利用的AWS S3错误配置,我只是重新访问它以检查它是否仍然存在,但这次我想探索所有攻击可能性,”他说。在尝试了不同的攻击媒介后,Gupta在Akamai的缓存服务器中遇到了配置错误,可以利用该配置来利用S3漏洞。
根据Gupta的一篇技术文章,Akamai表示,创建“一个全面的‘补丁’”“并非微不足道,因为这可能会对合法的互联网流量产生很大的负面影响” 。与此同时,Gupta表示,用户可以通过在Akamai级别不接受任何包含Unicode字符的标头来保护自己。
要利用此漏洞,攻击者必须发送对良性文件的Web请求,但修改标头指令以添加一个Host标头,该标头前面是一个十六进制值(例如\x1dhost),后面是恶意S3地址。
如果请求导致缓存命中,则Akamai服务器会将具有Unicode值的主机标头优先于原始主机标头,并缓存恶意文件以将其提供给请求相同路径的未来用户。
“由于S3配置错误,它优先考虑第一个主机标头而不是目标来源,而Akamai对包含Unicode字符的错误解析让我将我想要的内容准确地传递给S3存储桶,这是第一次出现主机标头的恶意主机”古普塔解释道。
仅当良性和恶意文件存储在位于同一区域的S3存储桶中时,攻击才会起作用。攻击者可以在所有可用区域创建S3存储桶,并将恶意文件上传到所有区域。
利用这个漏洞就是对目标网络资源进行网络缓存中毒攻击,以查看哪个存储桶有效。
Gupta使用SVG文件测试了攻击,该文件通常是缓存文件类型并且可以包含JavaScript代码——这使得它特别危险。但这种攻击也适用于服务器缓存的任何其他文件类型。
Gupta还开发了一对Python脚本,可以找到存储在S3存储桶中并由Akamai缓存的目标。
“这个问题很容易被利用,一个简单的cURL就可以创建恶意缓存,”Gupta说。“创建了一个自动化脚本来大规模利用。这个问题可能导致各种类型的攻击,例如XSS、JavaScript注入、开放重定向、DoS、欺骗等。”
Akamai告诉Gupta,配置问题“源于某些客户需要处理不符合RFC的请求以使其应用程序正常运行,因此云供应商提供支持此类流量的功能,除非明确指示不要这样做。”
Akamai的高级信息安全架构师Kaan Onarlioglu说:“默认情况下,Akamai边缘服务器允许某些无效的HTTP标头通过,并将它们视为自定义标头。”
他说,此功能对于支持大量合法流量和依赖无效标头正常运行的原始应用程序是必要的。但是,它有时会导致 Akamai 和源服务器之间发生意外交互,具体取决于源服务器的请求处理行为。
“Akamai提供了一个严格的标头解析配置选项来阻止包含无效标头的流量,我们强烈建议我们的客户使用它,除非这会干扰他们的操作,”Onarlioglu继续说道。
根据Onarlioglu的说法,Akamai目前正在努力使严格的标头解析成为默认行为,而不是为客户提供选择退出机制。这项工作预计将于2023年初完成。
Gupta建议Web开发人员始终遵循RFC及其建议。“许多公司不遵守它们,也不采取任何应对措施,这有时会成为一个严重的问题,”他说。
评论已关闭。