APP下载

智能化漏洞挖掘与网络空间威胁发现综述

2023-11-10刘宝旭孙钰杰董放明孙天琦

信息安全研究 2023年10期
关键词:漏洞威胁智能化

刘宝旭 李 昊 孙钰杰 董放明 孙天琦 陈 潇

1(中国科学院信息工程研究所 北京 100093)2(中国科学院大学网络空间安全学院 北京 100049)3(中国科学院网络测评技术重点实验室 北京 100195)4(网络安全防护技术北京市重点实验室 北京 100195)

随着信息化水平的提高,各行业的生产效率也随之提高,国家、个人和各行业基础设施都高度依赖网络计算系统.同时,网络空间面临的威胁也更加严重:2010年震网病毒事件展现了网络威胁对现实世界的破坏[1];2015年乌克兰电网被植入恶意软件造成大规模的停电[2];2020年网络管理软件SolarWinds被植入后门,使超过30万用户面临供应链攻击威胁[3].高级持续性威胁(advanced persistent threat, APT)旨在破坏社会的关键基础设施,如政府、能源、教育等领域[4],对特定目标进行长期、隐蔽和持续攻击,在世界范围内造成了严重的安全威胁和巨大的经济损失.

软件是构建网络空间的核心基础设置之一,存在于软件中的漏洞成为影响网络空间安全的重要因素.漏洞可被利用于窃取他人隐私数据(如HeartBleed漏洞),亦可被用于控制他人计算机(如Sandworm漏洞),以及种种其他网络空间破坏活动.在“黑客地下产业”经济利益驱动下,从漏洞发现、利用到网络渗透攻击,已经形成分工明细、规模化的产业链,各种稀有漏洞资源待价而沽,从漏洞首次发现并被用于渗透攻击的周期缩短到几周甚至几天.快速、深入地漏洞分析与发现已成为安全防御的关键.

漏洞挖掘技术可以应用于网络攻击发生前,降低被入侵的风险.而为了应对正在发生的网络空间攻击,安全界建立了多重防护体系:Gartner公司[5]每年都会总结网络安全行业的关键技术,威胁发现一直是最关键的研究问题之一,威胁发现技术是处置、溯源等减少被入侵损失的基础,也是网络安全防御体系的基石.而网络威胁尤其是APT攻击的发现目前是一个非常具有挑战性的研究领域.

漏洞挖掘技术关注于攻击发生前系统面临的威胁,而威胁发现技术关注攻击发生中系统产生的威胁行为,下面将分别介绍智能化的漏洞挖掘与智能化的网络威胁发现相关研究.

1 智能化的漏洞挖掘研究

随着人工智能和计算机技术的飞速发展,智能化正深刻改变着各个领域.针对漏洞挖掘高度依赖安全人员专业知识等问题,智能化漏洞挖掘技术在漏洞挖掘领域崭露头角.近年来,研究者开始将人工智能技术与漏洞挖掘技术相结合,主要包括将人工智能技术应用于漏洞补丁识别、漏洞预测、代码比对和模糊测试等.

1.1 智能化漏洞补丁识别

漏洞补丁包含了漏洞语句、修补语句、漏洞函数等重要的信息,但是开发人员可能不会在补丁信息中表明这是漏洞补丁,或者在未公开的情况下静默修复漏洞,这些补丁被称为静默补丁,如何精准地从大量提交信息中识别静默补丁是一个技术难题.

1.1.1 基于机器学习的漏洞补丁识别

Zhou等人[6]从提交信息和漏洞报告中提取文本特征,使用K-fold stacking算法将多个分类器组合起来.Perl等人[7]开发了一种启发式算法,从修复提交中找到引入漏洞的提交,提取特征,包括代码度量和GitHub元数据特征.使用线性支持向量机(SVM)作为分类器,能够自动识别潜在的漏洞.

1.1.2 基于深度学习的漏洞补丁识别

传统的机器学习需要研究者提取语义特征,人工成本较高,而深度学习模型能够自动从输入中学习特征,因此深度学习模型越来越多地应用在补丁识别领域.

