【二等奖方案】基于人工智能的漏洞数据分类赛题「道可道,非常道」团队解题思路

2022 CCF BDCI 大赛 · 数字安全公开赛「基于人工智能的漏洞数据分类」赛题二等奖团队「道可道,非常道」战队获奖方案,赛题地址: http://go.datafountain.cn/s57

团队简介

本团队具有丰富的比赛和项目经验。在AI大赛上多次拿到Top成绩,其中包括阿里云天池安全恶意程序检测第一名、科大讯飞恶意软件分类挑战赛第三名、CCF基于人工智能的恶意软件家族分类第四名、科大讯飞事件抽取挑战赛第四名、科大讯飞阿尔茨海默综合症预测挑战赛第四名、Datacon大数据安全分析比赛第五名。团队成员总共拥有十多项发明专利,对传统机器学习和深度学习均有独到的见解。

摘要

随着关键信息基础设施在数字化、网络化、智能化转型的过程中配置了大量信息资产,其网络体系越来越复杂,漏洞作为“伴生体”所带来的威胁问题日益凸显。为了应对面临的日益严峻的安全挑战,加强安全漏洞知识库的建设是必由之路。其中CVE漏洞平台中的漏洞数据是国际权威公开的漏洞知识信息。该平台具有多维度和多样性的漏洞信息。为了更好地理解和持续研究,需对漏洞数据进行信息提取。

而在信息提取的场景中,传统采用的是基于人工规则的提取方法,开发效率比较低,泛化性比较差。而利用基于机器学习的自然语言处理(NLP)方法能够更好的对海量数据进行总结和学习,大大提高了信息提取的泛化能力。

虽然预训练模型在各个领域中已经取得了很大的进展,尤其是在自然语言处理应用中,但是考虑到部分工业实际场景中计算资源有限以及机器学习模型的可解释性,所以采用特征工程和传统机器学习模型的方法进行漏洞数据分类。

在对漏洞数据进行信息提取的场景中,可能存在样本类别分布不均衡、标注数据存在噪声等问题,本文提出一种基于噪声数据修正的解决方案,然后对文本提取关键动词性词组和名词性词组等特征,接着根据不同任务的难度分别使用不同复杂度的模型,最终并取得较好的信息提取效果。

关键词

漏洞信息提取、噪声数据、特征工程、效率

前言

在网络安全领域,漏洞常被攻击方视为“杀手锏”武器,又被防守方当作“万恶之源”。漏洞本身虽然不产生危害,但一旦被利用,则极有可能带来严重的威胁。关键信息基础设施在数字化、网络化、智能化转型的过程中配置了大量信息资产,其网络体系越来越复杂,漏洞作为“伴生体”所带来的威胁问题日益凸显。

为了应对面临的日益严峻的安全挑战,加强安全漏洞知识库的建设是必由之路。其中CVE漏洞平台中的漏洞数据是国际权威公开的漏洞知识信息。该平台中的漏洞信息包含有CVE编号、漏洞评分、漏洞描述等内容,其中漏洞描述含有对漏洞的利用条件、受影响的范围、漏洞可达到的效果(危害)等内容。为了更好地理解和持续研究,需对漏洞数据进行信息提取,而在信息提取的场景中,传统采用的是基于人工规则的提取方法,开发效率比较低,泛化性比较差。而利用基于机器学习的自然语言处理(NLP)方法能够更好的对海量数据进行总结和学习,大大提高了信息提取的泛化能力。

在对漏洞数据进行信息提取的场景中,可能存在样本类别分布不均衡、标注数据存在噪声等问题,本文提出一种基于噪声数据修正的解决方案,然后对文本提取关键动词性词组和名词性词组等特征,接着根据不同任务的难度分别使用不同复杂度的模型(逻辑回归、随机森林、XGBoost),最终取得了A榜第一名、B榜第二名的优异成绩。

整体方案设计

本文使用NLP方法对漏洞的描述信息进行信息挖掘和提取,从而获取到漏洞利用所需的攻击者权限(Privilege-Required)、攻击向量介质(Attack-Vector)、漏洞利用的结果(Impact)等重要信息。该方案分为五大模块:数据分析模块、数据预处理模块、特征抽取模块、模型训练模块、模型预测模块。整体流程图如下图1所示:

2.1 数据分析模块

在本文对应的漏洞数据分类任务中,需要同时对三种属性进行分类。其中Attack-Vector属性的分类属于二分类任务,Privilege-Required属性的分类属于四分类任务,而Impact属性的分类属于多层次分类任务。训练数据集共4499条,A榜测试集共1794条,B榜测试集共2686条,额外无标注数据总共6w条。分析数据可以发现该任务共存在3大难点:

(1)训练集样本分布存在较大的不均衡现象,以Attack-Vector属性分类为例,remote类别为4279例, non-remote类别为220例;而在Privilege-Required属性分类中,access类别为2685例,Nonprivileged类别为945例,unknown类别为799例,admin/root类别共70例。而Impact属性具有层次结构,如果不考虑其层次关系,直接统计每一种具体的类别,可得最多类别的Privileged-Gained(RCE)_unknown的数量为1272例,而最少类别的information-disclosure_other-target(credit)_admin/root的数量仅有3个样本

