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

2023-11-02 01:30

本文主要是介绍论文推荐|TDSC2022 安全补丁识别最新的方案E-SPI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要: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主页链接:PaaS技术创新Lab-华为云

相关文献:

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

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

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

这篇关于论文推荐|TDSC2022 安全补丁识别最新的方案E-SPI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

一文彻底搞懂Java 中的 SPI 是什么

《一文彻底搞懂Java中的SPI是什么》:本文主要介绍Java中的SPI是什么,本篇文章将通过经典题目、实战解析和面试官视角,帮助你从容应对“SPI”相关问题,赢得技术面试的加分项,需要的朋... 目录一、面试主题概述二、高频面试题汇总三、重点题目详解✅ 面试题1:Java 的 SPI 是什么?如何实现一个

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

Dubbo之SPI机制的实现原理和优势分析

《Dubbo之SPI机制的实现原理和优势分析》:本文主要介绍Dubbo之SPI机制的实现原理和优势,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Dubbo中SPI机制的实现原理和优势JDK 中的 SPI 机制解析Dubbo 中的 SPI 机制解析总结Dubbo中

Python多进程、多线程、协程典型示例解析(最新推荐)

《Python多进程、多线程、协程典型示例解析(最新推荐)》:本文主要介绍Python多进程、多线程、协程典型示例解析(最新推荐),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 目录一、multiprocessing(多进程)1. 模块简介2. 案例详解:并行计算平方和3. 实现逻

利用Python实现可回滚方案的示例代码

《利用Python实现可回滚方案的示例代码》很多项目翻车不是因为不会做,而是走错了方向却没法回头,技术选型失败的风险我们都清楚,但真正能提前规划“回滚方案”的人不多,本文从实际项目出发,教你如何用Py... 目录描述题解答案(核心思路)题解代码分析第一步:抽象缓存接口第二步:实现两个版本第三步:根据 Fea

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R