PatchRNN[8]使用经典的RNN模型,设计了TwinRNN和TextRNN这2个子模型,分别处理修改前后的代码和补丁消息.E-SPI[9]对SPI进行了改进.E-SPI也由2个神经网络组成,作者设计了一个AST编码器获取修改代码相关的抽象语法树路径,使用BiLSTM网络进行训练;使用图神经网络(GNN)构建提交消息依赖图,学习文本消息表示.

1.1.3 基于大语言模型的漏洞补丁识别

大语言模型相较于普通的深度学习模型更有优势,通过对大语言模型预训练,能够很好地胜任补丁识别相关任务.已经有很多学者进行了尝试.VulFixMiner[10]基于Transformer,仅从代码更改中提取语义,该系统的框架包括3个阶段:微调、训练和应用.使用标记的数据对CodeBERT进行微调.在训练阶段使用单层神经网络分类器对补丁进行分类.

1.2 智能化漏洞预测

传统的漏洞识别方法需要依靠人工专家的知识和经验,然而随着对软件安全性要求的提高,需要更高效、自动化和智能化的漏洞识别方法.智能漏洞识别技术具备强大的特征提取和模式识别能力,可以从海量数据中自动学习和提取关键特征,并从中学习出模式和规律,使得漏洞识别更加高效和准确.

1.2.1 基于语法特征的智能化漏洞预测

Rebecca[11]针对大多数研究受限于数据集的规模和多样性,无法充分发挥深度学习优势的问题,提出了利用深度学习从源代码中直接学习特征的方法,并将学习到的特征表示与随机森林分类器相结合进行漏洞检测.

1.2.2 基于语义特征的智能化漏洞预测

随着研究的深入,研究人员开始结合程序分析技术利用更深层的语义信息进行模型训练.Benjamin[12]以漏洞检测的程序分析算法Dataflow Analysis(DFA)为指导,对DFA和GNN消息传递算法进行对比,设计了一种嵌入技术,用于对CFG中每个节点编码,嵌入处理后的CFG进行图学习,通过利用节点中编码的数据流信息进行分析,从而模拟DFA中的数据流技术.

1.2.3 基于大语言模型的智能化漏洞预测

基于Transformer的大语言模型在自然语言处理中的出色表现以及自然语言与高级编程语言(如C/C++)的相似性,使得大模型在漏洞识别中有很好的应用前景.Claudia[13]研究探索了基于Transformer的模型在Java漏洞的多标签分类中的应用,通过使用BERT等Transformer模型,解决了现有漏洞检测数据集过小的问题,提高了模型的性能.

1.3 智能化代码比对

代码比对是发现目标软件中是否存在已知漏洞的重要技术,将漏洞函数与目标软件中的所有函数进行比较,当相似度大于阈值时即可推断目标软件中存在已知漏洞.二进制代码比对方法的一个关键是发现目标场景(跨架构、跨版本、跨编译器、跨优化选项或其组合)尽可能具有鲁棒的、可标识的特征,人工智能方法的基本思想是借助深度神经网络而非人的先验知识识别出这样的特征.

1.3.1 基于深度学习的二进制代码比对技术

Gemini[14]提出借助深度图神经网络具化这一非对等映射.Gemini假设一个函数等价于一个属性控制流图,进一步,Gemini借助内嵌Structure2Vec网络的Siamese网络将一个ACFG表示为一个低维embedding.然后通过比较嵌入的相似性来判断2个二进制函数的相似性.

1.3.2 基于大模型的二进制代码比对技术

Jtrans[15]将汇编代码作为输入,首先使用BERT根据输入生成token,然后引入位置嵌入作为跳转关系依据,接着将两者通过屏蔽语言模型进行训练,最后通过跳跃目标预测进行微调.VulHawk[12]首先将二进制代码转换为微码,通过补充隐式操作数和剪枝冗余指令,有助于保留二进制函数的主要语义.然后使用RoBERTa模型提取微码基本块嵌入,使用图卷积网络(GCN)将基本块嵌入和CFG进行结合生成函数向量进行匹配.

1.4 智能化模糊测试

