中文

使用生成式预训练变换器模型进行自动化软件漏洞静态代码分析

密码学与安全 2024-08-02 v1 人工智能 计算与语言 机器学习

摘要

生成式预训练变换器模型已在多种自然语言处理任务中展现出惊人的有效性——包括生成计算机代码。我们评估了开源GPT模型在自动识别脆弱代码语法(专门针对C和C++源代码)任务中的有效性。该任务在NIST SARD数据集的36个源代码示例上进行评估,这些示例经过专门筛选,不包含指示特定漏洞存在与否的自然英语。NIST SARD源代码数据集包含已识别的脆弱代码行,这些代码行是839种不同通用弱点枚举(CWE)中某一种的示例,从而可以对GPT输出分类错误率进行精确量化。共评估了5个GPT模型,在每个设置下使用10种不同的推理温度和100次重复,导致每个脆弱源代码分析产生5000次GPT查询。最终,我们发现所评估的GPT模型不适合完全自动化的漏洞扫描,因为误报率和漏报率太高,在实践中可能没有用处。然而,我们确实发现GPT模型在某些测试用例的自动漏洞检测中表现惊人,特别是超越了随机采样,并且能够识别出脆弱的代码行,尽管成功率较低。表现最好的GPT模型结果是Llama-2-70b-chat-hf,在推理温度0.1下应用于NIST SARD测试用例149165(这是一个缓冲区溢出漏洞的示例),该模型在正确且唯一地识别出脆弱代码行和正确CWE编号方面的二分类召回率为1.0,精确率为1.0。

关键词

引用

@article{arxiv.2408.00197,
  title  = {Automated Software Vulnerability Static Code Analysis Using Generative Pre-Trained Transformer Models},
  author = {Elijah Pelofske and Vincent Urias and Lorie M. Liebrock},
  journal= {arXiv preprint arXiv:2408.00197},
  year   = {2024}
}