针对影子栈难以兼顾安全性和性能,软件实现的前向CFI(control-flow integrity)技术性能开销过大、难以进行实际部署,提出基于软硬件结合的CFI(control-flow integrity based on the combination of software and hardware,SHCFI)技术。...针对影子栈难以兼顾安全性和性能,软件实现的前向CFI(control-flow integrity)技术性能开销过大、难以进行实际部署,提出基于软硬件结合的CFI(control-flow integrity based on the combination of software and hardware,SHCFI)技术。通过二进制重写器对程序反编译,生成中间语言,并判断转移指令类型。对于后向控制流的保护,提出基于返回地址加密的平行影子栈方案,使用随机数对栈上的返回地址进行异或加密,将加密结果备份到原始栈固定偏移处的影子栈中,在函数返回时对影子栈中的地址异或解密,将解密结果作为实际的返回地址。对于前向控制流的保护,使用硬件ENDBRANCH状态机指令标记间接转移指令的目标地址,在运行时对目标地址进行合法性检查,以降低性能开销。实验结果表明,SHCFI加固后的程序能够有效地防御代码重用攻击,且具有良好的运行开销。展开更多
使用C/C++语言编写的程序可能包含安全漏洞。这些漏洞可以被用来劫持控制流。现存的控制流劫持攻击防御措施通常是对间接控制流跳转的目标进行校验,或保证代码指针的完整性。然而,此时攻击者依然可以通过修改函数指针的依赖将间接控制...使用C/C++语言编写的程序可能包含安全漏洞。这些漏洞可以被用来劫持控制流。现存的控制流劫持攻击防御措施通常是对间接控制流跳转的目标进行校验,或保证代码指针的完整性。然而,此时攻击者依然可以通过修改函数指针的依赖将间接控制流跳转的目标弯曲为合法但是不符合预期的值。为了解决这个问题,引入了控制相关数据完整性来保证函数指针以及它们的依赖的完整性。这些依赖决定了函数指针的定义和间接控制流跳转之间潜在的数据流关系。首先,控制相关数据完整性保护系统识别出所有函数指针;然后,使用过程间静态污点分析收集它们所依赖的数据;最后,系统将这些控制相关数据分配到硬件保护的内存Ms中来阻止未授权的修改。在SPEC CPU 2006 benchmarks和Nginx上测量了控制相关数据完整性保护系统的开销,并在三个真实世界的漏洞和一个虚表指针劫持攻击的测试集测试了它的有效性。结果显示,设计的系统能够成功检测到所有攻击,同时在C/C++benchmarks上只有约10.2%的平均开销,在Nginx上约是6.8%,在可接受范围内。实验表明,控制相关数据完整性保护系统是有效且实用的。展开更多
文摘针对影子栈难以兼顾安全性和性能,软件实现的前向CFI(control-flow integrity)技术性能开销过大、难以进行实际部署,提出基于软硬件结合的CFI(control-flow integrity based on the combination of software and hardware,SHCFI)技术。通过二进制重写器对程序反编译,生成中间语言,并判断转移指令类型。对于后向控制流的保护,提出基于返回地址加密的平行影子栈方案,使用随机数对栈上的返回地址进行异或加密,将加密结果备份到原始栈固定偏移处的影子栈中,在函数返回时对影子栈中的地址异或解密,将解密结果作为实际的返回地址。对于前向控制流的保护,使用硬件ENDBRANCH状态机指令标记间接转移指令的目标地址,在运行时对目标地址进行合法性检查,以降低性能开销。实验结果表明,SHCFI加固后的程序能够有效地防御代码重用攻击,且具有良好的运行开销。
文摘使用C/C++语言编写的程序可能包含安全漏洞。这些漏洞可以被用来劫持控制流。现存的控制流劫持攻击防御措施通常是对间接控制流跳转的目标进行校验,或保证代码指针的完整性。然而,此时攻击者依然可以通过修改函数指针的依赖将间接控制流跳转的目标弯曲为合法但是不符合预期的值。为了解决这个问题,引入了控制相关数据完整性来保证函数指针以及它们的依赖的完整性。这些依赖决定了函数指针的定义和间接控制流跳转之间潜在的数据流关系。首先,控制相关数据完整性保护系统识别出所有函数指针;然后,使用过程间静态污点分析收集它们所依赖的数据;最后,系统将这些控制相关数据分配到硬件保护的内存Ms中来阻止未授权的修改。在SPEC CPU 2006 benchmarks和Nginx上测量了控制相关数据完整性保护系统的开销,并在三个真实世界的漏洞和一个虚表指针劫持攻击的测试集测试了它的有效性。结果显示,设计的系统能够成功检测到所有攻击,同时在C/C++benchmarks上只有约10.2%的平均开销,在Nginx上约是6.8%,在可接受范围内。实验表明,控制相关数据完整性保护系统是有效且实用的。