Page 285 - 《软件学报》2020年第11期
P. 285
3600 Journal of Software 软件学报 Vol.31, No.11, November 2020
这些攻击实例在检测点“可见”的 gadgets-chain 长度都小于 kBouncer、ROPecker 以及 MIBChecker 常规
ROP 检测的检测阈值,因此会绕过这些防御机制的检测.对比结果表明,相对于这些仅依靠长 gadgets-chain 特征
判定 ROP 攻击的检测方法,引入系统调用检测方法的 MIBChecker 在短 gadgets-chain 攻击防御方面具备较为明
显的优势.
4.2 性能评估
我们采用 SPEC2006 作为 Benchmark 对 MIBChecker 的性能开销进行了评估.SPEC2006 测试集包含两个
子测试集:SPECint2006 整型测试集和 SPECfp2006 浮点测试集.SPECfp2006 浮点测试集由于版本兼容问题,部
分程序编译失败,而且与整型测试集相比,浮点测试集中分支指令比重较少,受 MIBChecker 影响较小,因此该评
估主要集中在 SPECint2006 测试集上,仅对当前编译通过的部分浮点测试集程序进行评估.
首先,针对 SPEC2006 的间接分支事件进行了采样,见表 6.
Table 6 Branch related PMU event counter on SPEC2006
表 6 SPEC2006 上分支相关 PMU 事件计数
程序 预测失败的间接分支执行事件数 执行的间接分支数 所需检测的分支减少比例(%)
400.perlbench 2 130 356 154 47 210 407 260 95.49
401.bzip 296 416 065 8 112 479 919 96.35
403.gcc 459 151 686 11 809 447 072 96.11
429.mcf 1 254 075 8 556 327 85.34
445.gobmk 33 486 205 808 133 481 95.85
456.hmmer 1 263 206 8 658 138 85.41
458.sjeng 3 458 946 719 34 930 617 758 90.10
462.libquantum 695 361 5 009 294 86.11
464.h264ref 3 860 320 26 420 321 85.38
471.omnetpp 3 884 031 28 671 677 86.45
473.astar 1 278 374 8 642 528 85.20
483.xalancbmk 319 495 152 18 514 692 642 98.27
433.milc 653 106 4 457 463 85.34
444.namd 1 185 799 8 169 297 85.48
450.soplex 2 529 271 17 239 736 85.32
470.lbm 665 000 4 557 532 85.40
482.sphinx3 10 352 577 75 785 775 86.33
从该表可看出,MIBChecker 利用硬件 BPU 的特性,能够将所需检测的间接分支平均减少 89.06%(最多减少
了 98%,最少减少了 85.27%).
为了进一步确认 MIBChecker 真实引入的性能开销,我们对开启和未开启 MIBChecker 情况下的 SPEC2006
程序分别进行了性能采样(每个程序运行 10 遍取平均值),性能评估结果对比如图 9 所示.
Fig.9 Performance overhead on SPEC2006
图 9 SPEC2006 性能开销
MIBChecker 平均引入 5.7%的性能开销,对于大部分 SPEC2006 程序性能开销均在 3%以内,只有少数程序