admin管理员组

文章数量:1130349

Magneto: A Step-Wise Approach to Exploit Vulnerabilities in Dependent Libraries via LLM-Empowered Directed Fuzzing

来源出处

Zhuotong Zhou, Yongzhuo Yang, Susheng Wu, Yiheng Huang, Bihuan Chen, and Xin Peng. 2024. Magneto: A Step-Wise Approach to Exploit Vulnerabilities in Dependent Libraries via LLM-Empowered Directed Fuzzing. In Proceedings of the IEEE/ACM 46th International Conference on Software Engineering (ASE ’24), October 27-November 1, 2024, Sacramento, CA, USA.

1 引言

随着开源第三方库在现代软件开发中的广泛应用,它们为开发者提供了大量基础功能。通过声明这些库作为依赖项,开发者可以显著减少开发时间和劳动成本。因此,越来越多的开发者在其项目中采用第三方库。然而,这些库中存在的漏洞可能会通过依赖链传播到下游项目,从而暴露这些项目于安全威胁之中。例如,Log4Shell漏洞(CVE-2021-44228)影响了Apache Log4j库中的35,863个Java库,占Maven中心库中超过8%的库。此外,下游项目往往难以及时修复这些漏洞,因为依赖库可能被间接依赖。更深层次的依赖链中的漏洞需要更多步骤才能修复。例如,Log4Shell漏洞只有约19.5%的受影响库是直接依赖。此外,发布新的库版本后,开发者常常忽视及时升级依赖,因为引入的兼容性问题可能导致安全风险。为了应对这些问题,提出了各种方法来分析和缓解依赖库中的漏洞风险。

2 先前方法存在的不足

现有的方法主要存在以下不足:

  1. 直接调用漏洞函数的简单场景处理良好,但复杂场景效果不佳:这些方法在漏洞存在于依赖库中且通过调用链直接被项目调用的情况下表现较好,但在漏洞通过多步骤间接调用时效果较差。例如,Log4Shell vulnerability(CVE-2021-44228)影响35,863个Java库,其中只有约19.5%是直接依赖。
  2. 难以处理复杂的控制流和数据流条件:现有方法如Siege、Transfer和Vesta等,虽然可以生成测试用例触发漏洞,但在处理复杂的控制流和数据流条件时,往往无法成功生成有效的利用代码。
  3. 依赖环境复杂性高:有些漏洞需要从外部环境中获取参数,例如HTTP请求,这导致静态分析工具无法生成合适的测试用例。

3 现阶段面临的挑战

为了解决上述问题,本文提出了Magneto方法,旨在通过LLM(大型语言

Magneto: A Step-Wise Approach to Exploit Vulnerabilities in Dependent Libraries via LLM-Empowered Directed Fuzzing

来源出处

Zhuotong Zhou, Yongzhuo Yang, Susheng Wu, Yiheng Huang, Bihuan Chen, and Xin Peng. 2024. Magneto: A Step-Wise Approach to Exploit Vulnerabilities in Dependent Libraries via LLM-Empowered Directed Fuzzing. In Proceedings of the IEEE/ACM 46th International Conference on Software Engineering (ASE ’24), October 27-November 1, 2024, Sacramento, CA, USA.

1 引言

随着开源第三方库在现代软件开发中的广泛应用,它们为开发者提供了大量基础功能。通过声明这些库作为依赖项,开发者可以显著减少开发时间和劳动成本。因此,越来越多的开发者在其项目中采用第三方库。然而,这些库中存在的漏洞可能会通过依赖链传播到下游项目,从而暴露这些项目于安全威胁之中。例如,Log4Shell漏洞(CVE-2021-44228)影响了Apache Log4j库中的35,863个Java库,占Maven中心库中超过8%的库。此外,下游项目往往难以及时修复这些漏洞,因为依赖库可能被间接依赖。更深层次的依赖链中的漏洞需要更多步骤才能修复。例如,Log4Shell漏洞只有约19.5%的受影响库是直接依赖。此外,发布新的库版本后,开发者常常忽视及时升级依赖,因为引入的兼容性问题可能导致安全风险。为了应对这些问题,提出了各种方法来分析和缓解依赖库中的漏洞风险。

2 先前方法存在的不足

现有的方法主要存在以下不足:

  1. 直接调用漏洞函数的简单场景处理良好,但复杂场景效果不佳:这些方法在漏洞存在于依赖库中且通过调用链直接被项目调用的情况下表现较好,但在漏洞通过多步骤间接调用时效果较差。例如,Log4Shell vulnerability(CVE-2021-44228)影响35,863个Java库,其中只有约19.5%是直接依赖。
  2. 难以处理复杂的控制流和数据流条件:现有方法如Siege、Transfer和Vesta等,虽然可以生成测试用例触发漏洞,但在处理复杂的控制流和数据流条件时,往往无法成功生成有效的利用代码。
  3. 依赖环境复杂性高:有些漏洞需要从外部环境中获取参数,例如HTTP请求,这导致静态分析工具无法生成合适的测试用例。

3 现阶段面临的挑战

为了解决上述问题,本文提出了Magneto方法,旨在通过LLM(大型语言

本文标签: 论文wiseApproachstepExploit