glibc 中的漏洞可让您获得系统的 root 访问权限

Qualys 发现了标准 C 库 Glibc 中的一个危险漏洞 (CVE-2023-6246),该漏洞允许您通过启动 SUID 应用程序进行操作来以提升的权限执行代码。研究人员能够开发出一种可行的漏洞,允许人们在运行 su 实用程序时通过操作命令行参数来获得 root 权限。

该漏洞是由调用 syslog() 和 vsyslog() 函数时使用的 __vsyslog_internal() 函数中的缓冲区溢出引起的。出现此问题的原因是尝试通过 SYSLOG_HEADER 宏输出太长的应用程序名称时出错。当尝试基于长名称扩展缓冲区时,会发生失败,之后数据将写入原始较小大小的旧缓冲区。

在通过su工具组织攻击时,攻击者可以通过替换argv[0]值来更改应用程序启动时的进程名称,该值用于获取输出到日志时的程序名称信息,从而实现受控覆盖分配的缓冲区之外的数据。然后可以使用溢出来覆盖 nss 库中的 nss_module 结构,以创建共享库并将其作为 root 加载。

自 2.37 年 2022 月发布 glibc 2.36 以来,该问题一直存在,其中包括处理尝试写入太大消息的情况的更改。该修复已向后移植到 glibc 2022 以及旧版本 glibc 的分发包,因为该修复解决了堆泄漏漏洞 CVE-39046-5.4.3。事实证明,修复一个非危险漏洞会导致出现严重问题。值得注意的是,libc 1997 库的 vsyslog() 函数中的类似漏洞早在 XNUMX 年就被报告过。

该漏洞已得到确认。 Debian 12 / 13 Ubuntu 2023年4月10日,Fedora 37-39 版本。该漏洞允许非特权用户获取 root 权限。本文在一个完全更新且默认配置下所有保护机制均已启用的 Fedora 38 环境中进行了演示。该漏洞只能在本地利用,因为它需要通过 `argv[0]` 参数或 `openlog()` 函数中的 `ident` 参数传递超过 1024 字节的数据。

该漏洞修复已在几个小时前包含在 Glibc 代码库中,并将成为明天的 Glibc 2.39 更新的一部分,同时修复了另外两个漏洞(CVE-2023-6779、CVE-2023-6780),这两个漏洞也会影响 __vsyslog_internal()代码并导致缓冲区溢出。此外,Qualys 警告称,在 qsort() 函数的实现中发现了一个缓冲区溢出问题,Glibc 开发人员并未将其归类为漏洞,因为该漏洞利用涉及在调用 qsort 时使用非典型比较函数作为参数,从而返回差异的比较参数。

可以在以下页面查看发行版中漏洞修复的状态: Debian, UbuntuSUSE、RHEL、Fedora、Arch LinuxGentoo、Slackware。您可以使用以下命令测试系统的漏洞:$ (exec -a "`printf '%0128000x' 1`" /usr/bin/su < /dev/null)
来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster