本文由Ningke Li、Shenao Wang、Mingxi Feng、Kailong Wang、Meizhen Wang和Haoyu Wang等作者共同撰写,他们来自华中科技大学(Huazhong University of Science and Technology)。该研究于2023年发表在IEEE/ACM国际自动化软件工程会议(ASE)上,题为《malwukong: towards fast, accurate, and multilingual detection of malicious code poisoning in oss supply chains》。该研究旨在解决开源软件供应链中恶意代码检测的难题,提出了一种创新的多分析方法框架,能够快速、准确地检测恶意代码,并减少误报。
随着开源软件生态系统的快速发展,Python包索引(PyPI)和Node包管理器(npm)等软件注册表和管理系统在提升开发效率和代码复用性方面发挥了重要作用。然而,这些注册表也成为恶意代码传播的温床。恶意代码通常隐藏在看似正常的软件包中,可能进行未经授权的网络连接、键盘监控、隐藏进程等恶意行为,严重威胁计算机系统的可靠性和用户的安全。特别是在软件供应链中,一个被感染的软件包可能会影响大量下游应用,导致风险的扩散。
现有的恶意代码检测技术面临三大挑战:首先,基于二进制的病毒扫描引擎由于编程语言的多样性和威胁的不断演变,难以准确检测隐藏的恶意代码;其次,现有的检测技术通常只适用于单文件或完整源代码的评估,难以应对大规模软件注册表环境;最后,尽管已有大量研究关注恶意代码的溯源分析和程序解构,但现有的检测方法(如基于规则的扫描和过程内分析)需要大量人工干预,且准确性不高。因此,亟需一种创新的、鲁棒的解决方案来提升软件注册表中恶意代码的检测和预防能力。
该研究提出了一种基于多分析的框架,结合了源代码切片、过程间分析和跨文件过程间分析,以增强恶意代码检测的精度并减少误报。该框架包含三个关键模块:精确的程序分析器、包元数据分析器和基于定制检测规则与语义分析的恶意行为检测器。研究团队将该框架应用于PyPI和npm等广泛使用的第三方软件注册表,并在连续五周的监控期内,成功从169,640个包中识别出130个恶意包。
具体来说,研究团队首先通过源代码切片技术获取代码的原始形式,避免了二进制扫描引擎在编译过程中丢失高级语言特性的问题。其次,结合过程间分析和细粒度的程序切片,研究团队能够更精确地解释恶意行为及其上下文。最后,通过跨文件过程间分析,研究团队进一步减少了检测过程中的误报率,并通过API和污点分析更好地理解代码语义。
研究团队在PyPI和npm注册表中进行了大规模实验,成功识别出130个恶意包,其中包括23个npm包和107个PyPI包。实验结果表明,该框架在检测精度、细粒度和工具可用性方面均优于现有的最先进方法。此外,研究团队还发现了一组此前未被检测到的恶意npm包家族,这些包试图通过npm平台分发钓鱼链接或恶意软件。
该研究的科学价值在于提出了一种创新的恶意代码检测方法,结合了源代码切片、过程间分析和跨文件分析,显著提升了检测精度并减少了误报。其应用价值体现在该框架能够有效应用于现实世界的软件注册表,如PyPI和npm,帮助识别和预防供应链中的恶意代码攻击。此外,研究团队还构建了一个包含多种恶意代码类型的基准数据集,为未来的研究提供了宝贵的资源。
该研究通过提出并实现malwukong框架,显著提升了开源软件供应链中恶意代码的检测能力。该框架不仅能够有效识别恶意代码,还能减少误报,具有较高的实用价值。研究团队通过大规模实验验证了该框架的有效性,并呼吁未来研究进一步关注供应链攻击的防御和缓解策略。
研究团队还通过案例研究展示了现代恶意代码的复杂性和隐蔽性,强调了传统检测工具的局限性。例如,某些恶意包通过预安装脚本下载并执行外部命令,或通过加密字符串隐藏恶意操作,这些行为往往难以被传统工具检测到。研究团队建议未来的恶意代码检测工具应结合语义分析和强大的检测能力,以应对日益复杂的恶意代码威胁。