CFI技术新探索,struct_san今日登场
一、背景
C/C++开发的应用程序,长久以来存在内存破坏类的安全问题。当攻击者掌握了目标程序的漏洞后,就可以开发漏洞利用程序劫持目标程序的控制流。早期的漏洞利用是采用代码注入的方式,通过在缓冲区置入一段代码(shellcode),然后控制pc寄存器跳入到缓冲执行这段代码。为了阻止此类攻击,后来计算机系统部署了DEP(Data Execution Prevention)机制,通过配置内存页属性,将缓冲区设置成不可执行,起到了很好的防御效果。为了绕过DEP,攻击者探索出了代码重用技术,在目标程序中搜索出一些攻击者期望的操作的代码片段,通过组织这些片段最终完成实现对目标机器的控制。这类攻击技术有Return-to-libc、ROP(Return OrientedProgramming)、JOP(Jump OrientedProgramming)等。如下图所示,代码有两条动态路径,在路径1存一个含有漏洞的节点。当攻击者通过漏洞修改这个节点的跳转逻辑,如果没有可靠的合法性验证机制,那么攻击者最终可以完全控制目标机器。
为了抵御上面的代码复用攻击,
共有 0 条评论