Linux glibc 库的修复方案扯出更严重的新漏洞
作者:Steven J. Vaughan-Nichols
编译:代码卫士
CVE-2021-33574 并没有那么严重。就像Red Hat 首席软件工程师 Siddhesh Poyarekar 写的那样,“要利用该缺陷发动最小的攻击,攻击者也需要很多前提条件才能利用该 mq_notify bug 使程序崩溃。”不过,我们仍然需要打补丁修复。但没想到的是,修复方案中竟然包含一个更加严重的 bug。
CloudLinux TuxCare 团队的成员 Nikita Popov在检查补丁时发现了该漏洞,它可导致libc 库内触发分段错误,导致拒绝服务攻击。和CVE-2021-33574不同,该漏洞更易于被触发。
Red Hat 对CVE-2021-38604的CVSS 评分是7.5,属于高危漏洞。利用该漏洞可轻松构建攻击且无需权限即可实施。Popov 表示,“每款包含其它语言解释器(python、PHP)的 Linux 应用程序都和 glibc 有关,它是继内核本身的第二大重要事情,因此影响非常大。”Popov 在“例行将 CVE-2021-33574 修复方案推到受支持的发行版本”时发现了这个问题,他发现在某些情况下可疑传递空指针。
从技术上来讲,问题出在 “mq_” 函数家族中,它们提供 POSIX 合规消息队列应用编程接口 (API) 功能。一般而言,它们用于进程间通信 (IPC) 过程。所有包含其它语言 (Python、PHP) 解释器的 Linux 应用程序都和 glibc 库相关联。
Popov 发现“在两种情况下,Linux Kernel 在data.attr 字段中传递复制的线程属性时会使用 NOTIFY_REMOVED 消息。遗憾的是,主机应用程序能够传递一个 NULL 值,如果它想要 glibc 通过默认属性拥堵线程。在这种情况下,glibc 库将解引用 pthread_attr_destory 中的一个空指针,从而导致整个进程崩溃。”
C 语言程序员或许已经对此闭眼摇头了,因为C语言编程的一个常用规则就是永远不要解引用 null 指针。问题并非“它会导致程序崩溃吗?“,而是”它会使程序崩溃到什么程度?“
好在这个漏洞和代码修复方案已经提交给 glibc 库的开发团队,并且已经集成到上游 glibc 库。另外,已向 glibc 库的自动化测试套件提交了新测试以补救该场景,阻止未来再次发生类似漏洞。底线是,有时对不相关代码路径的更改可导致其它地方发生变化,而程序员并不清楚发生了什么事情。该测试就是要捕获到这种情况。
Linux 发行商仍然在寻求部署该修复方案的最佳方式。同时,用户应升级至最新的稳定版 glibc 2.34或更高版本。
可蠕虫 DarkRadiation 勒索软件瞄准 Linux 和 Docker 实例
康奈尔大学研究员发现“代码投毒”攻击,可触发供应链攻击
Linux 应用市场易受RCE和供应链攻击,多个0day未修复
https://www.zdnet.com/article/linux-glibc-security-fix-created-a-nastier-linux-bug/
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。