Page 309 - 《软件学报》2024年第6期
P. 309

徐建 等: LibPass: 基于包结构和签名的第三方库检测方法                                                2885


                       基准数据 源码  可用  集公开  否  √  ×  否   √  否      ×  否        √  是    √  否   否  √     √  是





                       F1-score (%)  无混淆 有混淆  24.39  90.64  17.00  83.55  24.19  83.00  23.82  91.37  55.36  92.05  -  -  -  -  54.22  94.92





                       检测  效率 (s)  ~2.8      <7       >800      >500        < 50     -     -        <15





                        本文工作的针对性改进 1) 引入包结构相似度量进行候选TPL筛 选, 解决人工设定相似性阈值的问题; 2) 提出基于多级签名的细粒度检测方法, 解决签名机制缺陷导致的漏报; 3) 设计了一种新的基于包结构树的表示 方法应对方法移除、类移除、包扁平化  等混淆技术的干扰 1) 提出基于多级签名的细粒度检测方法, 解决签名机制缺陷导致的漏报和误报; 2) 设计了一种新的基于包结构树的表示 方法应对方法移除、类移除、包扁平化  等混淆技术的干扰  引入包结构相似度量进行候选TPL筛选, 解决人工设定相似性阈值的问题  1) 引入包结构相似度量进行候选TPL筛 选, 解决人工设定相似性阈值的问题; 2) 设计了一种新的基于包结构树的表示 方法应对方法移除、类移除、包扁平化  等混淆技术的干扰; 3) 设计主模块识别和基于包结构的快速 检测组件改进检测效率  引入包结构相似度量进行候选TPL筛选, 解决人工设定相似性阈值的问题  -  -  -





                    表 2    与现有的基于相似性的方法比较  方法优点或贡献  首次提出Merkle树结构表示APP或  按照函数、类、包、    TPL (或APP)等层级提取特征  设计了5种方法字节码抽象表示以应  考虑方法及其间调用关系构建方法 特征映射为字符串作为APP或TPL摘 要用于相似性比较, 能抵御代码变更  改进LibScout签名机制, 考虑依赖关 系提出基于加权的签名机制, 以提升  设计基本块连同类特征的签名机制 提升扁平化、代码优化和控制流改 变混淆情形下的检测精度; LSH哈希 方式避免成对比较, 提高效率; 能区  改进LibScout, 新增函数特征向量降 低误匹配, 通过参数自整定方式自动  考虑包结构和内容信息刻画TPL或 APP应对多种混淆, 包括代码压缩、 优化和标志符混淆; 通过边缘计算提  设计了基于包结构树的表示方法, 提 出了包结构树整形方法改变包排序 方式和重命名以应对标志符混淆、 压缩操作; 能区分导入的TPL版本; 无 需人工设定相似性阈值












                                                                                      调优, 无需人工设定
                                                                               分导入的TPL版本

                                                                                              升检测效率
                                                                  检测精度


                                                                        类签名相似
                                                                            后依赖相似
                                                                                                 包结构树签
                                                                                   树自底向上
                                                       而后类相似
                                                        性精确查找
                                                                              性, 最后库
                                                     似性快筛,
                       相似性  比较方式  树自顶向下  TPL中的包,  逐层比较  方法相似性  快筛、而后 对方法和类混淆  类相似性  APP-Lib 相 一组方法级  名快筛, 而  后类相似性  精确查找
                                                                                     逐层比较
                                                                逐对比较
                                                                                           逐对比较
                                                                                相似性
                       采用的  相似性度量  类库相似性、  包相似性、类  相似性和方法  相似性  方法相似性、  类相似性  APP-Lib 相似  性、类签名相  似性  加权模糊类签  名相似性  类签名相似性、性快筛, 而  依赖相似性、  库相似性  包相似性、类  相似性  图相似性  包结构树相似  性、加权类签  名相似性
                        表示形式     固定深度  Merkle树  一组方法级  字节码特征  字节码特征  固定深度  Merkle树  增强的类签  名字典  固定深度  Merkle树  API调用图  包结构树



                       检测方法  (年份)  LibScout [14]  (2016)  LibDetect [31]  (2017)  Orlis [28]  (2018)  LibPecker [15]  (2018)  LibID-A [16]  (2019)  LibSeeker [33]  (2019)  PanGuard [32]  (2019)  LibPass
   304   305   306   307   308   309   310   311   312   313   314