控制流完整性(CFI) 在编译期插入类型校验,阻止攻击者将间接调用跳转到非预期函数;Intel CET 的 Shadow Stack 则在硬件层保存返回地址副本,抵御 ROP 返回地址篡改。 !ROP 与影子栈 一、GCC 启用 CFI 与 CET 编译
分类:二进制安全
共 5 篇文章二进制安全相关技术文章
在启用了 NX/DEP(数据执行保护) 的现代化操作系统中,栈和堆内存被标记为不可执行。攻击者通过 ROP(ReturnOriented Programming) 技术,复用现有二进制代码段中的 Gadget(以 ret 结尾的机器指令序列)构造执行链。 一、x8664 ROP Chain 典型构造
在漏洞利用中,堆风水(Heap Feng Shui) 是一种通过精心编排 malloc() 和 free() 的调用时机与大小,精细控制堆块(Chunk)在内存中的相邻物理分布,以便通过堆溢出覆盖相邻目标 Chunk 的元数据或函数指针。 一、堆块重分配精细占位技术
为了加快程序启动速度,Linux ELF 动态链接器采用延迟绑定(Lazy Binding)策略,在首次调用函数时由 PLT 查找符号并回填 GOT。全保护 Full RELRO 会在启动时解析所有符号并将 GOT 设为只读,阻断 GOT Overwrite 攻击。 一、GCC 开启 Full RELRO 编译标志
UseAfterFree(UAF) 发生于指针指向的内存被 free() 释放后,该指针未被置为 NULL(形成野指针悬空指针),后续再次解引用该指针执行读写或虚函数表调用,造成任意代码执行。 一、悬空指针与函数指针劫持