传统的模糊测试的输入构造过程高度依赖于测试人员的经验,2017年,微软提出了Learn& Fuzz[16]这一智能化模糊测试技术,标志着模糊测试智能化方向的兴起.构造输入主要需要解决3个问题:确定变异位置、改良变异策略、生成合法输入.本文从这3个方面观察模糊测试在智能化技术上的发展.

1.4.1 确定变异位置

Neuzz[17]采用了基于梯度的方法增益模糊测试的变异过程,利用神经网络中的梯度判断和指定代码强相关的输入区域,并重点对此类区域进行变异.MTFuzz[18]通过多维度因素,如变异方法、上下文调用情况与代码覆盖进行训练模型.

1.4.2 改良变异策略

Meuzz[19]根据从过去相同或类似项目的种子调度决策中学到的知识来确定哪些新种子有更高的代码覆盖率.FuzzBoost[20]结合Q-learning模型,设计了一种奖励策略来评估测试覆盖率,以此增强模糊过程中的输入突变.Seamfuzz[21]能够捕捉单个种子输入的特征,按照种子间的语法和语义相似性进行分组,使用汤普森采样算法为不同的种子输入应用不同的突变策略.

1.4.3 生成合法输入

LAFuzz[22]使用LSTM和Attention这2种模型生成高质量的结构化或非结构化的种子输入.在针对编程语言的测试用例生成方面,DeepFuzz[23]利用Seq2Seq模型对C语言源码进行建模并生成半有效的畸形输入.此外,有部分研究尝试利用神经网络模型恢复输入中的语法信息,例如GANFuzz[24]利用生成对抗网络生成符合协议语法规范的畸形输入.

2 智能化的威胁发现研究

威胁发现可以分为威胁检测和威胁狩猎[25],威胁检测是被动的扫描系统识别疑似恶意行为,威胁狩猎是主动地在网络中搜索可以绕开安全检测或产生危害的威胁的过程[26].

网络空间威胁发现需要依赖攻击发生时收集的信息载体,如网络流量、主机日志、恶意文件、网络威胁情报等,下面将从几种信息载体出发,结合智能方法总结每个载体在网络威胁发现中发挥的作用.

2.1 基于网络流量的威胁发现研究

网络流量是网络计算系统互相通信时传输的信息载体,而当攻击者入侵网络计算系统时会在各个环节中产生与正常流量不同的特征,以下将介绍基于网络流量在渗透攻击不同阶段的威胁发现研究.

2.1.1 外部渗透攻击流量检测研究

攻击者通过外部渗透入侵系统,通过对网络流量的分析可以检测到攻击行为.Yang[27]利用IP地址、端口号、包类型数、网络包数作为数据源,结合信息熵和SVM模型进行异常检测.

2.1.2 C2通信的威胁发现研究

攻击者需要向被入侵的主机发送指令完成接下来的渗透攻击环节,在通信的过程中不可避免地产生网络流量,尽管只占网络流量的极小一部分.然而,恶意的C2通信与正常的通信行为模式往往具有差异,许多研究关注C2通信的威胁发现,Dong等人[28]将远程控制木马的网络行为建模,从每个待评估应用的独特网络跟踪行为中自动构建多级树(MLTree),并将二者进行对比识别是否为木马通信.

2.1.3 隐蔽信道的威胁发现研究

恶意软件在获取机密信息后需要进行数据传输,为了规避检测,在数据传输时通常使用隐蔽信道,例如使用DNS协议的字段外泄数据,伪装成合法的DNS查询通过防火墙的检查.Zhang等人[29]使用深度学习方法,将DNS隧道数据视作文本,使用词嵌入作为拟合神经网络的一部分,检测决策由常见的深度学习模型作出,包括密集神经网络(DNN)、1维卷积神经网络(1D-CNN)和循环神经网络(RNN).

2.2 基于主机数据的威胁发现技术

主机数据是网络计算系统在运行中记录操作的文件,包含操作种类、操作时间、操作状态等字段,为威胁发现提供了关键信息.下面将结合主机日志介绍威胁发现技术.

