第二篇 基于自然语言处理的漏洞检测方法综述

news2024/12/19 20:21:37

杨伊等 来源:计算机研究与发展

目录

1 相关技术

1.1 自然语言处理

1.2 漏洞检测与分析


        据2021年CVE漏洞趋势安全报告,当前漏洞类型占比最大的5类漏洞分别是代码执行、拒绝服务、溢出、跨站脚本以及信息获取。基于自然语言处理技术实现漏洞检测的研究工作按照数据类型的不同进行分类,可分为官方文档、代码、代码注释以及漏洞相关信息。

        注: 四大信息安全高水平会议:USENIX Security,IEEE S&P, ACM CCS,NDSS。

1 相关技术

1.1 自然语言处理

        在利用自然语言处理技术辅助漏洞检测研究的时候,通常是NLP解析器使用标准NLP技术对预处理文本中的每一条语句进行分解,依次利用依存语法解析、词嵌入、命名实体识别、词性标注、语义消歧等操作对语句进行处理。

  • 依存语法解析(dependency parser):主要是通过分析单词等语言单位之间的词法关系来揭示句子的句法结构,包括主谓关系、动宾关系等。依存句法解析的结果通常表示为有根解析树。
  • 词嵌入(word embedding):将文本(单词或短语)从词汇表映射到实数的高维向量,把一个维数为所有词的数量的高维空间映射到一个低维度连续向量空间中,从而消除维数灾难的问题,每个单词或词组被映射为实数域上的向量。
  • 命名实体识别(named entity recognition):识别文本中具有特定意义的实体以及可以用名称标识的事物,主要包括人名、地名、机构名以及专有名词等。
  • 词性标注(part-speech tagging,POS):基于上下文将文本中的单词标记为对应于特定词性(名词、动词、形容词等)的过程。
  • 词义消歧(word sence disambiguation,WSD):根据上下文确定对象语义的过程。

        以上各步骤构成了自然语言处理的预训练内容。当前预训练语言模型被划分为词嵌入模型(Word3Vec,GloVe,ElMo)和多用途的NLP模型(Transformer和BERT)。

        词嵌入模型:通过随机值初始化词表示,并通过应用连续词袋或跳过词将词上下文的联合概率分布用作其输入模型,然后在神经网络的训练过程中利用这种分布,其中单词向量会不断更新以使联合概率最大化。训练的结果确保相关词被赋予其相似上下文的近似向量,而不相关的词被映射到不同的向量中,而词与词之间的语义差异通常通过向量之间的余弦距离进行测量。ElMo模型能够根据上下文推断每个词对应的词向量,解决多义词问题。

        预训练模型Transformer的核心就是注意力机制,该模型完全依靠注意力机制绘制输入和输出之间的全局依赖关系,其本质上是一种 Encoder-Decoder 的结构,以 3 种不 同 的 方 式 使 用 多 头 注 意 力 机 制。

        基于transfomer模型Encoder结构的模型BERT,预训练部分与Word2Vec和ELMo相似。BERT预训练模型可以使一个词在不同的语境下生成不同的词向量。

1.2 漏洞检测与分析

        漏洞:网络和安全的根源,是信息系统的硬件、软件、操作系统、网络协议、数据库等在设计上、实现上出现的可以被攻击者利用的错误、缺陷和疏漏。

        漏洞攻击:

        漏洞检测:对信息系统所用软硬件进行研究,找出存在的可能威胁信息系统安全的薄弱环节。

         静态检测技术:在不执行应用程序源代码的情况下,从语法和语义上理解程序的行为,直接分析被检测程序的特征,寻找可能导致错误的异常,包括潜在的安全违规、运行时错误以及逻辑不一致等情况。基于源代码的静态检测技术主要有数据流分析、抽象解释和符号分析。

  • 数据流分析:目的是分析变量沿着程序执行路径的流动过程,即获取相关程序运行时行为的信息的过程,不会使用语义运算符。在基于数据流的源代码漏洞分析中,通常包含代码建模、程序代码模型、根据规则进行漏洞分析以及检测结果的分析。在数据流分析时,根据程序路径的分析精度分为流不敏感分析、流敏感分析和路径敏感分析。它们的主要区别在于当根据程序路径的深度进行分类时,分为过程内分析(只考虑函数内的代码)和过程间分析(考虑函数之间的数据流)。
  • 抽象解释:对计算机程序的部分进行执行,然后获取有关它的语义信息,目的是找出程序在运行时的语义错误,比如除零或者变量溢出。
  • 符号分析:指的是使用符号值而不是实际数据作为输入,将实际变量的值表示为符号表达式,得到每个路径抽象的输出结果。

        模糊测试:本质是向程序中插入异常的、随机的输入来触发程序中不可预见的代码执行路径或漏洞。分为基于路径覆盖率的模糊测试方法和导向型模糊测试方法。

  • 基于覆盖率的模糊测试方法:目的在于生成输入以及遍历应用程序的不同路径,从而在一些路径上触发错误,即最大化覆盖路径从而触发可能包含错误的路径。当前主流的基于路径覆盖率的漏洞检测工具包括AFL、libFuzzer、AFLFast、VUzzer等。
  • 导向型模糊测试方法:在潜在漏洞位置已知的情况下,寻找可以触发漏洞的POC,即有针对性地生成一组输入。当前常见地导向型模糊测试方法包括AFLGo、SemFuzz、Hawkeye等。
        ....(未完待续)2022.10.9

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

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

