论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
LibAM: An area matching framework for detecting third-party libraries in binaries | 2023年 | TOSEM | CCF A | 信工所 |
研究背景:第三方库(TPL)被广泛应用于软件开发中,以加快开发进度和集成外部功能。然而,不安全的TPL重用可能导致严重的安全风险。现有检测TPL重用的方法通常依赖于提取字符串或进行函数匹配,但由于字符串重复和大量相似非同源函数的存在,这些方法常常效果不佳。此外,不同优化选项和架构下的C/C++二进制文件差异加剧了这一问题。现有方法也难以识别目标二进制文件中重用的具体代码部分,这限制了复杂重用关系的检测和下游任务的进行。
研究意义:提出一种新的Area Matching框架LibAM,可以在不同优化选项和架构下实现更准确和更鲁棒的TPL检测。LibAM连接孤立的函数形成函数区域,并比较这些区域的相似性,从而缓解了不同优化选项和架构对检测结果的影响。LibAM可以检测出目标二进制文件中重用的具体代码区域,而不仅仅是哪些TPL被重用,这为下游任务如漏洞关联分析等提供了更细粒度的信息。构建了首个涵盖不同优化选项和架构的TPL检测数据集,可用于评估现有方法在复杂场景下的鲁棒性和可扩展性。评估了LibAM在大规模IoT固件上的性能,发现了许多潜在的漏洞,显示了LibAM在下游任务中的应用前景。
数据集:为了全面评估LibAM在不同环境中的准确性,论文利用一个独立的数据集训练模型,并利用三个额外的数据集进行评估。数据集信息如下表所示。
其中,Dataset_OSS来自GitHub和SourceForge中的260个常用开源项目,研究人员将这些项目编译成22100个二进制文件,涵盖三种架构(ARM、x86、x64)和四个优化选项(O0、O1、O2、O3)。开源软件数据集,以JSON文件的形式记录了开源项目的名称及对应版本
Dataset_ISRD来自ISRD实用的现实世界数据集,该数据集包含来自24个流行开源项目的85个二进制文件,实用x64中的默认优化选项进行编译,并包含74个真正的部分重用。ISRD数据集,分别记录TargetBinaries(17)与TLPs(85)
Dataset_ExtISRD在现有TPL数据集的基础上手动编译三种架构和四种优化选项的二进制文件来实现ISRD数据集的扩展,这个扩展数据集包含289个二进制文件和477个真实的部分重用。扩展的ISRD数据集,分别记录TargetBinaries(204)与TLPs(85)
Dataset_FW来自现实世界固件,该数据集包含来自10个不同供应商的167个固件。固件涵盖各种设备,例如IP摄像机、路由器以及交换机。研究人员实用Binwalk解压固件并提取了12,699个二进制文件。固件数据集,以JSON文件的形式记录了固件名称,以TXT文件记录了TPL信息
实验结果:构建了首个面向不同优化选项和架构的C/C++二进制文件TPL检测数据集。实验结果表明,LibAM在TPL检测任务中优于现有方法,并能够提供可解释的检测结果,准确识别重用区域。在大规模IoT固件中评估LibAM的可扩展性,并发现了一些有趣的发现,如不同目标二进制文件倾向于重用相同的TPL代码区域。TPL识别
对比工作:LibDX(针对安卓) 、B2SFinder(数据集未开源)、ISRD_Gemini、LibDB(针对安卓)
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
LibvDiff: Library Version Difference Guided OSS Version Identification in Binaries | 2024年 | ICSE | CCF A | 信工所 |
研究背景:开源软件(OSS)已被广泛用于加快软件开发的进程,但也不可避免地使下游软件面临潜在漏洞的风险。准确识别OSS的版本不仅有利于检测与之相关的漏洞,还能在1-day漏洞发布时及时发出警报。然而,现有的版本识别方法主要依赖于版本字符串或常量特征,这些在编译的OSS二进制文件中可能不存在,或者在仅函数代码发生变化时可能无法代表版本差异。因此,这些方法在识别OSS二进制文件版本时往往不够精确。
研究意义:作者提出了LibvDiff,一种基于版本差异的新型OSS版本识别方法。它通过精确的符号信息和函数级代码变化检测二进制代码相似度,来捕捉不同版本之间的细微差异。LibvDiff还引入了基于新颖版本坐标系统的候选版本过滤器,以提高识别效率。同时,它提出了基于函数调用的锚定路径过滤器,以最小化需要比较的函数数量,进一步加快识别过程。论文通过大量实验和对真实固件镜像的分析,证明LibvDiff在版本识别精度和效率方面明显优于现有方法,可以帮助开发者及时检测和应对开源软件中的漏洞风险,对提高软件安全性具有重要意义。
数据集:论文从Github及其官方网站收集了 9 个广泛使用的 OSS 的源代码,如下表所示。 这些 OSS 可以根据其功能(例如文档格式化和压缩)分为不同的组。 论文使用不同的编译选项将源代码编译为二进制文件,包括使用 GCC v9.4.0 的 4 个架构(ARM、X86、X64、PPC)和 4 个优化级别(O0、O1、O2、O3)。 论文总共获得了所有 OSS 的 168 个不同版本,得到了 2688 (168 * 16) 个二进制文件。
经过对 ARM 编译的二进制文件进行手动验证,论文发现收集到的 OSS 中有 3 个不包含版本字符串, 即 libxml2、aws-c-common 以及 freetype。 为了评估论文方法的版本识别能力,论文构建了两个数据集,D1包含带有版本字符串的OSS,D2包含不带版本字符串的OSS。 所有版本识别实验中都使用两类二进制文件:源二进制文件(即带有源选项的二进制文件)和目标二进制文件(即带有目标选项的二进制文件)。 前者用于二进制特征的提取,后者用于版本识别测试。 论文设计了三种实验设置来测试每种方法在不同编译选项下的可扩展性。
- CO(交叉优化):源二进制文件和目标二进制文件在共享相同架构的同时表现出不同的优化(即 4 * 3 = 12 种组合)。 由于物联网固件中的大多数二进制文件都使用ARM,因此我们在CO实验中选择ARM作为相同的架构。
- CA(跨架构):源二进制文件和目标二进制文件表现出不同的架构(即 4 * 3 = 12 种组合),同时共享相同的优化。 由于大多数默认编译优化级别都是O2,因此我们在CA实验中选择O2作为相同的优化级别。
- CO+CA:源二进制文件和目标二进制文件具有不同的架构并同时进行优化。 更具体地说,对于 CO 和 CA 实验,我们在一个编译选项(例如 O0/X86)中使用二进制文件来提取特征并识别其他三个编译选项中的二进制文件。 对于CO+CA实验,我们使用arm O2中的二进制文件来提取特征并识别其他编译选项中的二进制文件,即带有O0、O1和O3的PPC,带有O0、O1和O3的X64和带有O0、O1和O3的X86 , 分别。 对于每个源和目标选项对(例如,O2 到 O3),论文采用精度 ( 𝑃=𝑚 𝑁 ) 作为评估每种方法有效性的指标,其中 𝑁 是测试的 OSS 二进制文件的数量,𝑚 是测试的 OSS 二进制文件的数量 的正确识别结果。 最终,论文通过特定实验(例如CO)中所有OSS(例如OpenSSL)的所有编译选项对(例如ARM-O0和ARM-O2)的平均精度来计算表2中的最终条目。
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
One Bad Apple Spoils the Barrel: Understanding the Security Risks Introduced by Third-Party Components in IoT Firmware | 2024年 | IEEE TDSC | CCF A | 浙江大学 |
研究背景:物联网设备数量近年来呈指数级增长,给安全带来了严重隐患。物联网固件大量依赖第三方组件(Third-Party Components, TPCs)来提高开发效率,但这些TPC往往存在安全漏洞,影响了固件整体的安全性。现有研究鲜少关注TPC引入的漏洞问题,缺乏对固件安全风险的全面理解。
研究意义:该研究设计并实现了FIRMSEC框架,利用语法特征和控制流图特征检测固件中的TPC,并识别相应的漏洞。基于FIRMSEC对34,136个固件镜像进行了大规模分析,检测出584个TPC和12.8万个由429个CVE引起的漏洞。研究发现TPC引入的漏洞问题非常普遍,随着物联网生态的发展而持续增长。分析还显示,有2,478个商业固件可能违反了GPL/AGPL许可协议。该研究填补了现有对TPC引入的漏洞缺乏深入理解的知识缺口,对于加强物联网设备安全具有重要意义。通过大规模、全面的固件安全分析,该研究揭示了物联网设备安全现状,为制定有针对性的安全防护措施提供依据。
数据集:论文的数据集包括11,086个可公开访问镜像和23,050 个私有镜像(TSmart),论文的数据集可通过联系binbin.zhao@gatech.edu获得。
研究团队采集了来自13个厂商的35中不同类型设备的固件镜像,这些镜像合计35,978个。具体来说,其中12,913个固件镜像来自于互联网,23,065个固件镜像来自于私有固件供应商TSmart。警告数据过滤,研究团队除去了1,842个非固件文件,最终获得34,136个固件镜像。
GitHub - NESA-Lab/FirmSecDataset: FirmSec Dataset
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
LibDB: An effective and efficient framework for detecting third-party libraries in binaries | 2022年 | MSR | CCF C | 清华大学 |
研究背景:第三方库(TPL)被广泛应用于现代软件系统的开发中,可以减少开发成本。然而,第三方库的使用也可能带来安全隐患,如著名的"Heartbleed"漏洞。此外,对第三方库的非合规重复使用可能导致商业纠纷。许多开发者没有足够重视所引入的第三方代码。为了应对第三方库带来的威胁,研究人员和商业产品提出了大量的检测方法,但大多集中于源代码或Java字节码形式,而针对C/C++二进制文件的检测相对较少。
研究意义:本文提出了一个名为LibDB的二进制第三方库检测框架。与现有方法相比,LibDB不仅利用了基本特征(字符串文字和导出函数名),还引入了函数内容作为新的特征类型,将函数嵌入到低维表示中。此外,它还采用了基于函数调用图(FCG)的比较方法,以提高检测的准确性。与现有方法不同,LibDB还能够支持所检测的第三方库的版本识别。实验结果表明,LibDB在二进制第三方库检测和版本识别任务上都优于现有工具。该框架的设计可以有效地解决现有方法存在的低精度、低召回率和粗粒度版本识别的问题,对于提高第三方库使用的安全性和合规性具有重要意义。
数据集:为了对所提系统进行全面评估,论文构建TPL Binary Dataset、Cross-5C Dataset以及FedoralLib Dataset。其中,Cross-5C Dataset包括手动编译的库,用于训练和评估函数比较模型。具体来说,研究人员收集了13个项目,涵盖图像处理、数据库、加密等领域,项目中的函数都会在尽可能多的编译条件下编译为多个实例。
FedoralLib Dataset基于Fedoral镜像管理器进行构建,收集了镜像管理器所有大型TPL的历史版本,这些镜像中的包数量非常大(40万)。研究人员进一步选择NVD中可以找到的库,获得997个库(25000个版本和200000个比较单元)。
TPL Binary Dataset 是二进制TPL识别和版本识别任务的 Ground Truth。二进制文件中没有 TPL 识别的公开数据集,TPL Binary Dataset 是利用二进制软件的复用关系建立的。具体来说,研究人员通过一系列工作确定二进制中存在的TPL,共收集172对重用关系。
实验结果:LibDB在二进制第三方库检测任务和版本识别任务上,都优于现有的最新方法。函数检索模块可以有效地弥补基本特征不足的情况,尤其在基本特征只有50%时能达到最高的F1值。函数调用图过滤器可以显著提高各种方法的精确度,同时保持较高的召回率。TPL识别+版本识别,数据集为 apk 样本
对比工作:LibDX 、B2SFinder
GitHub - DeepSoftwareAnalytics/LibDB;Dataset of LibDB
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
LibDX: A cross-platform and accurate system to detect third-party libraries in binary code | 2020年 | SANER | CCF B | 清华大学 |
研究背景:随着开源技术的发展,第三方库的复用已经成为编程中的普遍实践。应用程序开发者可以复用这些第三方库代码以节省时间和开发成本。但是,第三方库的误用可能会带来一些隐藏的风险,如许可证违反和安全漏洞。对用C或C++编写的库进行识别受到编译过程的影响,编译后的二进制代码会隐藏大部分原始代码特征。同一个开源包经过不同的编译过程会生成不同的二进制代码。因此,这篇论文提出了LibDX,一个跨平台和全自动的系统,用于检测二进制文件中复用的第三方库。
研究意义:第三方库检测是检测许可证违反和导入漏洞的基础。通过维护一个库信息数据库,分析人员可以获得关于潜在许可证违反和安全风险的报告。LibDX作为一个跨平台和全自动的系统,可以克服二进制文件之间编译差异的挑战,并采用新颖的逻辑特征块概念来处理大规模特征数据库中的特征重复问题。实验结果表明,LibDX在准确性和性能方面优于现有的相关工具。通过分析真实世界的应用程序,LibDX还发现了一些GPL许可证违反的案例。因此,LibDX的研究对于减少第三方库引入的安全和许可证风险具有重要意义。TPL识别
实验结果:构建了涵盖多个平台的大型测试数据集,评估了LibDX的性能。在9.5K个包含25.8K个C/C++二进制文件的数据集上,LibDX达到了92%的精度和97%的召回率,优于现有最先进的工具。对封闭源商业应用进行了验证,发现了一些许可证违反案例。
对比工作:OSSPolice、BAT
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
ModX: binary level partially imported third-party library detection via program modularization and semantic | 2022年 | ICSE | CCF A | 信工所 |
研究背景:随着软件规模的快速增长,使用第三方库(Third-Party Library, TPL)已经成为软件开发中非常普遍的做法。据统计,超过90%的组织在应用开发中会使用第三方库,大约80%的应用代码来自于库依赖。然而,随着软件规模的不断扩大以及涉及的第三方库数量越来越多,准确跟踪所有导入的第三方库变得非常困难。大量使用未经控制的第三方库会带来许多问题,如代码审计(许可证违反)、恶意软件影响、以及意外漏洞引入等。因此,准确检测软件中使用的第三方库已成为一项重要的研究课题。
研究意义:现有的基于语法特征的第三方库检测方法存在两个主要局限性:(1)它们通常基于整个第三方库的特征进行匹配,对于程序只使用部分第三方库代码的情况无法有效检测;(2) 它们过度依赖字符串等容易被篡改的语法特征,无法抵御恶意篡改隐藏第三方库信息的攻击。
这篇论文提出了ModX框架,利用程序模块化技术和语义特征匹配,能够有效检测程序中完全或部分导入的第三方库。该方法首先将程序和第三方库分解为功能模块,然后基于语法和语义特征计算模块间的相似度,从而检测第三方库的使用情况。实验结果表明,ModX在精确度和召回率方面都优于现有的第三方库检测工具,对于保护程序安全性和支持软件审计等方面具有重要意义。此外,程序模块化技术本身也可以应用于逆向工程、攻击面检测等其他软件工程任务。TPL识别
实验结果:ModX生成的模块质量评分显著高于其他程序模块化工具,平均提高353%。ModX在库检测和包检测任务上的平均精确率和召回率分别超过其他方法17%和8%。ModX在模块化性能上优于现有工具,但在第三方库检测性能上稍逊,需要平衡精度和性能取舍。
对比工作:OSSPolice、BAT
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
{UVSCAN}: Detecting {Third-Party} Component Usage Violations in {IoT} Firmware | 2023年 | USENIX | CCF A | 佐治亚理工学院 |
研究背景:物联网设备的固件中集成了大量的第三方组件(Third-Party Components, TPCs)以缩短开发周期。这些TPC通常有严格的使用规范,如检查函数的返回值。但如果开发者未能严格遵守TPC的使用规范,就会导致严重后果,如空指针引用等。这种大规模的TPC集成如果没有得到适当实施,将导致物联网设备中普遍存在漏洞。自动检测TPC集成中的漏洞是一项具有挑战性的任务,主要包括两个方面:(1)高级TPC文档的规范和固件中的低级实现之间存在差距;(2)物联网固件映像大多是闭源二进制文件,在从源代码编译时会丢失大量信息,且架构多样。
研究意义:该研究旨在设计和实现UVSCAN,一个自动化且可扩展的系统,用于检测物联网固件中的TPC使用违规。该系统可为以下几类群体提供帮助:(1)物联网供应商可以使用该系统检测自己使用的TPC是否存在使用违规,从而提高设备的安全性;(2)物联网安全公司可以利用该系统对物联网设备进行全面的安全评估,即使设备的固件是闭源的; (3)消费者也可以使用该系统了解自己所使用的物联网设备是否存在TPC使用违规导致的漏洞,保护自己的隐私和财产安全。总之,该研究有助于解决物联网设备普遍存在的TPC使用违规问题,提高物联网设备的安全性,为物联网生态圈的健康发展作出贡献。TPL识别,API
数据集:为了实现所提系统的有效评估,论文构建了TPC documents dataset、API description dataset、MRC dataset、Programming expression dataset、Real-world usage violation dataset六个数据集。
实验结果:在四种 TPC 和六个数据集上评估 UVSCAN 的性能。UVSCAN 在 API 描述提取和 API 规范推断方面都取得了较高的精度和召回率。与现有基于源代码的 API 误用检测器相比,UVSCAN 在二进制级别的检测性能也有显著提升。在 4,545 个固件映像上检测到 27,621 处使用违规。对几个固件映像进行了进一步的案例研究,发现使用违规可能导致拒绝服务攻击和中间人攻击等严重后果。目前已有 206 处使用违规被厂商确认为漏洞,其中 7 个被分配了 CVE ID 且严重程度较高。
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
B2SFinder: Detecting Open-Source Software Reuse in COTS Software | 2019年 | AES | CCF A | 信工所 |
研究背景:论文研究背景是COTS(商业现货)软件普遍基于开源软件(OSS)项目开发,导致存在OSS代码重用漏洞问题。大多数COTS软件中包含有已修复但未更新的OSS漏洞,会对COTS软件安全产生严重影响。为了检测这些OSS重用漏洞,需要尽可能准确地识别COTS软件中包含的OSS项目。现有的二进制到源代码匹配方法在分析COTS软件时存在精度低、仅支持有限特征类型以及忽略OSS项目代码结构等问题。
数据集:论文从精度和效率方面评估 B2SFINDER。 然后论文给出了在大量实际 COTS 软件产品中检测 OSS 重用漏洞的结果。 论文使用下面描述的两个二进制代码数据集和一个源代码数据集。
- 数据集 1:具有已知重用的二进制文件 (B1)。 该数据集包含 46 个官方(剥离的)二进制文件,由 23 个常用开源项目编译而成,涵盖不同的应用领域,包括视频解析(例如 VLC)、PDF 渲染(例如 SumatraPDF)和网络协议(例如 OpenSSL)。
- 数据集 2:现实世界的 COTS 软件 (B2)。 该数据集包含来自网站集合的 1000 个 COTS 软件产品的 21991 个二进制文件。 论文在GitHub上提供了这些产品的哈希列表。
- 数据集 3:公共开源库 (S)。 该数据集包含从 Ubuntu Packages(Ubuntu 的官方软件包存档)爬取的 2189 个开源库。
研究意义:该论文提出了一种新的二进制到源代码匹配方法B2SFINDER,以解决上述问题。B2SFINDER可以考虑7种可在二进制和源代码中跟踪的代码特征,并采用加权特征匹配算法精确计算匹配分数。同时,B2SFINDER利用OSS项目的代码结构识别不同类型的代码重用,提高了识别精度。实验结果表明,B2SFINDER相比现有方法,能在COTS软件中发现多达2.15倍的代码重用案例,且平均每个二进制文件分析时间为53.85秒。B2SFINDER还能帮助检测COTS软件中存在的OSS重用漏洞,对提高COTS软件安全性具有重要意义。TPL识别
实验结果:在真实的COTS软件和OSS项目数据集上进行了评估,结果显示B2SFINDER在精确性和效率方面都优于现有方法。在识别已知重用的基准测试中,B2SFINDER的精确度和召回率分别达到93.2%和88.5%,远高于现有方法。在大规模COTS软件分析中,发现19.2%的二进制文件(占63.4%的COTS软件)重用了至少一个OSS项目。10个最常重用的OSS项目平均包含54.7个已披露的漏洞,分析发现大量COTS软件存在潜在的OSS重用漏洞。
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Interpretation-Enabled Software Reuse Detection Based on a Multi-level Birthmark Model | 2021年 | ICSE | CCF A | 西安交通大学 |
研究背景:随着开源软件的普及,软件复用成为一种普遍现象。但是,大量复用现有代码会带来许多违反许可证条款的问题,以及因软件复用而引发的安全隐患。因此,如何有效检测软件复用行为成为一个迫切需要解决的问题。现有的二进制代码复用检测方法存在三个主要问题:(1)检测结果缺乏可解释性,无法提供详细的证据支持;(2)检测准确度较低,难以应对由于交叉编译导致的语义变化;(3)检测效率较低,需要大量的函数对比计算。
数据集:ISRD 将程序对的二进制代码作为输入。 为了进行彻底的评估,论文需要真实数据集,其中的二进制代码确实共享相同的代码。 为此,论文使用了两个数据集,包括论文自己构建的Dataset 1和Bingo和αdiff提供的广泛使用的基准数据集Dataset 2。
- Dataset 1:论文从开源平台(例如Github和SourceForge)下载了24个开源项目,它们属于不同的应用领域。然后,论文使用手动方法和自动方法选择并标记了总共 74 个真实的部分重用作为真实值。最后,构建了包含 24 个程序和 74 次部分重用的数据集。论文使用 gcc 和默认优化 (O2) 将这 24 个程序编译成二进制文件。数据集I的静态信息如表3所示,其中第三列和第四列的数字分别是程序源代码的行数和相应编译的二进制文件中的函数的数量。编译后,有些程序会生成多个二进制文件。在这里,论文仅提供评估中使用的二进制文件的信息。论文在中发布了数据集 I。
- Dataset 2:广泛使用的评估交叉编译稳健性的基准,采用它来比较 ISRD 与现有方法的性能。 Dataset-II 中的二进制文件是从实验对象 Coreutils 编译而来,它是用 C 编写的 GNU 操作系统的基本文件、shell 和文本操作实用程序。Coreutils 有 107 个组件,因此每次编译生成 107 个二进制文件。论文在实验中使用了三个编译器(gcc v4.6、gcc v4.8和clang v3.0)和四个优化级别(O{0, 1、2 和 3}),导致 107 个二进制文件中的每一个都有 12 个不同的变体。
研究意义:针对上述问题,论文提出了ISRD,一种基于多级程序指纹的可解释二进制代码复用检测方法。ISRD具有以下主要优点:(1)可解释性强,能够从粗粒度到细粒度地刻画程序语义,为检测结果提供详细的证据和理由;(2)检测准确度高,通过对基本块级和指令级进行语义归一化,能有效应对由交叉编译导致的语义变化;(3)检测效率高,提出"基于锚定识别的意图搜索"过程,大幅减少了函数对比的次数,同时保证了比较质量。TPL识别
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Open-Source License Violations of Binary Software at Large Scale | 2019年 | SANER | CCF B | 信工所 |
研究背景:开源软件的使用非常广泛,许多商业软件都依赖于开源项目中的代码。但是开发者在使用或修改开源项目源代码时并不总是严格遵守许可证条款。其中,GPL和AGPL这两种最流行的"copyleft"许可证最容易被违反,因为它们要求开发者如果使用了受保护的代码(无论是否修改),就必须将整个项目开源。然而,由于把二进制代码映射到源代码的效率和准确性挑战,目前很少有针对二进制软件的许可证违规检测工具。
研究意义:本文提出了一个可扩展和全自动的系统,用于大规模检测二进制软件中的开源许可证违规情况,主要针对GPL和AGPL许可证。该系统通过分析可执行文件的文件属性和编译不受影响的代码特征来实现二进制代码到源代码的映射。同时,为了应对大规模分析的障碍,系统还引入了一个自动提取可执行文件的模块,可以从广泛可获得的软件安装包中解压出可执行文件。实验结果表明,该系统在二进制到源代码的映射方面取得了很高的准确性和recall率,并成功发现了1000个真实二进制软件项目中7.2%存在GPL/AGPL许可证违规的情况。这项工作对于保护开源软件版权,监测和预防许可证违规行为具有重要意义。TPL识别
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Identifying Open-Source License Violation and 1-day Security Risk at Large Scale | 2017年 | CCS | CCF A | 佐治亚理工学院 |
研究背景:这篇论文探讨了移动应用程序开发过程中开源软件使用所带来的法律和安全隐患。论文的研究背景如下:移动应用市场日趋饱和,开发者为抢占先机,往往会大量使用第三方开源软件(OSS)来快速开发应用程序的通用功能,从而将精力集中在应用的独特特性和工作流上。然而,开发者对OSS的使用往往存在疏忽,这可能导致两个主要问题:(1) 违反OSS的许可协议;(2)使用存在已知漏洞的OSS版本,给最终用户的安全和隐私带来风险。
研究意义:提出了一种名为OSSPolice的自动化工具,能够有效地分析移动应用程序二进制文件,识别潜在的OSS许可违规行为以及使用了已知漏洞版本的OSS。对1.6百万款免费安卓应用程序进行大规模分析,发现超过4万款应用程序可能违反GPL/AGPL许可,超过10万款应用使用存在已知漏洞的OSS版本。分析结果显示,开发者违反OSS许可协议是由于缺乏替代选择,而使用存在漏洞的OSS则是尽管Google等公司已采取措施,但安全性改进效果仍有待提高。Android TPL 识别
https://github.com/lingfennan/osspolice
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
OSSFP: Precise and Scalable C/C++ Third-Party Library Detection using Fingerprinting Functions | 2023年 | ICSE | CCF A | 南洋理工大学 |
研究背景:第三方库(TPLs)广泛应用于软件开发中,可以提高开发效率。但大量使用第三方库也带来了安全隐患,因为第三方库可能引入漏洞和安全问题。软件组成分析(SCA)工具被提出用于检测和管理第三方库的使用。但现有的SCA工具在检测C/C++项目中使用的第三方库时,由于存在大量通用和简单函数,无法准确和快速地识别第三方库。
研究意义:针对现有SCA工具存在的问题,作者提出了OSSFP,一种基于指纹的新型SCA框架,能够有效和高效地在大规模实际项目中检测第三方库。OSSFP通过去除通用和简单函数,只保留核心函数来构建第三方库的指纹索引,大幅减小了数据库规模并加快了检测过程。同时也提高了检测的准确性,因为去除了噪音数据。在一个包含23,427个C/C++仓库、585,683个版本和900亿行代码的大数据集上,OSSFP的召回率和精确度分别达到90.84%和90.34%,显著优于现有最好的工具。OSSFP仅需平均0.12秒就能识别出项目中的所有第三方库,比其他工具快22倍,在大规模数据集上也有很好的可扩展性。源码级TPL识别
实验结果:OSSFP 提出了一种基于指纹函数的精确且可扩展的第三方库检测框架,通过去除共同和平凡函数,仅保留每个第三方库的核心函数来构建指纹库,大幅减少了数据库大小并加快了检测过程。OSSFP 能够在大规模真实世界项目中达到 90.84% 的召回率和 90.34% 的精确度,分别超过现有最先进工具 CENTRIS 35.31% 和 3.71%。OSSFP 平均每个项目只需 0.12 秒识别所有第三方库,比 CENTRIS 快 22 倍,在大规模数据集上具有高度可扩展性。
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Libhunter: An unsupervised approach for third-party library detection without prior knowledge | 2022年 | ISCC | CCF C | 信工所 |
研究背景:Android 应用程序中广泛使用第三方库(Third-party Libraries, TPL)来提供各种功能,如广告、推送通知、在线支付等。这些 TPL 已经成为 Android 生态系统的重要组成部分,占据了应用程序代码的60%左右。但同时也带来了一些安全隐患,如隐私泄露、广告欺诈等。因此,准确识别应用程序中集成的 TPL 成为移动应用安全研究的一个基础性工作。
现有的 TPL 检测方法主要有白名单方法和特征匹配方法,但都存在一些局限性:白名单方法难以跟上新 TPL 的出现,特征匹配方法需要事先获取已知的 TPL 信息才能训练模型,无法识别新出现或非公开的 TPL。这种依赖已有知识的方法会阻碍对当前 Android 生态系统的准确分析。
研究意义:为了解决现有方法的局限性,本研究提出了 LibHunter 框架,通过动态钩取 Android 系统 API 来分析应用的 HTTP(S) 流量和对应的代码执行痕迹,采用无监督的聚类算法来识别 TPL,无需依赖事先的 TPL 知识。这种方法可以自动发现新出现的 TPL,包括一些非公开的 TPL,为移动应用安全研究提供更加准确和全面的 TPL 信息。研究结果表明,LibHunter 识别出的79个 TPL 中,约60%是现有工具无法识别的,超过50%是不存在于公开仓库中的,但它们却占据了大部分的网络请求。这些发现对移动应用安全研究社区有重要启示,现有工具在处理当前应用时存在一定的局限性。Android TPL 识别,基于动态分析
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Automated third-party library detection for android applications: Are we there yet? | 2020年 | ASE | CCF A | 香港理工大学 |
研究背景:Android应用程序生态系统的快速发展带来了大量第三方库(TPL)的使用。开发者为了加快开发进度,会集成各种功能性的TPL,如广告、社交网络和分析等。然而,这种做法也带来了新的安全隐患。一些TPL可能包含恶意代码,一旦被集成到流行的应用程序中,就可能威胁大量移动设备用户。此外,TPL作为噪声,也会影响一些下游任务的结果,如重打包应用检测和恶意软件检测等。因此,针对Android平台的TPL检测研究应运而生。
研究意义:全面了解现有TPL检测工具的能力和使用场景,为开发者和研究者提供有价值的洞察。分析现有工具的优缺点,总结检测TPL的权衡,为未来改进和开发更优化方案提供指引。构建一个综合的评估基准,包括 59 个独特的 TPL 及其 2,115 个版本,为社区提供可靠的测试数据。集成现有可公开获取的TPL检测工具,并提供在线服务,为用户提供便利。此外,还对一些工具进行改进,提高其检测能力。Android TPL 识别
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
{LibScan}: Towards more precise {Third-Party} library identification for android applications | 2023年 | USENIX | CCF A | 西安邮电大学 |
研究背景:Android应用程序广泛使用第三方库(TPL)来复用功能并提高开发效率。然而,对TPL内部的不充分了解使开发者和用户面临严重的安全漏洞的威胁。为了缓解这些威胁,人们提出了多种方法来识别易受攻击或恶意的TPL。但是,现代混淆器(包括高级重新打包、死代码删除和控制流随机化)的丰富特性严重阻碍了对TPL的精确检测。
研究意义:该研究提出了一种名为 LibScan 的通用TPL检测方法。它首先对代码特征进行指纹识别,建立应用程序和TPL类之间的潜在类对应关系。然后使用方法操作码相似性和调用链操作码相似性来提高检测到的类对应关系的准确性。此外,它设计了提前停止标准和重用中间结果来提高LibScan的效率。实验结果表明,与现有方法相比,LibScan在大多数混淆级别下都表现更出色。LibScan还被应用于检测Google Play上1000个最流行应用程序中的205个易受攻击的TPL版本,以及100,000个实际应用程序中这205个TPL版本的使用情况。这些结果显示了LibScan的效率、可扩展性以及作为辅助恶意软件检测工具的潜力。总的来说,该研究提出了一种新颖和有效的TPL检测方法,为应用程序安全性分析提供了重要支持。Android TPL 识别
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Towards understanding third-party library dependency in c/c++ ecosystem | 2022年 | ASE | CCF A | 清华大学 |
研究背景:第三方库(TPL)广泛应用于软件开发中以降低开发成本和上市时间。但依赖外部库也可能引入漏洞。针对此问题,已有许多软件包管理器(如Maven、Pip、NPM)被提出。现有研究主要集中在Java、Python以及JavaScript等语言生态系统,但对于C/C++生态系统的库依赖问题却鲜有研究。由于缺乏统一的C/C++包管理器,人们对C/C++生态系统中的库依赖特点了解不足,缺乏大规模分析的方法和工具。
研究意义:深入理解C/C++生态系统中第三方库的依赖特点,包括依赖引入方式、依赖数据范围、关键依赖库等,为改善C/C++依赖管理提供依据。开发一种全面、精确的C/C++依赖检测工具CCScanner,能够有效应对C/C++依赖管理复杂性,支持大规模依赖分析。基于CCScanner对GitHub上24k个C/C++项目进行大规模依赖分析,得出一系列有价值的研究发现,为C/C++生态系统的未来发展提供建议。弥补现有研究对C/C++生态系统依赖特征了解的不足,为软件工程研究人员和开发者在库开发、软件构成分析、C/C++包管理等领域提供参考。依赖管理
GitHub - lkpsg/ccscanner: A C/C++ dependency scanner
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Third-party library dependency for large-scale SCA in the C/C++ ecosystem: How far are we? | 2023年 | ISSTA | CCF A | 南方科技大学 |
研究背景:软件组成分析(SCA)旨在识别和管理软件项目中包含的开源组件(即第三方库, TPL)及其对应版本,以跟踪可能引入的安全隐患和许可证违反问题。然而,现有的SCA技术在C/C++生态系统中会面临一个主要挑战 - 内部代码克隆。当一个TPL直接重用其他TPL的源代码时,会导致特征重复,从而影响SCA的准确性,产生大量误报。为解决这个问题,最新的SCA技术Centris采用了函数级代码克隆检测来推导TPL依赖关系,以消除特征冗余。然而,Centris推导的TPL依赖关系的准确性尚未得到广泛评估,其对SCA结果的影响也有限。因此,有必要进一步研究Centris的有效性和局限性。
研究意义:构建包含2,150个TPL依赖和128个二进制文件的大规模基准数据集,为TPL重用检测和二进制SCA提供评测基础。 对Centris进行广泛评估,发现其在TPL依赖推导和SCA效果上可能无法很好地推广到其他数据集,并分析其关键性能瓶颈。提出TPLite方法,通过函数级原始TPL检测和基于图的依赖推导,显著提高TPL重用检测的准确性。TPLite甚至优于业界领先的商业SCA工具,为C/C++生态系统的SCA带来了新的突破。源码级TPL识别
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Identifying Affected Libraries and Their Ecosystems for Open Source Software Vulnerabilities | 2024年 | ICSE | CCF A | 复旦大学 |
研究背景:开源库的广泛使用带来了安全隐患,软件成分分析(SCA)工具被采用来识别应用程序中存在的脆弱库。这些SCA工具依赖于漏洞数据库来获知每个漏洞影响的库。然而,手动维护这个漏洞数据库是一项繁琐且容易出错的工作。现有的基于极端多标签学习的方法虽然可以预测受影响的库,但由于标签集的有限性以及未考虑生态系统信息的问题,在实际应用中效果并不理想。
研究意义:该研究的意义在于:(1)通过对四个知名漏洞数据库进行实证分析,量化了受影响库及其生态系统信息的不一致性和不准确性;(2)提出了一种基于学习排序的自动识别方法,以提高漏洞数据库的质量。该方法从多个来源收集证据,并学习对库进行排序,可以准确识别受影响的库及其生态系统。这对提升SCA工具的有效性和实用性具有重要意义。总之,该研究旨在解决开源软件漏洞信息管理中的实际问题,为提高漏洞数据库质量做出贡献。漏洞排序
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Scalably detecting third-party Android libraries with two-stage bloom filtering | 2023年 | IEEE TSE | CCF A | 中国人民大学 |
研究背景:Android应用程序普遍包含第三方库(TPL),这带来了一些安全隐患。当应用程序集成了存在漏洞的第三方库时,可能会被动地引入安全风险。因此,准确和高效地检测Android应用程序中的第三方库已经成为一个重要的研究课题。但现有的检测技术通常存在效率较低的问题,在大规模环境下的应用效果不佳。此外,一些相对较快的检测方法也存在检测效果不够理想,特别是对于采用了复杂混淆技术(如重新打包和扁平化)的应用程序。
研究意义:论文提出了一种基于两阶段Bloom过滤器的第三方库检测方法LIBLOOM,旨在有效和高效地检测Android应用程序中的第三方库,特别是对于采用了非保持结构的混淆技术的应用程序。LIBLOOM将第三方库检测问题抽象为一个集合包含问题,利用Bloom过滤器进行高效的多阶段查询,大大提高了检测速度,同时通过一种基于熵的相似性度量方法特别处理了被重新打包和扁平化的应用程序,从而提高了检测的准确性。通过在大规模基准测试中的评估,LIBLOOM已被证明在效率和有效性方面都优于现有的检测工具。该方法在面对大规模第三方库数据库和复杂混淆技术时,为准确和高效地检测Android应用程序中的第三方库提供了一种有效的解决方案,具有重要的实际应用价值。Android TPL 识别
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
LibKit: Detecting Third-Party Libraries in iOS Apps | 2023年 | ESEC/FSE | CCF A | IMDEA软件研究所 |
研究背景:移动应用程序通常包含第三方库(Third-Party Libraries, TPLs)来提供各种功能,如加密、网络通信、数据存储等。了解移动应用所使用的第三方库对于多个利益相关方来说都很重要:(1)公司在选择不同的应用程序时,需要了解这些应用程序是否包含易受攻击的第三方库;(2)一旦发现某个恶意的第三方库,用户需要知道自己的应用程序是否包含这个库;(3)如果发现某个应用程序存在隐私泄露行为,监管机构需要确定该行为是源自应用程序还是其使用的第三方库;监管机构需要评估广告库的普及程度,以决定广告公司合并是否会产生市场主导地位。
然而,由于大多数移动应用程序和第三方库都是闭源的,需要在已发布的应用包中识别第三方库,而不能依赖于源代码。这需要解决三个问题:(1)边界识别,将应用程序代码与第三方库代码分离;(2)库识别,输出应用程序使用的所有第三方库名称;(3)库版本识别,输出应用程序使用的第三方库的名称和版本。
研究意义:论文提出了LibKit,这是首个能够识别iOS应用程序所使用的第三方库名称和版本的工具。与先前仅能识别边界的iOS第三方库识别方法不同,LibKit能够准确地输出第三方库的名称和版本信息。这对于上述涉及第三方库的各种场景都具有重要意义。LibKit的特点包括:(1)自动构建了86,597个第三方库版本的指纹数据库,覆盖了CocoaPods存储库中的大部分库;(2)创建了95个开源应用程序的库名称ground truth和43个开源应用程序的库版本ground truth;(3)LibKit的性能优于基线工具CRiOS,在iOS应用上的准确性也优于在Android应用上报告的最佳工具。总的来说,LibKit的研究成果可以为未来的iOS第三方库识别工作提供有价值的基准。iOS TPL 识别
---------------------------------------------------------------------------------------------------------------------------------
论文名称 | 发表时间 | 发表期刊 | 期刊等级 | 研究单位 |
Atvhunter: Reliable version detection of third-party libraries for vulnerability identification in android | 2021年 | ICSE | CCF A | 香港理工大学 |
研究背景:Android应用程序已经成为移动生态系统中最重要的组成部分之一,其快速发展得益于大量第三方库(TPL)的广泛使用。然而,TPL的广泛使用也带来了一些安全隐患,因为攻击者可以利用TPL中的漏洞对应用程序进行攻击。现有的TPL检测工具存在一些局限性,如检测recall较低、无法精确识别TPL版本等,这给TPL漏洞识别带来很大挑战。同时,缺乏公开的Android TPL漏洞数据集也影响了该领域的研究进展。
研究意义:提出了一个名为ATVHUNTER的系统,能够精确识别Android应用程序中使用的TPL版本,并检测这些TPL版本中的已知漏洞,为应用程序安全性评估提供支持。构建了一个包含189,545个TPL和3,006,676个版本的大规模TPL特征数据库,以及一个包含1,180个CVE和224个安全缺陷的Android TPL漏洞数据集,为后续研究提供重要的数据支撑。通过对100多万个Android应用程序的大规模分析,发现有9,050个应用程序包含53,337个已知漏洞和7,480个安全缺陷的易受攻击的TPL版本,揭示了Android应用程序生态系统中TPL安全问题的严重性,具有重要的现实意义。Android TPL 识别
---------------------------------------------------------------------------------------------------------------------------------