最早研究关注利用日志的统计信息进行异常检测,Llgun[30]利用UNIX操作系统的审计数据序列分析系统状态转换,并匹配攻击模式的行为检测异常.

随着计算资源的增加,许多深度学习模型被提出并用于日志数据系统异常检测.Yang等人[31]提出一种基于对数的异常检测方法PLELog,采用半监督方法消除耗时的人工标签,并通过概率标签估计方法,结合有关历史异常的知识,以发挥监督方法的优越性.通过设计一个基于注意力的GRU神经网络有效地检测异常.

由于APT攻击具有时间跨度长的特点,使用传统方法很难记录长期行为并进行关联,溯源图可以记录上下文,是一种具有威胁发现潜力的数据结构,Hossain[32]首先利用溯源图描述APT攻击,将进程、文件等作为图的节点,审计事件作为边,并对违反规则的事件进行报警.

尽管目前许多研究展示了非常高的检测准确性,但Le[33]在评估后指出现有研究存在的局限性,例如在数据集正常与异常数据分布高度不平衡、标记错误的日志、额外的日志事件、日志解析错误产生的数据噪声等情况会大大影响现有方法的性能,而这些局限性也是未来的研究方向.

2.3 基于文件的威胁检测

文件通常是恶意功能实现的载体,攻击者可以将恶意功能加装在文件中,并通过传播文件、诱导受害者系统打开文件的方式实现恶意攻击行为的自动执行.自2013年以来,恶意软件呈指数级传播,知名恶意软件检测网站VirusTotal日均处理样本数量在200万以上,在所有检测到的恶意软件中,首次出现的恶意软件比例保持在40%以上[34].

恶意软件分析是确定恶意软件功能、分析工作原理的过程.分析恶意软件主要有2种技术:静态分析与动态分析.静态分析在不运行实际代码的情况下检查恶意软件,其代表工具有PEiD,DIE,YARA,Angr,IDA等,动态分析则在可控环境下执行恶意代码、监控代码行为,代表工具有cuckoo,VMware,Ollydbg等.

自动化恶意软件检测还需要对恶意软件的分析结果进行数据挖掘,并从中提取恶意软件特征.恶意软件的特征提取技术同样在数十年的发展中获得了长足的进展.早期的特征提取以启发式特征为主,包括文件导入导出表、文件主体与导入表、导出表等各部位的hash值、文件在动态分析中表现出的域名及IP等网络通信行为地址以及软件中可能出现的标志性字节特征,如字符串、字节码等.

随着数据挖掘技术在恶意软件特征提取方面的引入,更多恶意软件特征也随之出现,Abou-Assaleh[35]早在2004年就提出将N-gram技术引入恶意软件检测,这种技术获得了学术界认可并不断发展[36],另一些研究将恶意软件以TF-IDF(term frequency-inverse document frequency)[37]、控制流图[38]、函数长度频率[39]、可打印字符串信息[39-40]等形式进行表征,并取得一定成果.

特征提取的成果需要经过处理以判定软件的恶意性或相似性.最直接的判断方式是基于规则的特征匹配算法,通过研究机构发布的域名、IP、文件hash匹配等IOC(indicators of compromise)情报.这类精准匹配的代表性工具有YARA,SIGMA,IDS等.

但是,精准的特征匹配通常易于规避,攻击人员可以轻易地改变自身的网络基础设施与恶意软件hash.基于行为的恶意软件检测方法更加鲁棒,尽管程序代码在更改,但程序的行为总是相似的,因此,大量新的恶意软件可以用基于行为的方式进行检测.这类方法对以下特征更为关注:系统调用、文件更改、注册表改动、网络活动、执行过程.

得益于数据挖掘技术的帮助,研究人员将机器学习与深度学习引入软件恶意性判定领域,并对各类特征进行分析,经典的机器学习方法包括贝叶斯网络、朴素贝叶斯等,而深度学习方法则包括深度信念网络、CNN网络等.机器学习与深度学习在精准分类与检测未知样本领域展现出强大的实力,但较高的误报率、匮乏的可解释性与模型退化问题一直困扰着研究人员.

