摘要:TDSC 2022发表了安全补丁识别最新的方案“Enhancing Security Patch Identification by Capturing Structures in Commits” (E-SPI)。

本文分享自华为云社区《【论文推荐】TDSC2022 安全补丁识别最新的方案E-SPI》,作者: 华为云软件分析Lab。

TDSC 2022发表了安全补丁识别最新的方案“Enhancing Security Patch Identification by Capturing Structures in Commits” (E-SPI),该方案同时考虑代码提交的Message和Changed Code的拓扑特征,通过实验表明,该方案超过了当前业界的SOTA,达到业界领先。

1. 背景知识

根据《2021年开源安全与风险分析报告》统计,平均每个代码仓含158个安全漏洞,84%的代码仓都至少存在1个安全漏洞。相比20年,21年高风险漏洞环比增长了11%。开源软件带来便利的同时,也引入了潜在的安全风险。大多数软件漏洞都在公开源组件被静默修复,这就导致集成它们的已部署软件无法及时更新,鉴于此,如何高效的识别开源组件的安全补丁成为学术界一个热门的问题。

最近几年,随着深度学习的飞速发展,基于深度学习的安全补丁识别模型快速提升了安全补丁识别模型的有效性。但是,目前大多数现有的安全补丁识别方案直接把代码提交修改的代码、提交信息当成Token,忽略了代码的结构信息,这篇文章提出了E-SPI模型,有效的利用了隐藏在提交中的结构信息,进一步提升识别模型的效果。

2. E-SPI模型架构

E-SPI整体的架构入上图所示,该方案分别对代码提交中的代码修改以及提交信息进行Embedding,最终联合两者的特征,来识别安全补丁。

代码修改编码器:对于代码提交中代码修改,该方案首先抽取代码修改前的函数Pre-function 和代码修改后的函数Post-function ;接着对着两个函数进行AST解析,为了适配序列模型的输入,该方案创新的提出了AST Path提取方法,将、对应AST的图转换成两类AST Paths:Within-context paths、Within-changes paths,其中Within-context paths代表AST树上开始的节点在修改代码中,结束节点不在修改的代码中的路径,Within-changes path代表AST树上开始和结束都在修改代码中的路径;最终以1:1的比例随机分别选取K个Within-context paths 和Within-context paths,来表征代码修改,输入Bi-LSTM完成代码修改的Embedding。

提交信息编码器:对于代码提交中的提交信息,该方案将原始的自言语言进行Dependency Graph解析,从而获取自言语言的依赖关系,针对该图结构,使用Gated Graph Neural Network完成编码。

3. 结果

为了对比,这篇文章选取了学术界7个典型的安全补丁识别算法,这些模型主要的特征以及架构如下

首先,这篇文章从整体上对所有的模型进行了比较,结果(见下图)显示E-SPI达到了SOTA,这表明,相对其他的方案,E-SPI能更好的对代码提交进行建模。通过进一步观察发现,代码提交信息是安全补丁识别问题的重要特征,加入提交信息的模型(Stacking、PatchRNN、SPI、Transformer、E-SPI)显著比没有加入代码提交信息的模型(Commit2Vec、VulFixMiner)要好,即使架构最简单的Stacking模型(添加了代码提交信息特征)也比只使用修改代码的模型Commit2Vec,VulFixMiner结果要好;另外可以发现,在特征相同的情况下,Transformer-Based的模型(Transformer)反而没有BiLSTM-Based的模型(PatchRNN,SPI,E-SPI)结果好,这有可能是样本不足,导致Transformer-Based模型训练不充分。

为了进一步比较不同模型对代码的建模能力,该篇文章在只使用代码修改作为特征的前提下,也对不同模型进行了比较,结果见下图。结果显示Transformer-Based的模型(Transformer)对代码的建模能力会显著优于其他的架构模型(PatchRNN、SPI、Commit2vec、E-SPI w/o changes、E-SPI w/o context);另外我们可以发现AST Paths在代码特征建模有显著的增益,这就导致,在整体上E-SPI对代码的建模能力依然超过了Transformer模型。

文章来自:PaaS技术创新Lab,PaaS技术创新Lab隶属于华为云,致力于综合利用软件分析、数据挖掘、机器学习等技术,为软件研发人员提供下一代智能研发工具服务的核心引擎和智慧大脑。我们将聚焦软件工程领域硬核能力,不断构筑研发利器,持续交付高价值商业特性!加入我们,一起开创研发新“境界”!

PaaS技术创新Lab主页链接:https://www.huaweicloud.com/lab/paas/home.html

相关文献:

【1】Enhancing Security Patch Identification by Capturing Structures in Commits,

论文地址:https://arxiv.org/pdf/2207.09022.pdf

点击关注,第一时间了解华为云新鲜技术~

