本文介绍了软件材料清单(SBoM)的概念,它是软件构件、库和模块的详细清单,提供了整个软件供应链的可追溯性。由于JavaScript具有动态语法和无缝供应链集成的特点,在软件工程中越来越受欢迎,因此受到漏洞和攻击的威胁也显著增加。JavaScript应用程序包是一种经过合并、符号剥离和优化的代码集合,用于部署目的。通过反向工程过程从JavaScript应用程序包生成SBoM,即使没有访问原始依赖关系图,也可以确保供应商的软件发布的完整性、安全性和合规性。
本文介绍了首个针对JavaScript应用程序包的SBoM生成研究。我们确定了三个关键挑战,即嵌套代码作用域、极长的序列和大型检索空间。为了解决这些挑战,我们引入了Chain-of-Experts(CoE),这是一个多任务深度学习模型,通过三个任务生成SBoMs:代码分割、代码分类和代码克隆检索。我们在500个Web应用程序包上评估了CoE,并进行了超过66,000个依赖关系的实验。我们的实验结果表明,与单个任务特定解决方案相比,CoE提供了具有竞争力的结果,并且需要更少的训练和推理时间。因此,CoE提供了首个可扩展、高效和端到端的解决方案,用于实际JavaScript应用程序包的SBoM生成。
提问交流