多年来,GNU C库(Glibc)中一直隐藏着一个已知的安全漏洞。该库对Linux和许多其他操作系统和程序至关重要,它有一个动态内存管理安全漏洞,可用于拒绝服务(DoS)攻击。现在,安全公司Check Point发布了一个开源补丁,这将使利用此内存分配(Malloc)问题变得更加困难。
Check Point再次遇到了这个已知问题,因为它发现所谓的智能灯泡可以通过利用无保护的单链表来侵入网络。此问题的双向链表版本早在2005年就已通过安全解除链接进行了修复。但是,存在于内存原语函数Fast-bins和Thread Cache(TCache)中的单链表版本仍然易受攻击。
现在,这个问题的解决方案已经到位。这种新的内置安全机制称为安全链接。它通过使用从Linux的地址空间布局随机化(ASLR)功能派生的随机数对其单链接表指针签名来保护malloc。与内存块对齐完整性检查相结合,它可以保护内存指针免受劫持尝试,从而保护系统本身。
该补丁现在正与最常用的标准C库实现glibc集成。安全链接将于2020年8月在glibc 2.32中发布。它已经在glibc广受欢迎的嵌入式产品uClibc-NG中启动并运行。
您可能会想,既然这是一个已知问题,为什么花了这么长时间才解决。Check Point的技术负责人埃亚尔·伊特金解释说:
虽然利用漏洞的开发人员已经意识到这个问题很多年了,但是库的开发人员并没有意识到一个问题--所以什么都没有修复。通过向开发人员提供反馈,以及修复的想法,我们成功地一劳永逸地解决了这个问题。Linux用户应该意识到这一更新,并确保他们在标准库发布后立即切换到使用最新版本的标准库。";
重要的是要注意,安全链接不是阻止所有针对现代堆实现的攻击尝试的灵丹妙药。然而,这是朝着正确方向又迈出了一步。从我们过去的经验来看,这种特定的缓解措施将阻止我们多年来展示的几个主要漏洞,从而将损坏的软件产品变成无法利用的产品。