机器学习驱动的漏洞挖掘发现简介

最近在漏洞挖掘领域,机器学习和深度学习也有了新的进展。一个有代表性的例子是微软研究院的Learn Fuzz应用,通过学习大量输入样本来生成新的测试样本。例如通过学习PDF样本,生成新的PDF输入文件来测试PDF浏览器。此手段对比目前其他智能漏洞挖掘手段还没有明显的优势。

它面临的一个挑战是来自学习和漏洞发现本身的冲突。很多漏洞是由于输入样本没有符合标准的输入规格而造成的。如果用于学习的样本和机器学习算法过多拘泥于现有样本,那么机器学习将难以变异出完全异常的输入,从而错过发现漏洞的机会。所以单纯的样本学习需要考虑变异的需求。

虽然深度学习不能直接解决输入变异的问题,但机器学习能够生成结构化数据的输入。在传统的模糊测试过程中,很难生成大量高度结构化的输入数据。其原因是,大部分通过传统方法获得的输入数据不符合规定的结构或者语法。

SkyFire提出了一种数据驱动的模糊测试种子生成方法,用于解决传统模糊测试生成的大部分输出无法通过语义检查的问题。SkyFire从大量的输入数据中提取关于语法和语义规则的知识,并据此生成模糊测试的种子,再对生成的种子进行迭代选择与生成,最终生成大量测试输入。利用这种做法,SkyFire大大提升了获取结构化输入数据的效率,从而提供了深度挖掘漏洞的能力。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181218A1B12500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券