一个新的关键漏洞CVE-2022-42889又名文本4外壳,类似于旧的Spring4外壳和日志4外壳,最初由Alvaro Muñoz在非常流行的Apache共享资源文本库上报告。
该漏洞的严重等级为 9.8 级,它始终是远程执行代码 (RCE),允许攻击者在计算机上执行任意代码并危害整个主机。
原文链接:https://sysdig.com/blog/cve-2022-42889-text4shell/?fbclid=IwAR390dT6t-APZtG9HJiUaWYWY-MARztD_-Z2ggwEbaYngaTaCvXCRar2sk8
github:https://github.com/ClickCyber/cve-2022-42889
受影响的Apache共享资源文本版本1.5至1.9,并在1.10版中进行了修补。
初步
Apache共享资源文本是一个Java库,被描述为“一个专注于处理字符串的算法的库”。我们可以将其视为通用文本操作工具包。
即使您熟悉编码,您也可能在代码中遇到Commons Text作为依赖项,或者它可能被您当前在笔记本电脑或生产环境中运行的应用程序使用。
CVE-2022-42889 问题
该漏洞会影响字符串替换器插值器类,该类包含在共享资源文本库中。默认插值器允许字符串查找,这可能导致远程代码执行。这是由于一个逻辑缺陷,根据 StringLookupFactory 类的文档,该缺陷使“脚本”、“dns”和“url”查找键默认内插,而不是它应该是什么。这些密钥允许攻击者通过查找来执行任意代码。
要利用这些漏洞,必须满足以下要求:
- 运行从版本1.5到1.9的Apache共享资源文本版本
- 使用字符串替换器插值器
重要的是要指定字符串替换器插值器不像Log4j中的字符串替换那样广泛使用,这导致了Log4Shell。
如何利用 CVE-2022-42889 漏洞
为了重现攻击,易受攻击的组件部署在 Docker 容器中,该容器可从 EC2 实例访问,该实例将由攻击者控制。使用 netcat (nc) 命令,我们可以打开与易受攻击的应用程序的反向外壳连接。
易受攻击的 Web 应用程序公开了一个搜索 API,在该 API 中,查询通过共享资源文本的字符串替换符进行内插:
1 |
http://web.app/text4shell/attack?search=<query> |
以下有效负载可用于利用此漏洞并打开反向外壳程序:
此负载由“${前缀:name}”组成,这会触发字符串查找。如上所述,“脚本”、“dns”和“url”是可用作前缀以利用此漏洞的密钥。
在发送精心编制的请求之前,我们需要使用 netcat (nc) 命令设置反向外壳连接,以侦听端口 9090。
1 |
nc -nlvp 9090 |
现在,我们可以发送精心编制的请求,对有效负载进行 URL 编码,如下所示。
我们可以看到攻击者成功打开了与易受攻击的应用程序的连接。
现在,攻击者可以以 root 身份与易受攻击的计算机进行交互,并执行任意代码。
CVE-2022-42889 的影响
根据 CVSSv3 系统,它的严重性为 9.8。
由于易于利用以及在机密性、完整性和可用性方面的巨大潜在影响,严重性为“严重性”。正如我们在上一节中通过精心设计的请求所示,您可以完全控制易受攻击的系统。
但是,这些漏洞不太可能产生与之前的日志外壳和弹簧外壳相同的影响。
从易受攻击的组件来看,利用的可能性与Apache共享资源文本库的使用有关。具体来说,只有当它使用一些用户控制的输入实现字符串替换器对象时,才有可能利用它。生产环境中的这种实现并不像Log4j中易受攻击的字符串替换那样常见。因此,文本4外壳的大规模影响实际上无法与Log4Shell相提并论。
检测和缓解 CVE-2022-42889
如果您受到 CVE-2022-42889 的影响,则应将应用程序更新到版本 1.10。
正如我们在之前的 CVE-2022-22963 中看到的那样,我们可以在应用程序生命周期的三个不同阶段检测到此漏洞:
一旦攻击者完全控制,根据他执行的操作,我们将使用一个或另一个Falco规则检测到他。在攻击者使用反向 shell 的情况下,此处我们将有一个可以检测到它的规则示例。为避免误报,您可以在条件中添加异常,以更好地适应您的环境。
1 2 3 4 5 6 7 8 |
- rule: Reverse shell desc: Detect reverse shell established remote connection condition: evt.type=dup and container and fd.num in (0, 1, 2) and fd.type in ("ipv4", "ipv6") output: > Reverse shell connection (user=%user.name %container.info process=%proc.name parent=%proc.pname cmdline=%proc.cmdline terminal=%proc.tty container_id=%container.id image=%container.image.repository fd.name=%fd.name fd.num=%fd.num fd.type=%fd.type fd.sip=%fd.sip) priority: WARNING tags: [container, shell, mitre_execution] append: false |
使用 Sysdig 图像扫描程序,可以检测易受攻击的软件包
结论
尽管CVE-2022-42889在特定条件下可被利用,这使得该漏洞不像今年看到的其他漏洞那样受欢迎,但立即采取行动仍然很重要。
为了安全起见,请使用最新版本进行修补以缓解漏洞,并使用扫描程序来查明您是否受到影响。同样重要的是,要采取必要的措施来缓解漏洞,并且永远不要在运行时停止监视基础结构或应用程序。
如果您想了解有关什么是漏洞的更多信息,请更深入地了解什么是漏洞: