漏洞预测

最近看了一些有关漏洞预测的文章,有些许思考,也顺便记录一下吧。

机器学习与漏洞检测

前期之所以进展缓慢,是因为一直试图提取出漏洞的特征,采用传统的机器学习方法进行检测。但由于漏洞类型太多,成因各不相同,想提取普适的特征很困难。当然,还是自己对采用何种方式表征程序和漏洞,以及当前漏洞检测存在什么问题没有很好的想法。对于漏洞检测问题,在学界目前主流的方法应该还是静态分析、动态分析、符号执行等程序分析方法。可能主要的研究点还是在于由于特定程序机制而产生的漏洞的检测,如由于Android的JNI机制造成的问题,或者由于第三方组件的安全性而造成的问题。但由于自己程序分析基础太差,对这个问题一直都没有很好的认识。而对于工业界,感觉漏洞检测的方法还是基于规则或特定漏洞的检测模式。事先分析特定漏洞产生的原因,制定相应的检查规则。这种方法需要专业知识,同时也需要较为全面的审计点。

在漏洞检测中也有采用机器学习技术的。Fabian Yamaguchi等人进行的一系列“基于模式的漏洞推断”研究,将漏洞检测看作搜索问题,以代码语义相似性【1】(API symbol)、结构相似性【2】(API)等特点,查找较相似的函数,确定可能产生漏洞的函数,有效地减少代码审计的范围。其提出的code property graphs【4】,综合了抽象语法树、数据流、控制流等程序特性,可以很好地表征程序。在此方法中,其将漏洞检测看作图查询问题,以自动的方法构造搜索模式,进行污点型漏洞检测【5】,并发现了数个0day漏洞,证明其方法地有效性。

机器学习与漏洞预测

漏洞预测和漏洞检测要解决的问题不同。漏洞检测一般是基于漏洞的机理,要说明是否存在某种特定的漏洞;而目前的漏洞预测,一般不涉及漏洞产生原因,只是从统计角度,发现与漏洞出现相关的一些因素,其结果只能说明存在某种漏洞的可能性。虽然这是由于机器学习的统计特性约束的,但我个人觉得,这也使得漏洞预测方法在漏洞的可解释性方面存在不足。

虽然漏洞预测不能很好地说明漏洞产生的原因,但利用该方法其实可以很好地缩小代码审计的范围,减少开发人员漏洞发现的时间。其实漏洞预测起源于缺陷预测。总结自己阅读的文献,漏洞预测的相关研究可以分为以下方向:

(1)基于软件度量。该方法的基本假设是越复杂的程序存在漏洞的可能性越大。所以研究人员以程序复杂度、耦合性等传统的软件度量为特征,进行漏洞预测。该方向的研究,由Stephan Neuhaus【6】最初发现漏洞与程序中import之间的关系、传统软件度量,发展到最新发现软件漏洞与nano-pattern之间也存在相关性【7】,即某些nano-pattern较为频繁地出现在存在漏洞的function中,而有些nano-pattern则出现在正常的function中,故可以此关系进行漏洞预测

(2)基于文本挖掘方法。该方法将程序源文件看作普通文本,提取其语义、语法特征。该方向的发展也由最初的提取代码token语义【8】、用n-gram方法考虑几个相邻的token的语义【9】发展到采用RNN等深度学习方法学习程序的上下文语义【10】。

虽然漏洞预测不关注漏洞产生的原因,但在当前人工智能盛行的背景下,采用深度学习方法进行漏洞预测,缩小代码审计范围也是很有意思的。

参考文献:

【1】Vulnerability extrapolation Assisted discovery of vulnerabilities using machine learning

【2】generalized vulnerability extrapolation using abstract syntax trees.

【3】Chucky Exposing Missing Checks in Source Code forvulnerability discovery

【4】Modeling and discovering vulnerabilities with code property graphs

【5】Automatic inference of search patterns for taint-style vulnerabilities

【6】Predicting Vulnerable Software Components

【7】Towards a software vulnerability prediction model using traceable code patterns and software metrics

【8】Predicting Vulnerable Components Software Metrics vs Text Mining

【9】Predicting Vulnerable Software Components through N-Gram Analysis and Statistical Feature Selection

【10】Automatic feature learning for vulnerability prediction

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值