检查点提出了一种安全链接安全技术

检查点 (IT安全解决方案的全球提供商) 前几天发布的介绍 安全机制 “安全链接”,难以创建漏洞利用 在进行malloc调用时操纵定义或更改已分配缓冲区的指针。

新的“安全链接”机制 不能完全阻止利用漏洞的可能性,但是 开销最小 某些类别的漏洞利用程序的创建变得复杂由于除了被利用的缓冲区溢出之外,还必须找到另一个漏洞,该漏洞导致有关堆在内存中的位置的信息。

为Glibc(ptmalloc),uClibc-NG(dlmalloc),gperftools(tcmalloc)和Google TCMalloc准备了安全链接实施补丁,并提出了保护Chromium的现代化建议(自2012年以来Chromium已与该解决方案集成在一起)同样的问题)MaskPtr保护技术,但Checkpoint的解决方案显示出更好的性能)。

拟议的修补程序已经在Glibc 3.32的八月份发行版中得到批准,可以使用,默认情况下将启用安全链接。 在uClibc-NG中,安全链接支持包含在1.0.33版本中,并且默认情况下处于启用状态。 在gperftools(旧的tcmalloc)中,接受更改,但在将来的版本中将作为选项提供。

TCMalloc开发人员拒绝接受更改,c取得了出色的性能成功,并且需要添加高级测试来定期验证一切是否正常运行。

进行的测试 检查点工程师表明,安全链接方法不会导致额外的内存消耗 并且平均执行堆操作时的性能仅降低0.02%,最坏的情况下降低1.5%

启用安全链接会在每次调用free()时执行2-3条附加的汇编程序指令,而在调用malloc()时会执行3-4条指令。 不需要初始化开始和随机值生成。

安全链接不仅可以用来提高安全性 各种堆实现也要向任何数据结构添加完整性检查 它使用位于缓冲区旁边的单独链接的指针的列表。

方法 它非常容易实现,只需要添加一个宏 并将其应用于指向代码的下一个块的指针(例如,对于Glibc,在代码中仅更改了几行)。

该方法的本质是应用来自ASLR地址随机化机制(mmap_base)的随机数据来保护单独链接的列表,例如快速绑定和TCache。 在将指针值应用于列表中的下一个项目之前,将沿着内存页面的边缘执行掩码转换和对齐检查。 将指针替换为“(L >> PAGE_SHIFT)XOR(P)”操作的结果,其中P是指针的值,L是该指针在内存中的存储位置。

在ASLR(地址空间布局随机化)系统中使用时,具有堆基地址的L位中的某些L位包含用作编码P的密钥的随机值(它们被12位提取为4096字节)页)。

这样的操纵 降低了在漏洞利用中捕获指针的风险, 由于指针不是以其原始形式存储的,因此要替换它,您需要了解有关堆位置的信息。

该方法可有效防止使用部分指针重新定义的攻击 (低字节移位), 完全重写指针 (重定向到攻击者的代码),并在不对齐的方向上更改列表的位置。

举例说明,在malloc中使用安全链接将阻止对同一研究人员最近在飞利浦Hue Bridge智能背光中发现的漏洞CVE-2020-6007的利用,该漏洞是由缓冲区溢出引起的,并允许控制设备。

数据来源: https://research.checkpoint.com


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。