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%以内,只有少数程序
   280   281   282   283   284   285   286   287   288   289   290