潜入CVE-2022-23943 -一个新的Apache内存破坏漏洞

Apache RCE和DoS漏洞863x300

几天前,据报道,新的Apache 2.4.53版本包含修复了几个漏洞,这些漏洞使著名的HTTP服务器的用户暴露在攻击中:CVE-2022-22719涉及一个漏洞mod_luaCVE-2022-22720使服务器暴露于HTTP私运攻击,CVE-2022-22721使服务器在处理大型XML输入时暴露于缓冲区溢出,CVE-2022-23943是一个漏洞mod_sed模块,当触发时可能导致DoS和可能的RCE。本文将重点讨论后者。

mod_sed是一个Apache模块,提供相同的功能GNU的流编辑器工具sed,允许对流进行操作。它可以用作输入过滤器以修改HTTP POST请求的主体,也可以用作输出过滤器,在服务器的响应发送到客户端之前修改服务器的响应。

在这篇博客文章中,我们提供了Apache CVE-2022-23943漏洞的概述,以及如何修复该问题的指导,以及我们在对此漏洞的研究中发现的缓解选项。

这项研究也为我们的发展提供了动力语境分析扫描器,自动检测易受攻击的配置并应用缓解措施,以确定CVE在特定应用程序中是否可被利用。

什么是CVE-2022-23943?

CVE-2022-23943是一个拒绝服务漏洞mod_sed模块的Apache HTTP服务器。该漏洞影响到2.4.52(包括)之前的所有Apache 2.4版本mod_sed过滤器用于请求或响应编辑。

此Apache漏洞是由于缓冲区处理不当造成的,当模块编辑包含大量数据的请求或响应时,可能会允许出界写入。

谁会受到CVE-2022-23943的影响?

CVE-2022-23943影响所有2.4。xversions of the Apache HTTP server up to and including version 2.4.52, when running with a non-default configuration where themod_sedFilter模块用于编辑请求或响应。

当配置mod_sed,可以添加两种类型的过滤器-

  1. AddInputFilter—该过滤器将处理数据从客户端接收,然后转发到Apache服务器
  2. AddOutputFilter—该过滤器将处理即将从Apache服务器发送的数据,然后将其转发到客户端

易受攻击的Apache实例将有一个配置文件,其中一个配置文件具有Sed输入或输出过滤器路线目录指令。

下面的示例说明了一个易受攻击的配置,其中对html文件的所有请求都将由mod_sed,将请求正文中的每个字符替换为字母Z -

处理HTML文件的所有请求方法

(实际替换逻辑不影响此漏洞的可利用性)

由于来自客户机的数据通常是不可信的(不像来自服务器的数据已经存在),任何添加输入筛选器(AddInputFilter)更容易受到这个问题的影响。


预定x射线安全工具的演示!
观看x射线在行动

CVE-2022-23943技术概述

和最初的GNU流编辑器一样,mod_sed使使用正则表达式模式用于输入和输出流修改。

修改提交围绕着改变int类型(4字节有符号)到apr_size_t类型(4或8字节无符号),触发此问题涉及发送非常大的数据包,大小为2GB(导致整数符号问题)或4GB(导致整数溢出问题)。

时触发该漏洞appendmem_to_linebuf函数,在sed1.c,调用memcpy函数,以便写入被求值的流缓冲区。

appendmem_to_linebuf函数

实际上有两种情况我们可以触发这个漏洞。在第一个中,4GB的数据被发送到服务器,这导致了函数崩溃sed_eval_buffer仍在处理流。函数的调用appendmem_to_linebuf由于错误计算缓冲区大小,导致越界写入:

appendmem_to_linebuf

在第二个场景中,漏洞是使用发送到服务器的2GB数据触发的。由于Apache支持高达2GB的请求体大小,在这种情况下,当试图完成流缓冲区的处理时触发了该漏洞。的调用中可以找到此实例appendmem_to_linebufsed_finalize_eval调用append_to_linebuf为了保证在缓冲区的末尾添加一个空终止符:

appendmem_to_linebuf

CVE-2022-23943的影响是什么?

通过在请求体中发送大量数据,可以很容易地利用该漏洞mod_sedfilter模块需要处理所述数据,导致拒绝服务和一个HTTP服务器进程的短停机时间。如果攻击是通过在很长一段时间内向服务器发出多个请求来执行的,那么就会发生完全的拒绝服务,导致服务器的所有进程反复关闭。

如何修复CVE-2022-23943?

要修复此Apache漏洞,我们建议将Apache升级到最新版本,目前是2.4.53。如果不可能升级,我们强烈建议应用补丁中修复此漏洞的方法mod_sed过滤模块。

CVE-2022-23943有哪些缓解选项?

如果无法将Apache升级到最新版本或应用补丁,则需要限制POST方法的主体大小,以便无法触发漏洞。要做到这一点,需要使用LimitRequestBody指令在Apache的配置文件。

该指令可用于设置从0到2GB数据的请求大小限制。

例如,要将POST限制为1GB的数据,可以添加以下行httpd . conf

LimitRequestBody 1073741824

此缓解措施仅提供针对恶意客户端请求的攻击的保护,而不适用于以下情况mod_sed用于修改漏洞服务器上已经存在的大文件(>2GB)。

找到易受攻击的版本与JFrog x射线

除了曝光新安全漏洞和威胁,JFrog提供开发人员和安全团队轻松访问最新的相关信息,为他们的软件与自动安全扫描JFrog x射线SCA工具

JFrog x射线执行自动化语境分析cve,加速解决生产中实际可利用的漏洞的时间。请继续关注未来的增强,包括基于软件配置检测cve的适用性。

与JFrog安全研究保持最新

在我们的JFrog安全研究团队中跟踪最新的发现和技术更新安全研究博客文章并在推特上@JFrogSecurity