(2)训练集和测试集分布不一致,直接使用预训练模型对训练集进行微调后,分别观测验证集和测试集的效果,发现两者差异较大。通过数据筛选和分析后发现,训练集数据存在部分噪声数据

(3)训练数据量不多,但存在大量的无标注数据,如何更好的利用无标注数据是提升效果的关键。

2.2 数据预处理模块

首先去除与本任务无关的文本内容,通过正则表达式删除特殊标点符号(如单引号、双引号、叹号)、软件版本号(如17.1r3、4.2.x)、时间信息(11:38:17、jul 23 14:16:03)、不重要的注解(如note: this issue is due to an incorrect fix for cve-2012-5643)、影响版本范围(如this issue affects juniper networks junos os on acx500 series, acx4000 series: 17.4 versions prior to 17.4r3-s2.)、漏洞已修复的软件信息(如fixed in vault and vault enterprise 1.7.6, 1.8.5, and 1.9.0.)等内容。

然后对训练集中的噪声数据进行修正。首先通过随机采样少比例数据后,根据对题目的理解,从而通过人工校验的方法修正该部分数据,并将其作为种子样本。例如在Impact中同时存在两种及其以上类别时,标签却标注为低优先级的类别,而正确标签是多个类别中最高优先级的类别。将种子样本(标签为1)和采样样本中的其余样本(标签为0)进行训练,并对未采样样本进行预测,从而得到未采样样本中类似于种子样本的样本数据。由于单次采样具有一定的不确定性,所以重复执行三次,并对三次同时预测为1的样本作为需要修正的样本。凭借专家经验对上述样本中的错误样本进行修正,从而达到修正噪声数据的目的。

2.3 特征提取模块

特征提取模块是对预处理后的数据进行进一步的特征提取。该模块不仅提取了一些简单的统计特征,如文本的字符总数、单词总数、句子个数等。而且对赛方提供的数据标注结果(红色部分)进行分析,可得重要信息均来自于名词性词组、动词性词组和部分关键词。而spacy库不仅能够提取上述的各种结构词组,而且该库也是基于海量数据构建而成的预训练模型进行信息提取的,从而保证信息提取的有效性和完整性。

2.4 模型训练模块

由于Attack-Vector属性、Privilege-Required属性和Impact三大属性分类的难度是不同的,所以根据任务的难度分别使用不同复杂度的模型(逻辑回归、随机森林、XGBoost),具体来说:Attack-Vector属性采用逻辑回归分类器,而Privilege-Required属性采用随机森林分类器,Impact属性采用XGBoost[1]。

为了缓解类别不均衡的情况,通过使用对少数类样本进行过采样、增加少量样本类别对应的权重和对多数类样本进行欠采样等方法,最终增强了模型对少数类的泛化能力。

由于额外无标注数据为六万条,远远大于训练集的样本数。所以可通过使用半监督学习来增加训练数据的丰富度和多样性,具体做法是通过有监督学习,将预测集中置信度高的数据直接打标签放入训练集,循环往复多次,从而得到新的训练集。

2.5 模型测试模块

预测模块对测试集数据按照上述特征提取模块提取特征,使用训练模块得到的参数进行测试数据的预测,最终预测集A榜和B榜取得了第一名和第二名的成绩。

致谢

非常感谢中国计算机学会大数据与计算智能大赛组委会精心组筹备和组织的基于人工智能的漏洞数据分类比赛。通过对赛题的认真分析、深入思考,并经过多次的模型迭代与验证,最终提出了具有创新性的解决方案。

非常感谢家人、同事、朋友一直以来的大力支持和无私帮助。

参考

[1] Chen T, Guestrin C. XGBoost: A Scalable Tree Boosting System[C]// ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2016:785-794.


我是行业领先的大数据竞赛平台 @DataFountain ,欢迎广大政企校军单位合作办赛,推动优秀数据人才揭榜挂帅!

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

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

相关文章

线性表之链表

1、链表概述 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 顺序表的存储位置可以用一个简单直观的公式表示,它可以随机存取表中任意一个元素,但插入和删除需要移动大量元素。链式…

深入理解 PostgreSQL 的架构和内部工作原理

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Postman怎么做接口测试-以简单的登录接口为例

我们就以登录某测试系统为例子,实现在Postman上做接口测试 一、首先打开系统首页首页,做一个登录操作(目的是获取接口url及参数):一般在公司做接口测试的时候页面还没有出来,我们需要根据接口文档进行接口…

kafka第三课-可视化工具、生产环境问题总结以及性能优化

一、可视化工具 https://pan.baidu.com/s/1qYifoa4 密码:el4o 下载解压之后,编辑该文件,修改zookeeper地址,也就是kafka注册的zookeeper的地址,如果是zookeeper集群,以逗号分开 vi conf/application.conf 启…

Python 逻辑回归:理论与实践

