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 ,欢迎广大政企校军单位合作办赛,推动优秀数据人才揭榜挂帅!