特使代理中的拒绝服务漏洞- CVE-2022-29225

JFrog安全研究团队一直在寻找新的和未知的东西软件漏洞在流行的开源项目中,帮助改善它们的安全状况。作为这项工作的一部分,我们最近发现了拒绝服务(DoS)漏洞特使代理,一个广泛使用的开源软件边缘和服务代理服务器,专为云原生应用而设计以及高流量网站。JFrog安全研究负责地披露了这个漏洞,随后将其分配给CVE-2022-29225。
CVE-2022-29225是一个DoS漏洞,攻击者可以使代理服务器崩溃,导致代理处理的资源性能下降或不可用。2022世界杯阿根廷预选赛赛程此漏洞已在Envoy版本1.19.5,1.20.4,1.21.3和1.22.1中修复,如果您正在使用Envoy但无法升级到任何新版本,请参阅底部的“修复和解决方案”部分以获得解决方案。
CVE-2022-29225技术细节
Envoy代理具有解压缩GZip和Brotli数据的可能性。通过添加相关的过滤器,可以通过配置启用这些特性。例如,要启用Brotli解压缩,可以在下面添加以下过滤器http_filters:
—name: decompressor typed_config: @type: type.googleapis.com/envoy.extensions.filters.http.decompressor.v3.Decompressor decompressor_library: name: basic typed_config: @type: type.googleapis.com/envoy.extensions.compression.brotli.decompressor.v3.Brotli
负责解压缩用户提供的数据的代码没有实现输出缓冲区的大小限制,在将其发送到上游之前,通过将所有提取的数据累积到一个大缓冲区中,允许缓冲几乎无限数量的数据。攻击者可以发送一个简单的BrotliZip炸弹(一个小的压缩文件,解压缩成一个非常大的文件),这可能会导致严重的性能问题或由于内存耗尽而使Envoy进程崩溃。
CVE-2022-29225如何被利用?
如果Envoy配置允许使用上面的配置来解压缩Brotli文件,攻击者可以创建一个Brotli炸弹,或者使用可以在网上找到的现成炸弹,并使用curl命令将其发送给Envoy。例如,假设Envoy在IP地址10.0.0.1上运行,在端口10000上侦听HTTP。执行如下命令:
curl -v http://10.0.0.1:10000 -H "Content-Encoding: br" -H "Expect:"——data-binary @/tmp/10GB.html.br
将发送/tmp/10GB.html。给它添加一个文件。当使用Brotli算法解压缩该文件时,将在进程内存中解压缩为10gb的数据。在大多数情况下,机器的内存将无法处理如此大量的数据,Envoy进程最终将崩溃。在大多数情况下,在进程崩溃之前,由于处理器将大量资源分配给解压缩进程,将存在严重的性能问题。2022世界杯阿根廷预选赛赛程
值得注意的是,由于GZip和Brotli解压缩之间的一些差异,这个问题很可能只影响Brotli配置而不影响GZip,尽管GZip解压缩的代码包含与Brotli解压缩代码相同的根问题。
JFrog平台易受CVE-2022-29225攻击吗?
在进行了全面的内部检查后,我们得出结论,JFrog DevOps平台不容易受到CVE-2022-29225的攻击。
修复和解决方案
根据Envoy的建议,最好的解决方案是升级到Envoy版本1.19.5,1.20.4,1.21.3或1.22.1,这完全解决了这个问题。
如果无法升级,请确保您的配置不允许Brotli解压缩。Brotli减压器(type.googleapis.com/envoy.extensions.compression.brotli.decompressor.v3.Brotli)可以完全删除,或者用Gzip解压缩器(type.googleapis.com/envoy.extensions.compression.gzip.decompressor.v3.Gzip)
确认
我们要感谢Envoy维护团队的Harvey Tuch专业地处理了这个问题。
与JFrog安全研究保持同步
关注JFrog安全研究团队的最新发现和技术更新安全研究网站并在推特上@JFrogSecurity.
寻找易受攻击的版本与JFrog x射线
除了暴露新安全漏洞通过自动安全扫描,JFrog为开发人员和安全团队提供了方便地访问其软件的最新相关信息-包括特使开源库版本和相关cve的使用JFrog x光SCA工具。
JFrog的上下文分析引擎还可以检测具有易受此问题影响的配置的Envoy实例
