论文阅读-Transformer-based language models for software vulnerability detection

本文主要是介绍论文阅读-Transformer-based language models for software vulnerability detection,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 「分享了一批文献给你,请您通过浏览器打开
https://www.ivysci.com/web/share/biblios/D2xqz52xQJ4RKceFXAFaDU/
您还可以一键导入到 ivySCI 文献管理软件阅读,并在论文中引用 」

本文主旨:本文提出了一个系统的框架来利用基于Transformer的语言模型来检测软件漏洞。该框架包括以下几个步骤:

1. 源代码翻译:将C/C++高级编程语言的源代码转换为能输入transformer的格式。这样做是为了利用自然语言与高级编程语言之间的相似性。

2. 模型准备:使用大规模的基于Transformer的语言模型进行训练和微调。其中,本文主要考虑了BERT (Bidirectional Encoder Representations from Transformers) 模型和GPT (Generative Pre-trained Transformer) 模型。

3. 推断:将经过翻译的源代码注释片段输入到训练好的语言模型中,以进行软件漏洞的检测。语言模型将根据上下文理解注释和代码的关系,并判断是否存在潜在的漏洞。

通过这个框架,可以利用Transformer-based语言模型来自动检测软件漏洞,并且相比传统的基于RNN的模型,语言模型在漏洞检测方面具有更好的性能表现。

本文的创新点

简而言之就是,将软件的源代码转换成自然语言,通过transformer来推断源代码有没有漏洞。


本文的行文结构是以回答以下问题展开的:

RQ1:利用基于转换器的语言模型进行软件漏洞检测的系统框架是什么?

RQ2:与其他当代基于rnn的模型相比,现有的基于transformer的语言模型在检测软件漏洞方面表现如何?

RQ3:哪个平台能高效运行这些模型?

我比较关心数据转换,即源代码是怎么一步步转换成可以输入到transformer的word embedding模式的

数据转换:

第一步是将源代码转换为代码gadget。


 

1. 数据清洗:由于代码gadgets来自多个来源,数据集中可能存在重复的代码gadgets。数据清洗阶段会处理两个问题:

(i) 相同标签下的重复代码gadgets,这些重复的数据可能会影响测试集的泄露;

(ii) 不同标签下的重复代码gadgets,这些数据可能会对模型的训练和测试产生负面影响。为了清理数据集,首先使用SHA256哈希算法将所有的代码gadgets映射为哈希值,以便找到重复的代码gadgets。采用哈希方法查找重复数据的速度比正则表达式或简单字符串比较方法更快。对于存在标签冲突的代码gadgets,将其全部移除;对于相同标签下的重复代码gadgets,只保留其中的一份。清洗后的数据集详见论文中的表格。

2. 数据预处理:首先,将代码gadgets中的注释移除。其次,将用户自定义的名称替换为符号等价物。例如,将用户自定义的函数名称替换为"FUNC"(或者使用连续的自然数作为后缀,如"FUNC_1"、"FUNC_2"等,以区分多个函数);将用户赋值的变量名称替换为"VAR"(或者使用连续的自然数作为后缀,如"VAR_1"、"VAR_2"等,以区分多个变量)。通过这种方式使代码gadgets标准化。最后,根据可用的漏洞创建数据子集。例如,从数据集中创建包含缓冲区错误(BE)及其非易受攻击版本,以及资源管理错误(RME)及其非易受攻击版本的两个数据集。针对二分类和多分类实验,分别按以下方式分配标签: - 对于二分类标签,分别针对每一种漏洞进行实验,如BE和RME数据集。如果代码gadgets具有漏洞,则标签为"1",否则为"0"。 - 对于多分类标签,针对多个漏洞的并集进行实验。将"0"标签分配给非易受攻击的数据,其余标签依次递增,根据数据中可用的漏洞类型进行标记。例如,在VulDeePecker数据集中,具有BE、RME和非易受攻击的代码gadgets分别标记为"1"、"2"和"0"。

3. 数据集划分:在数据预处理步骤之后,将数据集划分为多个组进行实验。例如,VulDeePecker数据集划分为三个组:

Group 1 包含BE及其非易受攻击的代码gadgets,Group 2 包含RME及其非易受攻击的代码gadgets,Group 3 包含BE、RME及其非易受攻击的代码gadgets。对于二分类实验,分别使用 Group 1 和 Group 2 的数据集;对于三分类实验,使用 Group 3 的数据集。数据集按照 80:20 的比例划分为训练集和测试集。并采用三折交叉验证的方式,在测试集上呈现综合结果。 

第二步是将文本将处理过的代码gadgets用来做词嵌入

​​​​​​​将代码中的单词映射到预先定义的词向量空间,从而捕捉单词在代码中的含义和上下文。

这篇关于论文阅读-Transformer-based language models for software vulnerability detection的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/687914

相关文章

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

软件架构模式:5 分钟阅读

原文: https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2 软件架构模式:5 分钟阅读 当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易

BERT 论文逐段精读【论文精读】

BERT: 近 3 年 NLP 最火 CV: 大数据集上的训练好的 NN 模型,提升 CV 任务的性能 —— ImageNet 的 CNN 模型 NLP: BERT 简化了 NLP 任务的训练,提升了 NLP 任务的性能 BERT 如何站在巨人的肩膀上的?使用了哪些 NLP 已有的技术和思想?哪些是 BERT 的创新? 1标题 + 作者 BERT: Pre-trainin