人工智能在网络安全领域的应用及技术综述笔记
on Paper notes
原文作者:彭祯方 邢国强 陈兴跃
单位:天融信科技集团,93216部队
时间:2022年2月
本文讲的相对分散,也有关于病毒检测等的内容,在这里我只记录了和漏洞挖掘有关的内容
看完以后的感受是:这篇文章没啥用,啥也没讲,纯纯水文
人工智能在0day漏洞领域的应用及关键技术
国外应用现状
国外针对二进制漏洞、Web漏洞形成了诸多自动化漏洞挖掘工具,如Bockspwn, AppScan, Digtool, VUzzer, Mayhem, SPIKE, Grammarinator, Peach, FileFuzz, Radamsa, MiniFuzz等
卡耐基梅隆大学的ForAllSecure团队利用Mayhem系统开展未知漏洞挖掘。其中Mayhem系统是基于大规模并行计算 的漏洞挖掘系统,结合福安后执行 和导向型模糊测试 技术,通过监控目标程序的行为动态生成测试用例。
国内应用现状
主要以传统方法为主,基于开源工具改造各类二进制代码静态分析工具,这些工具通过PE文件结构分析,仅能发现除0、堆溢、栈溢、未初始化、各类指针误用 等基本漏洞。也有少部分机构将人工智能算法那引入自动化漏洞挖掘,能实现部分主流漏洞发掘的模型搭建,这些模型能在一些非主流软件的漏洞挖掘上有所作为,但是在主流的软件、操作系统和数据库系统等还是算法效率、模型适应性很低下。
人工智能漏洞挖掘的关键技术
二进制程序函数的自动识别技术
二进制程序不像高级语言那样清晰,难以识别函数。传统的反汇编工具识别函数效率很低,利用深度学习算法,采用加权前缀树 学习函数的签名,前缀树种每个节点与二进制中的字节或者指令相对应,从根节点到某个节点的路径代表可能的字节或者指令序列。将基于特定算法那学习到的字节或者指令序列的置信度作为权重,通过签名匹配二进制片段的方式来识别函数 ,用深度学习算法识别函数边界,利用循环神经网络不断优化模型性能,从而提升效率和准确率。
基于智能模糊测试的漏洞挖掘技术
传统的模糊测试技术忽略了源码中丰富的语义信息,对程序状态空间的感知粒度较粗,无法进行细粒度测试。智能化的方法通过插桩技术 实现细粒度感知,并提取处于半覆盖状态条件分支作为突破对象。 —> 通过轻量级关键字识别方法,将分支的突破问题转化为优化问题,并通过机器学习算法在约减的空间中使用启发式搜索,实现快速穿透复杂条件分支。
基于动态插桩技术的漏洞自动化挖掘技术
插桩有两种类型:
源插桩 需要具备软件的源码
二进制插桩 将插桩代码注入到正在运行的进程中,这意味着插桩代码对注入的应用程序来说完全透明。这种技术可以和任何软件一起使用。
利用插桩技术获取已经编译好的可执行程序的指令序列(指令序列记录着程序的执行路径),利用递归神经网络等深度学习算法进行模型训练,学习漏洞代码的动态指令特征,开展数据流分析、污染分析、内存使用分析、程序行为分析和程序状态分析等。
人工智能的安全隐患
框架安全
市场上出现了一些开源的智能编程框架和商业人工智能编程框架,提供大量高度复用的算法和模块,其功能很多,便于开发者使用。但是这些框架或多或少存在一些安全隐患,容易收到攻击,如TensorFlow1.7.1之前版本的XLA编译器存在有堆溢出漏洞,Caffe框架的图像视觉库存在导致程序崩溃的漏洞。
算法安全
人工智能的核心是算法,没有优秀的算法无法解决问题,但是算法本身也存在可解释性问题。
数据安全
数据是开展训练的原材料,数据集质量直接影响着模型的性能。攻击者可以通过污染数据集进而实现攻击。还有一种是生成对抗样本,将恶意样本和正常样本进行融合变异,在保留自身恶意行为基础上绕开机器学习的深度检测,将自身标记为正常样本。