文章目录 1. 介绍1.1 什么是逻辑回归?1.2 逻辑回归的应用领域 2. 逻辑回归的原理2.1 Sigmoid 函数2.2 决策边界2.3 损失函数 3. 逻辑回归的实现3.1 数据准备3.2 创建逻辑回归模型3.3 模型训练3.4 模型预测3.5 模型评估 4. 可视化决策边界4.1 绘制散点图4.2 绘制决策…

基于SaaS模式的Java基层卫生健康云HIS系统源码【运维管理+运营管理+综合监管】

云HIS综合管理平台 一、模板管理 模板分为两种:病历模板和报表模板。模板管理是运营管理的核心组成部分,是基层卫生健康云中各医疗机构定制电子病历和报表的地方,各医疗机构可根据自身特点特色定制电子病历和报表,制作的电子病历…

Docker 容器生命周期:创建、启动、暂停与停止----从创建到停止多角度分析

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

代码随想录| 图论04 查并集 ●查并集理论知识 ●1971.寻找图中是否存在路径 ●684.冗余连接 ●685.冗余连接II

#查并集理论知识 并查集用处:解决连通性问题 将两个元素添加到一个集合中。判断两个元素在不在同一个集合 思路:将三个元素A,B,C (分别是数字)放在同一个集合,其实就是将三个元素连通在一起&a…

Python 算法基础篇:插入排序和希尔排序

Python 算法基础篇:插入排序和希尔排序 引言 1. 插入排序算法概述2. 插入排序算法实现实例1:插入排序 3. 希尔排序算法概述4. 希尔排序算法实现实例2:希尔排序 5. 插入排序与希尔排序的对比总结 引言 插入排序和希尔排序是两种常用的排序算法…

017-从零搭建微服务-系统服务(四)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…

【NLP】如何使用Hugging-Face-Pipelines?

一、说明 随着最近开发的库,执行深度学习分析变得更加容易。其中一个库是拥抱脸。Hugging Face 是一个平台,可为 NLP 任务(如文本分类、情感分析等)提供预先训练的语言模型。 本博客将引导您了解如何使用拥抱面部管道执行 NLP 任务…

超详细图文教程:3DS Max 中创建低多边形游戏长剑模型

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 在此,由两部分组成的教程的第一部分中,我将向您展示如何: 对剑柄进行建模剑的护手模型剑刃建模 1. 如何制作剑柄 步骤 1 在本教程中使用正交视图。要更改视图&#x…

AI时代带来的图片造假危机,该如何解决

一、前言 当今,图片造假问题非常泛滥,已经成为现代社会中一个严峻的问题。随着AI技术不断的发展,人们可以轻松地通过图像编辑和AI智能生成来篡改和伪造图片,使其看起来真实而难以辨别,之前就看到过一对硕士夫妻为了骗…

Flink-端到端精确一次(End-To-End Exactly-Once)

1.总结 目的:想要在故障恢复后不丢数据 输入端 保证可以重复发送数据如果是kafka,Flink负责维护offset,不用kafka维护设置kafka的隔离级别为:读已提交flink 开启检查点采用对齐或者不对齐的精确一次输出端 kafka 幂等事务两阶段…

一文了解Python中的while循环语句

目录 🥩循环语句是什么 🥩while循环 🥩遍历猜数字 🥩while循环嵌套 🥩while循环嵌套案例 🦐博客主页:大虾好吃吗的博客 🦐专栏地址:Python从入门到精通专栏 循环语句是什…

Mysql表锁与行锁

Mysql锁实战 前言:什么是锁一:全局锁1.1 概念1.2 作用1.3 使用1.4 特点 二:表级锁2.1 概念2.2 分类2.2.1 表锁2.2.2 元数据锁 MDL2.2.3 意向锁 三:行级锁3.1 行锁(Record Lock)3.2 间隙锁(Gap Lock)3.3 临键锁(Next-Key Lock): 四…

C# 委托详解

一.委托的概念 C#中委托也叫代理,委托提供了后期绑定机制(官方解释),功能类似于C中的函数指针,它存储的就是一系列具有相同签名和返回类型的方法的地址,调用委托的时候,它所包含的所有方法都会被执行。 二.委托的用法…

自然语言处理基础详解入门

1、自然语言的概念 自然语言是指人类社会约定俗成的,并且区别于人工语言(如计算机程序)的语言,,是自然而然的随着人类社会发展演变而来的语言,它是人类学习生活的重要工具。 2、自然语言处理概述 自然语言…

Redis【实践篇】之RedisTemplate基本操作

Redis 从入门到精通【应用篇】之RedisTemplate详解 文章目录 Redis 从入门到精通【应用篇】之RedisTemplate详解0. 前言1. RedisTemplate 方法1. 设置RedisTemplate的序列化方式2. RedisTemplate的基本操作 2. 源码浅析2.1. 构造方法2.2. 序列化方式2.3. RedisTemplate的操作方…

【数据可视化】基于Python和Echarts的中国经济发展与人口变化可视化大屏

1.题目要求 本次课程设计要求使用Python和ECharts实现数据可视化大屏。要求每个人的数据集不同,用ECharts制作Dashboard(总共至少4图),要求输入查询项(地点和时间)可查询数据,查询的数据的地理…