| Control-Flow Integrity(CFI)is one of the most promising technique against control-flow hijacking attacks,which checks the validity of the control flow by using a control-flow graphs(CFG).For Commercial Off-the-Shelf(COTS)binaries,traditional CFI methods are usually context-insensitive so that they can decrease the runtime overhead.However,context-insensitive CFI methods can not generate an enough accurate CFG,so they hardly defend against elaborately designed attacks.On the other hand,the existing partially context-sensitive CFI method makes some context-insensitive rules,which results that many invalid edges will be generated in CFGs,and will be utilized by attackers.Fully Context-Sensitive CFI(FCCFI)for COTS binaries provides a novel control-flow checking method,which checks the validity of the control flow for the whole execution path.FCCFI is run in the offline analysis phase and the runtime phase.During the offline analysis phase,FCCFI gathers the control-flow information of the execution paths and stores it as hash value into the data base files,and gathers basic-block information by using disassembling technique.During the runtime phase,FCCFI tracks the execution path by using the hardware features to gather process-tracking information,and then checks the validity of the control flow by comparing the control-flow information and the process-tracking information.FCCFI is implemented in Linux,and is evaluated from the security and the performance.FCCFI can defend against most common control-flow hijacking attacks as well as novel attacks.Meanwhile,it can introduce a very low runtime overhead and the analysis time focuses on the offline analysis phase.The runtime overhead is 1.5% on average in the lazily checking mode and 6.5% on average in the just-in-time checking mode. |