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