相关文章

STM32F103实现激光测距传感器测距WT-VL53L0 L1

目录 本博客将采用标准库和HAL库实现 所用设备选择 引脚说明 与单片机的接线表 标准库实现 HAL库实现 本博客将采用标准库和HAL库实现 所用设备选择 单片机型号:STM32F103C8T6 激光测距传感器型号:WT-VL53L0 L1 采用串口TTL电平输出,可…

CSDN云IDE初次测评体验

CSDN云IDE初次测评体验 文章目录CSDN云IDE初次测评体验一、前言二、云IDE产品介绍三、云IDE使用教程1、尝试编写Python爬虫代码2、尝试编写Python可视化代码3、尝试连接MySQL数据库四、最后我想说一、前言 最近一直有收到CSDN官方私信参加这个测评云IDE活动,刚好这…

YOLOv5剪枝 | 模型剪枝理论篇 | 1/2

文章目录 1. 前言2. 摘要精读3. 背景4. 本文提出的解决方式5. 通道层次稀疏性的优势6. 挑战7. 缩放因素和稀疏性惩罚8. 利用BN图层中的缩放因子9. 通道剪枝和微调10. 多通道方案11. 处理跨层连接和预激活结构12. 实验结果12.1 CIFAR-10数据集剪枝效果12.2 CIFAR-100数据集剪枝效…

Kafka图形管理界面Kafka-eagle安装配置详解

Kafka Eagle是一款结合了目前大数据Kafka监控工具的特点,重新研发的一块开源免费的Kafka集群优秀的监控工具。它可以非常方便的监控生产环境中的offset、lag变化、partition分布、owner等。 官方网址:EFAK 点击下载,将安装包下载到电脑本地&…

pytoch安装

1、安装 Anaconda 2、检查显卡,驱动(检查是否较新) winR——cmd,进入命令行,输入: nvidia-smi 如果版本不够,去官网下载Release Notes :: CUDA Toolkit Documentation (nvidia.com) 3、创建P…

【飞桨PaddleSpeech语音技术课程】— 语音识别-流式服务-模型部分