论文推荐|TDSC2022 安全补丁识别最新的方案E-SPI的更多相关文章

  1. 论文笔记:语音情感识别(四)语音特征之声谱图,log梅尔谱,MFCC,deltas

    一:原始信号 从音频文件中读取出来的原始语音信号通常称为raw waveform,是一个一维数组,长度是由音频长度和采样率决定,比如采样率Fs为16KHz,表示一秒钟内采样16000个点,这个时候如果 ...

  2. Recent papers on Action Recognition | 行为识别最新论文

    CVPR2019 1.An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognit ...

  3. 吃透论文——推荐算法不可不看的DeepFM模型

    大家好,我们今天继续来剖析一些推荐广告领域的论文. 今天选择的这篇叫做DeepFM: A Factorization-Machine based Neural Network for CTR Pred ...

  4. 论文笔记:语音情感识别(五)语音特征集之eGeMAPS,ComParE,09IS,BoAW

    一:LLDs特征和HSFs特征 (1)首先区分一下frame和utterance,frame就是一帧语音.utterance是一段语音,是比帧高一级的语音单位,通常指一句话,一个语音样本.uttera ...

  5. 论文笔记:语音情感识别(三)手工特征+CRNN

    一:Emotion Recognition from Human Speech Using Temporal Information and Deep Learning(2018 InterSpeec ...

  6. 论文笔记:语音情感识别(二)声谱图+CRNN

    一:An Attention Pooling based Representation Learning Method for Speech Emotion Recognition(2018 Inte ...

  7. Cell期刊论文:为什么计算机人脸识别注定超越人类?(祖母论与还原论之争)

    终于找到ML日报的微信链接,抄之...................................... 请拜访原文链接:[祖母论与还原论之争]为什么计算机人脸识别注定超越人类?评价:       ...

  8. 人脸识别最新开发经验demo分享

    本来打算做个C#版demo,但没用成功,基于虹软的免费人脸识别技术 过程如下: 1. 传入一张单人脸照片: 2.调用检测人脸函数ASFDetectFaces,成功返回人脸信息的指针: 3.使用 Mar ...

  9. Machine Learning、Date Mining、IR&NLP 会议期刊论文推荐

    核心期刊排名查询 http://portal.core.edu.au/conf-ranks/ http://portal.core.edu.au/jnl-ranks/ 1.机器学习推荐会议 ICML— ...

  10. git上拉取tag,识别最新tag在此版本上新增tag

    通过shell 脚本自动获取最新tag,并输入最新版本后,推到git上 # 拉取分支上现有的tags git fetch --tags echo -e "所有tag列表" git ...

随机推荐

  1. 【XXE实战】——浅看两道CTF题

    [XXE实战]--浅看两道CTF题 上一条帖子[XXE漏洞]原理及实践演示对XXE的一些原理进行了浅析,于是写了两道CTF题巩固一下,顺便也记录一下第一次写出来CTF.两道题都是在BUU上找的:[NC ...

  2. Android dumpsys介绍

    目录 一.需求 二.环境 三.相关概念 3.1 dumpsys 3.2 Binder 3.3 管道 四.dumpsys指令的使用 4.1 dumpsys使用 4.2 dumpsys指令语法 五.详细设 ...

  3. Gson替换掉多漏洞的FastJson

    添加依赖: <!-- gson --> <dependency> <groupId>com.google.code.gson</groupId> < ...

  4. JUC并发编程学习笔记(七)常用的辅助类

    常用的辅助类 CountDownLatch 这是一个JUC计数器辅助类,计数器有加有减,这是减. 使用方法 package org.example.demo; import java.util.con ...

  5. python中面向对象有什么特点

    一:问题 python中面向对象有什么特点? 二:回答 python同其他面向对象语言一样,有3个特征:封装.继承.重写 简单理解就是:封装:把一系列属性和操作封装到一个方法里面,这样想要实现某种效果 ...

  6. Object.assign () 和深拷贝

    先看看啥叫深拷贝?啥叫浅拷贝? 假设B复制了A,修改A的时候,看B是否发生变化: 如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值) 如果B没有改变,说明是深拷贝,自食其力!(修改堆 ...

  7. [USACO2007OPENG] Dining G

    题目描述 Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she w ...

  8. DI入门案例

    1.基于IoC管理bean 2.Service中使用new形式创建的Dao对象是否保留?(不保留) 3.Service中需要的Dao对象如何进入到Service中?(提供方法) 4.Service与D ...

  9. 听懂未来:AI语音识别技术的进步与实战

    本文全面探索了语音识别技术,从其历史起源.关键技术发展到广泛的实际应用案例,揭示了这一领域的快速进步和深远影响.文章深入分析了语音识别在日常生活及各行业中的变革作用,展望了其未来发展趋势. 关注Tec ...

  10. LeetCode224:基本计算器(栈)

    解题思路: 1.双栈模拟,一个用来存数,一个用来存操作符.需要考虑 '('后面紧跟'+'.'-'这种情况 2.递归:遇到左括号开始递归,遇到右括号结束递归,返回值. 1 class Solution: ...