论文阅读-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用来做词嵌入

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宠物空气净化器适合养猫家庭吗?除猫毛好的猫用空气净化器推荐

宠物掉毛是一个普遍存在的问题,尤其在脱毛季节,毛发似乎无处不在。这给家中的小孩和老人带来了很多麻烦,他们容易流鼻涕、过敏等不适。此外,宠物有时还会不规矩地拉扯和撒尿,这股气味实在是难以忍受。家人们对宠物的存…

算法学习——LeetCode力扣哈希表篇2

算法学习——LeetCode力扣哈希表篇2 454. 四数相加 II 454. 四数相加 II - 力扣(LeetCode) 描述 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 …

Springboot启动出现Waiting for changelog lock...问题

今天在开发的时候,Springboot启动的时候出现Waiting for changelog lock…问题. 问题原因:该问题就是发生了数据库的死锁问题,可能是由于一个杀死的liquibase进程没有释放它对DATABASECHANGELOGLOCK表的锁定,导致服务启动失败&…

我的世界Java版服务器如何搭建并实现与好友远程联机Minecarft教程

文章目录 1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 本教程主要介…

「深度学习」循环神经网络RNN

一、序列模型的例子 二、数学符号定义 X^{(i)<t>}&#xff1a;训练样本 i 的输入序列的第 t 个元素。 T_{X}^{i}&#xff1a;训练样本 i 的输入序列的长度。 Y^{(i)<t>}&#xff1a;训练样本 i 的输出序列的第 t 个元素。 T_{Y}^{i}&#xff1a;训练样本 i 的输…

Error: Unable to authenticate using the provided code. Please try again.

今天弄这个firebase cli的时候一直登陆不进去 都到了最后一步了&#xff0c;但是输入完code还是不成功 原来是因为开了梯子&#xff0c;代理不成功&#xff0c;要在 复制命令到对应的窗口粘贴就行&#xff0c;然后重复之前的命令就行 我复制出来的命令是 set http_proxyhttp…

解决hive表新增的字段查询为空null问题

Hive分区表新增字段&#xff0c;查询时数据为NULL的解决方案 由于业务拓展&#xff0c;需要往hive分区表新增新的字段&#xff0c;hive版本为2点多。 于是利用 alter table table_name add columns (col_name string )新增字段&#xff0c;然后向已存在分区中插入数据&#x…

2024 年十大 Vue.js UI 库

Vue.js 是一个流行的 JavaScript 框架&#xff0c;它在前端开发者中越来越受欢迎&#xff0c;以其简单、灵活和易用性而闻名。 Vue.js 如此受欢迎的原因之一是它拥有庞大的 UI 库生态系统。 这些库为开发人员提供了预构建的组件和工具&#xff0c;帮助他们快速高效地构建漂亮…

Canny边缘检测

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example demo解决问题&#xff1a;实现了Canny边缘检测算法的图像处理过程。 图像处理过程&#xff1a; 亮度提取&#xff08;vtkImageLuminance&#xff09;图像类型转换…

RFID手持终端_智能pda手持终端设备定制方案

手持终端是一款多功能、适用范围广泛的安卓产品&#xff0c;具有高性能、大容量存储、高端扫描头和全网通数据连接能力。它能够快速平稳地运行&#xff0c;并提供稳定的连接表现和快速的响应时&#xff0c;适用于医院、物流运输、零售配送、资产盘点等苛刻的环境。通过快速采集…

nba2k24 周琦面补

nba2k24 周琦面补 nba2k23-nba2k24通用 周琦面补 下载地址&#xff1a; https://www.changyouzuhao.cn/9649.html

Multisim14.0仿真(五十三)时、分、秒、毫秒数字计时器

一、仿真效果&#xff1a; 二、时钟脉冲配置&#xff1a; 三、24进制计数&#xff1a; 四、60进制计数&#xff1a;

Python||五城P.M.2.5数据分析与可视化_使用华夫图分析各个城市的情况(中)

目录 1.上海市的空气质量 2.成都市的空气质量 【沈阳市空气质量情况详见下期】 五城P.M.2.5数据分析与可视化——北京市、上海市、广州市、沈阳市、成都市&#xff0c;使用华夫图和柱状图分析各个城市的情况 1.上海市的空气质量 import numpy as np import pandas as pd impor…

爬虫(三)

1.JS逆向实战破解X-Bogus值 X-Bogus:以DFS开头&#xff0c;总长28位 答案是X-Bogus,因为会把负载里面所有的值打包生成X-Boogus 1.1 找X-Bogus加密位置&#xff08;请求堆栈&#xff09; 1.1.1 绝招加高级断点&#xff08;日志断点&#xff09; 日志断点看有没有X-B值 日志…

Leetcode—32. 最长有效括号【困难】(动态规划及ranges::max()使用)

2024每日刷题&#xff08;110&#xff09; Leetcode—32. 最长有效括号 栈实现代码 class Solution { public:int longestValidParentheses(string s) {stack<int> st;st.push(-1);int n s.size();int maxn 0;for(int i 0; i < n; i) {if(s[i] () {st.push(i);}…

Transformer实战-系列教程7:SwinTransformer 算法原理 1

&#x1f6a9;&#x1f6a9;&#x1f6a9;Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的PPT资源已经上传 1、SwinTransformer SwinTransformer 可以看作为一个backbone用来做分类、检测、分割都是非常好的…

zxxxxczzvdsgbhfdb

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏&#xff1a;《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

低代码与MES系统相结合

​低代码平台通常是指aPaaS平台&#xff0c;通过为开发者提供可视化的应用开发环境&#xff0c;降低或去除应用开发对原生代码编写的需求量&#xff0c;进而实现便捷构建应用程序的一种解决方案。 更加简单点的理解就是“拖拽&#xff01;搭建应用”。 一、低代码开发平台概述 …

单片机最小系统是什么?包含哪几个部分?

单片机最小系统是什么&#xff1f;包含哪几个部分&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&…

流式 dbt:RisingWave 流计算的正确打开方式

让我们先来看一则 Reddit 经典提问&#xff1a; “为啥 dbt 如此流行&#xff1f;有没有替代品&#xff1f;” 获赞最多的回答抓住了精髓&#xff1a; “dbt 这么流行是因为它为 SQL 分析师和数据集市构建者提供了 Git 工作流&#xff0c;使得他们可以跟其他软件工程师一样工作…