读论文系列(一)Automated software vulnerability detection with machine learning

本文主要是介绍读论文系列(一)Automated software vulnerability detection with machine learning,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • Methods
    • Build-based feature extraction(基于编译的特征提取)
    • Source-based feature extraction(基于源的特征提取)
    • Labels(生成标签)
    • Models
      • Source-based models(基于源代码的模型)
      • Build-based models (基于编译的模型)
  • Experimental results
    • Source-based detection
    • Build-based detection
    • Comparison and combined model performance

Methods

为了检测C和c++代码中的漏洞,我们考虑了两种互补的方法。
第一种使用从编译和构建过程中生成的程序的中间表示(IR)中提取的特性。
第二种方法直接对源代码进行操作

Build-based feature extraction(基于编译的特征提取)

在函数层,我们提取了函数的控制流图(CFG)。
在控制流图中,我们提取特征关于每个基本块中发生的操作(操作码向量,或 op-vec)以及定义和使用变量(使用定义矩阵)。
CFG是程序在执行过程中可以采用的不同路径的图形表示。每个节点都是一个基本块——一个没有分支行为的代码单元。
在这里插入图片描述

Source-based feature extraction(基于源的特征提取)

  • 定义一个词法分析程序:解析代码并将元素分类到不同的容器中
    comments (which are currently removed) 注释
    string literals 字符串
    single character literals 单个字符
    multiple character literals 多字符文字
    numbers 数字
    operators 运算符
    pre-compiler directives 预编译指令
    names 名称
  • 名称进一步细分为关键字(如for、if等)、系统函数调用(如malloc)、类型(如bool、int等)或变量名。
    词法分析过程实例
    3.标记序列转换为向量表示
  • bag-of-words vector
  • word2vec
    在这里插入图片描述

Labels(生成标签)

在函数级别进行标记
在特征提取过程中为每个函数生成标签
使用Clang static analyzer (SA)
去除掉那些和安全漏洞无关的警告
将这些结果与函数相匹配
对标签进行二值化,根据有没有静态分析结果 分别标记为good(negative)和buggy(positive)。
如果我们的检测模型将一个函数标记为buggy,并且还有一个静态分析结果,这将被视为真正的阳性。类似地,当函数没有静态分析结果时,将其标记为buggy会被视为假阳性。

Models

构建机器学习模型来检测BUGGY函数时,我们考虑两个目标。
首先,我们的目标是评估整体可能的性能——每个模型能够预测代码中存在的不安全行为的程度。
其次,我们的目标是比较基于构建和基于源代码的功能的性能,以发现哪一组更能预测代码质量。
因此,我们构建独立的基于源和基于构建的模型,并考虑组合的方法。

Source-based models(基于源代码的模型)

我们基于源代码的模型直接从单个函数的源代码中获取一个特征向量,并输出一个对应于给定函数包含bug的可能性的分数。
根据前面提到的bag-of-word vector和word2vec 两种向量表示方法,构建了多个模型
在这里插入图片描述

Build-based models (基于编译的模型)

random forest

Experimental results

Source-based detection

在这里插入图片描述
在这里插入图片描述

Build-based detection

在这里插入图片描述

Comparison and combined model performance

在这里插入图片描述

在这里插入图片描述

这篇关于读论文系列(一)Automated software vulnerability detection with machine learning的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/274252

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

AI hospital 论文Idea

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

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

论文翻译: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的快

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

论文阅读笔记: Segment Anything

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

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

论文翻译: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