赞
踩
找到NLP在软件分析和漏洞挖掘的契合点之后,我们需要去调研这方面现有的研究情况。发现已经有人使用NLP来对二进制代码进行分析,主要有3种方向上使用NLP分析二进制代码,但大多数都是对二进制代码进行静态分析,以下就这三种分析方向进行介绍。
至今,已经有两篇文章使用NLP做代码相似性检测,分别是 1)Safe: Self-attentive function embeddings for binary similarity 发表在2019 Detection of Intrusions and Malware & Vulnerability Assessment 和2)Neural Machine Translation Inspired Binary Code Similarity Comparison beyond Function Pairs发表在2019 NDSS。
首先1)文章描述了二进制分析已经从安全人员进行代码审计转换为将二进制代码转换为多维向量表示,然后通过简单有效的几何运算来比较向量。这种方法通常使用手工提取从二进制代码导出特征,这样导致漏洞检测或恶意代码检测的成功与否都受到安全人员选择特征提取方向的影响。所以这篇文章创新的提出了基于自注意神经网络的函数嵌入架构,直接通过反汇编二进制程序得到汇编代码作为数据集,并通过tensorflow的skip-gram来得到预训练模型。对于之后的自注意网络使用了双向递归神经网络以嵌入后的指令向量作为输入,RNN计算一个总结向量考虑到指令本身及其上下文。最终嵌入是所有汇总向量的加权和,这种和的权值由两层全连接神经网络计算。选择自我注意网络最重要的原因就是可以避免RNN的长记忆问题,因为程序具有局部性原理,这篇文章也用实验说明了这个问题。
缺点:1)指令嵌入向量长度是固定的,缺少灵活性。2)只是静态分析难以适应多维度,不同层次的执行文件共同发起的APT攻击,例如:网络恶意入侵维度和内存漏洞攻击维度等,以及网络层和应用层等多层次,少变动的APT攻击。3)对于指令的理解简单的与语句中的单词进行对等,而操作符、操作数、操作数指向的地址空间、调用的库函数等,没
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。