安全代码生成的提示技术:一项系统性研究

《ACM Transactions on Software Engineering and Methodology》:Prompting Techniques for Secure Code Generation: A Systematic Investigation

【字体: 时间:2025年11月07日 来源:ACM Transactions on Software Engineering and Methodology

编辑推荐:

  本研究系统调查了15种提示技术对LLMs生成Python和C代码安全性的影响。通过实验发现,递归批评与改进(RCI)技术能显著减少安全漏洞(平均减少77.5%),其次是零样本提示法。而 persona/memetic proxy技术效果最差。研究还验证了Bandit和CodeQL工具的有效性,并揭示了CWE-78、CWE-259等常见漏洞。结论指出RCI是当前最有效的安全代码生成提示技术。

  在当前软件开发日益依赖自动代码生成的背景下,大型语言模型(LLMs)通过自然语言(NL)指令生成代码的能力引起了广泛关注。然而,这些模型在生成安全代码方面的表现仍然存在疑问,尤其是其在代码正确性和质量上的保障机制尚未明确。本研究旨在探讨不同的提示技术对LLMs生成代码安全性的影响,特别是如何通过优化提示策略来提升代码的安全性。随着LLMs的不断演进,如GPT-3、GPT-3.5和GPT-4等模型,它们在自然语言处理和代码生成方面展现出强大的能力。然而,这些模型生成的代码往往伴随着安全漏洞,因此,研究如何通过提示技术来提升代码安全性变得尤为重要。

在本研究中,我们首先进行了系统文献综述,以识别适用于代码生成的现有提示技术。通过分析这些技术,我们发现了一些具有潜力的方法,其中一些技术如“递归批评与改进”(Recursive Criticism and Improvement, RCI)对提升代码安全性具有显著效果。随后,我们对这些技术进行了评估,使用了一个包含150个NL安全相关代码生成提示的现有数据集,分别在GPT-3、GPT-3.5和GPT-4模型上进行实验。这些实验旨在了解不同的提示技术如何影响代码的安全性,特别是在Python和C语言中的表现。

通过实验,我们发现不同的提示技术在代码安全性方面有显著差异。例如,RCI技术通过让模型在生成代码后进行自我批评和改进,显著减少了代码中的安全漏洞。这表明,通过引入自我评估机制,可以有效提升LLMs生成代码的安全性。此外,我们还观察到,在引入安全规格后,模型的编码行为发生了显著变化,如增加了输入验证、异常处理以及安全相关的注释。这些变化不仅提升了代码的安全性,也为后续的提示技术优化提供了宝贵的经验。

然而,我们也注意到,一些提示技术在提升代码安全性方面表现不佳,如“角色模式”(Persona)和“模仿代理”(Memetic Proxy)。这些技术未能显著减少代码中的安全漏洞,可能与模型对安全问题的理解不足或提示设计的局限性有关。因此,未来的研究需要进一步探索这些技术的改进方式,以提高其在安全代码生成中的效果。

此外,我们还探讨了提示技术在不同编程语言中的通用性。通过在C语言中进行实验,我们发现RCI技术同样在C语言代码生成中表现出色,但其他提示技术的效果可能因语言特性而有所不同。这表明,提示技术的有效性可能受到编程语言复杂性和安全问题类型的影响,因此在选择提示技术时需要考虑这些因素。

本研究的贡献在于,我们系统地梳理了适用于代码生成的提示技术,并将其分类为五个不同的类别,包括基础提示、优化提示、分解提示、推理提示和角色提示。这些分类有助于开发者更好地理解和应用提示技术,以生成更安全的代码。同时,我们还提出了七种可重复使用的提示模板,这些模板可以作为未来研究和实践的参考。

在实验过程中,我们还考虑了数据泄露的风险。由于LLMs的训练数据通常是闭源的,我们担心评估数据可能与训练数据重叠,从而影响结果的可靠性。通过使用Dolos工具包进行检测,我们发现生成的代码与LLMSecEval数据集中的安全实现之间的相似度非常低,这表明数据泄露的影响可以忽略不计。此外,我们仅使用了API交互,而非用户反馈数据,这也降低了间接数据泄露的可能性。

最后,本研究的局限性在于,我们仅评估了三种LLMs,且使用的数据集仅涵盖了18种CWE漏洞。因此,未来的研究可以扩展到更多模型和漏洞类型,以验证提示技术在不同环境下的适用性。此外,我们还需要进一步探索自动化提示优化技术,如遗传算法和黑盒调优,以提高提示设计的效率和效果。

综上所述,本研究揭示了提示技术在提升LLMs生成代码安全性方面的重要作用。通过优化提示策略,可以显著减少代码中的安全漏洞,特别是在使用RCI等自我评估技术时。然而,提示技术的有效性仍需进一步研究,以确保其在不同编程语言和应用场景中的适用性。同时,数据泄露的风险虽然存在,但通过合理的评估方法可以将其影响降到最低。未来的研究可以结合更多的自动化工具和方法,以进一步提升LLMs在安全代码生成方面的表现。
相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普
  • 急聘职位
  • 高薪职位

知名企业招聘

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号