2.4 基于威胁情报的入侵检测

根据Gartner的定义:威胁情报是某种基于证据的知识,包括上下文、机制、标示、含义和能够执行的建议,这些知识与资产所面临已有的或酝酿中的威胁或危害相关,可用于资产相关主体对威胁或危害的响应或处理决策提供信息支持[41].本节将从入侵检测发现和威胁预测预警2个方面进行详细介绍.

2.4.1 入侵检测发现

传统的入侵检测系统(intrusion detection system, IDS)主要依赖于主机和网络设备生成的日志和流量数据,并基于规则、签名或行为模式等方式检测潜在的入侵行为.这使得IDS难以适应不断涌现的新型网络攻击,无法做到准确识别、及时报告和有效阻截.威胁情报极大地扩展了IDS可用的数据源范围,可以实时更新检测规则并提供额外的攻击上下文信息,进而帮助IDS更好地发现和应对入侵行为.

刘亮等人[42]利用深度学习技术提取文本中的入侵指标(indicator of compromise, IOC),并基于威胁情报自动生成入侵检测规则方法,补足了传统IDS实时性的不足,提升了IDS对网络安全热点事件的响应能力.Guarascio等人[43]则进一步建立了IDS和其他信息感知组件之间的合作平台,通过共享知识信息改进了IDS潜在的入侵行为预测准确性.Mahmoud等人[44]利用威胁报告的内容和关联关系捕获攻击行为,使用系统内部日志建立系统起源图,将威胁狩猎建模为攻击行为与系统起源图的匹配问题,进而在高级持续性威胁(advanced persistent threat, APT)攻击的早期阶段将其检出.在威胁狩猎方面,Gao等人[45]也提出了基于威胁情报的THREATRAPTOR系统,设计了一种专用的查询语言TBQL,实现了从非结构化文本中提取结构化威胁行为,并通过高效的查询执行引擎进行准确有效的威胁狩猎.

2.4.2 威胁预测预警

威胁预测预警旨在通过收集、分析和解释威胁情报,提前预测可能的安全威胁,并采取相应的防御措施,以最大程度地降低潜在的风险.

海量多源的威胁情报数据中隐含了许多现有或酝酿中的网络威胁信息.Riebe等人[46]提出了一个基于Twitter的警报生成系统,该系统可以持续关注最新的网络安全相关主题,并在15min内追踪和报告最新的网络威胁,相关事件的检出率高达93.8%,误报率为14.81%.为了解决日益增多的网络攻击对组织的困扰,Nagai等人[47]提出了一种从多个数据源有效收集威胁信息的方法,并通过可视化分析展现了网络威胁的发展趋势,以便组织采取相应措施保护其关键资产.而在威胁预警方面,GonzáLez-Granadillo等人[48]构建了一个功能全面的威胁情报平台,具有可扩展的情报导入、质量评估流程、可视化和信息共享功能,并能基于启发式的分析推理评估和呈现威胁的严重程度.

3 总结与展望

随着智能化技术的蓬勃发展,人工智能在漏洞挖掘、威胁发现等领域的作用日益突显.在漏洞挖掘方面,当前人工智能技术也开始与传统漏洞挖掘和程序分析技术,如污点分析和符号执行相融合.近年来,大型语言模型的迅速崛起更进一步促使基于深度学习的方法与这些大模型相结合.如何最有效地激发大型语言模型在漏洞挖掘领域的潜力,是一个值得深思和探索的问题.相同地,在威胁发现方面,如何将大语言模型与其相结合也是值得探索的方向.同时,为了保持持续有效的防御,安全团队需要不断改进数据采集、处理和整合的方法,并及时调整入侵检测规则,以适应不断演变的威胁环境.

猜你喜欢

漏洞威胁智能化
智能化战争多维透视
漏洞
印刷智能化,下一站……
人类的威胁
受到威胁的生命
面对孩子的“威胁”,我们要会说“不”
基于“物联网+”的智能化站所初探
三明:“两票制”堵住加价漏洞
漏洞在哪儿
高铁急救应补齐三漏洞