一句话:提出自适应版本概念与 Tiver,用函数级版本划分和代码聚类识别 C/C++ 第三方组件的多版本复用。
开源复用易传播漏洞,但现有版本识别常将单一版本映射到复用代码库,忽略多版本共存,并受共享算法代码等噪声和冗余复用造成的重复组件干扰。本文提出“自适应版本”概念,以表示被复用开源组件的版本多样性;Tiver 采用函数级版本划分和代码聚类,识别重复组件并去除噪声,精确定位复用位置与自适应版本。在 2,025 个流行 C/C++ 软件上评估:67% 组件含多版本;Tiver 区分重复组件的精确率/召回率为 88.46%/91.63%,噪声消除为 86%/86.84%,而现有方法区分重复组件召回率仅约 42% 且未处理噪声。
Reusing open-source software (OSS) provides significant benefits but also poses risks from propagated vulnerabilities. While tracking OSS component versions helps mitigate threats, existing approaches typically map a single version to the reused codebase. This coarse-grained approach overlooks the coexistence of multiple versions, leading to ineffective OSS management. Moreover, identifying component versions is further complicated by noise codes, such as shared algorithmic code across different OSS, and duplicate components caused by redundant OSS reuse. In this paper, we introduce the concept of the adaptive version, a one-stop solution to represent the version diversity of reused OSS. To identify adaptive versions, we present Tiver, which employs two key techniques: (1) fine-grained function-level versioning and (2) OSS code clustering to identify duplicate components and remove noise. This enables precise identification of OSS reuse locations and adaptive versions, effectively mitigating risks associated with OSS reuse. Evaluation of 2,025 popular C/C++ software revealed that 67% of OSS components contained multiple versions, averaging over three versions per component. Nonetheless, Tiver effectively identified adaptive versions with 88.46% precision and 91.63% recall in duplicate component distinction, and 86% precision and 86.84% recall in eliminating noise, while existing approaches barely achieved 42% recall in distinguishing duplicates and did not address noise. Further experiments showed that Tiver could enhance vulnerability management and be applied to Software Bills of Materials (SBOM) to improve supply chain security.
DOI 原文 ·
@inproceedings{paperbot8913,
title = {Tiver: Identifying Adaptive Versions of C/C++ Third-Party Open-Source Components Using a Code Clustering Technique},
author = {Youngjae Choi and Seunghoon Woo},
booktitle = {ICSE},
year = {2025},
doi = {10.1109/icse55347.2025.00188}
}