草庐IT

ARM PAC/BTI/MTE三剑客精讲与实战

一、PAC指针认证精讲与实战思考1、什么是栈溢出攻击?什么是代码重用攻击?区别与联系?2、栈溢出攻击的软&硬件缓解技术有哪些?在TF-A&OPTEE上的应用?3、什么是ROP攻击?对ROP攻击的缓解技术?4、PAC下的ROP如何缓解?对返回地址的签名与验证?5、PAC的架构细节?硬件原理?PAC如何生成?如何检查?指令集?6、PAC如何启用?构建PAC的编译选项控制?7、PAC功能如何验证?PAC检查失败时发生什么?问题如何定位?8、PAC性能开销?如何进行优化?9、PAC存不存在安全性问题?侧信道攻击?10、PAC与BTI、MTE的关系如何?标记是否有冲突?课程大纲1、代码重用攻击及栈溢出攻

ARM BTI安全特性使用效果示例

以下是一个简单的ARM平台JOP利用案例,其中漏洞存在于`vulnerable_func`函数中:```c#includevoidvulnerable_func(){  asmvolatile(    "movr0,#0\n"    "pop{pc}\n"  );}intmain(){  void(*func_ptr)()=vulnerable_func;  //函数指针越界将执行流转移到一个攻击者控制的代码段  func_ptr();  return0;}```在这个示例中,`vulnerable_func`函数中的汇编代码使用`pop{pc}`指令,该指令从堆栈中弹出一个值,并将其作为程序