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

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

JFrog安全研究团队不断寻找新的和以前未知的软件漏洞在流行的开源项目中帮助改善他们的安全态势。作为这项工作的一部分,我们最近在特使代理这是一个广泛使用的开源软件边缘与服务代理服务器,专为云原生应用而设计以及高流量网站。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技术细节

特使代理有可能解压缩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。Br文件。当使用Brotli算法解压缩该文件时,将解压缩到进程内存中的10 GB数据。在大多数情况下,机器的内存将无法处理如此大量的数据,Envoy进程最终将崩溃。在大多数情况下,在进程崩溃之前,由于处理器为解压缩进程分配了大量资源,将会出现严重的性能问题。2022世界杯阿根廷预选赛赛程

需要注意的是,由于GZip和Brotli解压缩之间的一些差异,这个问题很可能只会影响Brotli配置,而不会影响GZip,尽管GZip解压缩的代码包含与Broli解压缩代码相同的根问题。

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为开发人员和安全团队提供了方便地访问他们的软件的最新相关信息-包括使用Envoy开源库版本和相关的cve -通过自动安全扫描JFrog x光SCA工具。

JFrog的上下文分析引擎还可以检测到易受此问题影响的配置Envoy实例

x射线上下文分析