(以下内容搬运自飞桨PaddleSpeech语音技术课程,点击链接可直接运行源码) 流式语音识别模型 Deepspeech2 与 Conformer 1. 前言 1.1 背景知识 语音识别(Automatic Speech Recognition, ASR) 是一项从一段音频中提取出语言文字内容的任务。 (出处:DLHL…

开源监控软件Zabbix5部署实战

系列文章目录 文章目录系列文章目录一、zabbix介绍一、zabbix部署1、zabbix环境2、安装zabbix的安装包安装zabbix_server安装被监控方 web001一、zabbix介绍 百度百科:Zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。它是一…

2022-10-27 工作记录--Swiper/React-解决swiper处理动态数据出现样式紊乱、抖动问题

Swiper/React-解决swiper处理动态数据出现样式紊乱、抖动问题 First of all,检查自己在push数据前是否先清空了数组: 若已清空,请直接往下看👁👁哦;若未清空,请先清空数组(可查看我的…

机器学习笔记:支持向量机SVM

1 一些概念 1.1 线性可分 在二维空间上,两类点被一条直线完全分开叫做线性可分。严谨的说法是: D0和 D1 是 n 维欧氏空间中的两个点集。如果存在 n 维向量 w 和实数 b,使得所有属于 D0 的点 xi 都有 wxib>0 ,而对于所有属于 …

【面试题】 ES6知识点详细解析

给大家推荐一个实用面试题库 1、前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 🍔let const 其他知识点补充 块级作用域的补充 const 不可以在循环体里面声明变量给大家推荐一个实用面试…

从零备战蓝桥杯——动态规划(背包dp篇)

双非刷leetcode备战2023年蓝桥杯,qwq加油吧,无论结果如何总会有收获!一起加油,我是跟着英雄哥的那个思维导图刷leetcode的,大家也可以看看所有涉及到的题目用leetcode搜索就可以哦,因为避让添加外链,一起加…

【JavaWeb】之Tomcat介绍、安装与使用

【JavaWeb】Tomcat前言一、Tomcat简介1.什么是Tomcat2.其他常用Web服务器二、Tomcat安装1.下载Tomcat2.配置环境变量三、Tomcat使用1.启动与关闭Tomcat2.修改Tomcat的端口号和主机名称3.使用IDEA搭建Web开发环境4.在Tomcat中部署web项目四、Web项目目录结构五、网站访问流程后记…

【Linux】yum vim 基础工具的使用

文章目录1. Linux环境下的软件包管理器---- yum1.2 什么是软件包1.3 yum源镜像配置1.4 yum查看软件包1.5 yum 如何安装软件1.6 yum 如何卸载软件2. Linux编辑器--vim2.1 vim 简介2.2 . vim的基本操作2.3 vim命令模式下的命令集2.3.1 光标移动2.3.2 编辑2.4 vim末行模式下的命令…

Python入门自学进阶-Web框架——24、DjangoAdmin项目应用-定制页面2

这里要实现点击对应的表名称&#xff0c;显示具体表的详细内容&#xff0c;大致的流程是&#xff1a; 前端显示各个表名&#xff0c;如下&#xff1a; <tbody>{% for table_name,admin in app_tables.items %}<tr class"border-bottom"><td style&…

彻底理解Java并发:volatile关键字

本篇内容包括&#xff1a;volatile 关键字简介、volatile 保证可见性&#xff08;包括&#xff1a;关乎不可见性问题描述、JMM内存模型和不可见性的解决方案&#xff09;以及 volatile 其他特性&#xff08;包括&#xff1a;volatile 不保证原子性、volatile 原子性的保证操作、…

mysql-高级命令(1)和一些函数(悟已往之不谏,知来者之可追)

一、高级命令 1.查询某个字段和多个字段 select 某个字段&#xff08;或者多个字段&#xff0c;中间以逗号间隔&#xff09;from 表名&#xff1b; 2. 去除字段的重复值 3.and 表示&#xff08;两个条件都需要满足&#xff09; 4.or &#xff08;两个条件满足一点&#xff09;…

【Linux】软件包管理器 yum 与编辑器 vim 的基本使用

文章目录一、yum 背景知识1、商业生态2、开源生态3、软件生态本土化二、yum 的基本使用1、查看软件包2、安装软件3、卸载软件三、vim 的基本使用1、vim 的基本概念2、vim 的基本操作2.1 模式间切换2.2 光标定位2.3 文本复制2.4 文本编辑2.5 底行模式的操作四、简单 vim 配置2、…

SpringBoot+SpringCloud+Nutty打造分布式在线消息推送服务(实例)

文章目录前言技术架构效果图后端项目消息数据定义存储结构消息状态Nutty消息服务项目结构改动消息bean消息处理器消息转换pojo工具审核消息处理controller实现类服务调用前端连接代码初始化接受消息消息的展示效果总结前言 其实关于这个的话&#xff0c;我先前的几篇博文&…

css选择器

碎碎念&#xff1a;都是一些自己在学习过程中的一点体会&#xff0c;如果有什么不对的感谢大家指正一起学习&#xff01; css选择器一、常用选择器二、属性选择器三、其他五、栗子1. * 通配符2. 空格 div p3. > 子选择器4. ~ 通用兄弟选择器5. 相邻兄弟选择器6. , 选择器分…

使用 Vercel 快速部署前端项目

Vercel&#xff1a;一键部署前端项目。 前端项目部署的问题 先来说下前端项目的部署&#xff0c;一般来说有以下几个步骤&#xff1a; 项目打包上传到服务器域名解析SSL 证书申请Nginx 配置CDN 加速 如果是公司的项目&#xff0c;打包之后的步骤一般有专门的运维人员负责&am…