跳到主要内容
博客安全问题Linode安全摘要 2022年3月20-26日

2022年3月20日至26日Linode安全摘要

Linode安全摘要

本周,我们将讨论Linux内核、Apache ,以及openssl中的几个高危漏洞。

Linux内核中的ICMPv6拒绝服务

CVE-2022-0742允许任何人发送130或131类型的ICMPv6消息,并利用内核的内存泄漏,导致主机内存耗尽。这个漏洞值得注意,因为攻击者只需发送几个数据包,就可以造成整个系统的拒绝服务。

根本原因 - 要找到根本原因,最好的地方是git提交历史本身。修正的作者最初是在调查为什么在ipv6_mc_down()中加入synchronize_net()函数时发现的。提交者发现igmp6_event_query()igmp6_event_report()正在丢弃skbs,这是linux内核用来保存数据包信息的数据结构。这个漏洞仍在分析中。

这个漏洞有一些注意事项: 

  • 这并不影响红帽企业Linux的任何版本,因为可用的内核都在5.13之前。
  • 稳定分支受到影响。

修复这个漏洞的唯一可能是通过更新内核。修复该漏洞的补丁已经在上游应用。

Apache 安全咨询

我们将主要关注的漏洞是CVE-2022-23943,但首先我们将快速总结该咨询中的其他CVE。在这个公告中出现的其他漏洞是CVE-2022-22720,一个允许http请求偷渡的漏洞。还有CVE-2022-22721,如果httpd.conf中的LimitXMLRequestBody大于350MB,在32位系统上允许整数溢出。CVE-2022-22719由于mod_lua有未初始化的变量而导致崩溃。 

mod_sed是一个可选的Apache 模块,在大多数Linux系统上没有安装或默认启用。它用于替换Apache 提供的网页中使用模式的文本,类似于 sed 命令的工作方式。

CVE-2022-23943是一个内存损坏的漏洞,可导致DoS。该内存损坏漏洞来自mod_sed。该漏洞是通过mod_sed过滤器发送大量数据而触发的。如果发送的数据包大于2GB,将发生有符号的整数溢出并导致崩溃。如果发送的数据超过4GB,那么也会发生整数溢出。

根本原因- 根本原因来自于函数 appendmem_to_linebuf当memcpy被调用时。所应用的修复方法将函数参数中引用的缓冲区改为使用apr_size_t而不是int。 Apr_size_t允许使用4字节的有符号int,和8字节的无符号。

这个漏洞有一些注意事项:

  • mod_sed很少使用;以及
  • mod_sed需要手动安装和配置。它通常不会作为其他软件包的依赖项被拉入。

建议对该漏洞的补救措施包括::

  • 将Apache 更新到大于2.4.52的版本
  • 禁用mod_sed

通过在httpd.conf中设置LimitRequestBody 1073741824,可以应用部分缓解措施。然而,这只能阻止恶意客户发送大于2GB的请求。攻击者仍然能够触发mod_sed读取大于2GB的文件,导致漏洞的发生。

OpenSSL的拒绝服务

OpenSSL是一个库和命令行程序,用于管理、创建、验证和签署证书。它是最古老的开源密码学库之一,在linux系统中几乎到处都在使用。

OpenSSL使用BN_mod_sqrt()函数,该函数计算模块化平方根。它包含一个错误,即非素数的模数可以永远循环。它被用于验证包含压缩形式的椭圆曲线公钥或以压缩形式编码的基点的明确椭圆曲线参数的证书。为了制作一个导致DoS的证书,攻击者需要用类似十六进制编辑器的东西修改一个使用椭圆曲线的证书,使其在数学上无效。

根源--该漏洞的核心在于解析带有压缩格式点的EC密钥;在解析这种类型的密钥时,OpenSSL会尝试扩展压缩的点,试图计算出定义曲线的素数p的平方根。然而,p的质数没有被检查过,甚至在BN_mod_sqrt()中也没有,而这是一个要求;因此,实现中的一个错误将导致一个无限循环,因为p不是预期的质数。OpenSSL的公告可以在这里找到。目前的补丁版本是:

  • OpenSSL 3.0.2
  • OpenSSL 1.1.1n  
  • OpenSSL 1.0.2zd 

此外,成功利用这一漏洞还有一些注意事项,必须满足以下条件:

  • 攻击者使用椭圆曲线加密法生成具有某些无效参数的证书,或修改现有的证书。
  • 攻击者需要让OpenSSL验证证书,要么通过本地访问,要么通过提供给使用验证用户提供的证书的mTLS的网络应用。

注释

留下回复

您的电子邮件地址将不会被公布。 必须填写的字段被标记为*