控制流完整性检测(control flow integrity detection),理学-计算机科学技术-信息安全-信息系统安全-软件安全-软件安全防御,一种抵御控制流劫持攻击的安全防御技术。是通过分析程序代码,获取控制流图,为每条间接转移指令(包括间接跳转、间接调用和函数返回指令)维护跳转目标白名单,在程序运行时检测跳转目标的合法性。控制流完整性(control flow integrity,CFI),又称控制流完整性检测,是约束程序按照预先定义好的控制流图(control flow graph,CFG)执行,确保程序不会背离编写时所设计的控制流转移关系。控制流完整性在实现上被分为粗粒度和细粒度两种。粗粒度控制流完整性是将一组类似或相近类型的目标归到一起进行检查,这种方法易实现且开销低,但安全性较弱。细粒度控制流完整性则严格控制每一条间接转移指令的跳转目标,有的甚至考虑了上下文敏感性,这种精细的检查具有较强的安全性,但也通常会引入更大的性能开销。跳转目标的检测一般通过在间接转移指令前插桩代码来实现,这种方法会引入较大的性能开销。