AntiFuzzing:通过隐蔽获得安全性!

图片

为什么要花时间和精力在安全上? 为什么要安排一个安全开发生命周期(SDL)? 为什么要将模糊处理集成到开发过程中? 为什么要打扰诸如AFL,libfuzz等各种模糊器的知识呢? 毕竟,您可以“简单地”将对产品漏洞的搜索变成持续的折磨,并为研究人员和攻击者提供“甜蜜的”生活。 想知道该怎么做吗? 然后欢迎来到凯特!

免责声明: 本文应带有一定的幽默和讽刺意味!

近来,越来越多的作品专门用于“ AntiFuzzing”主题。 AntiFuzzing是一种降低Fuzzing有效性和使用Fuzzing搜索开发人员解决方案中的漏洞的操作。

本文将重点介绍模糊处理可以本地部署的用C \ C ++编写的二进制应用程序,并尝试查找与其中的内存损坏相关的漏洞。

如今,作为基于反馈的模糊方法的最醒目的,最著名的和著名的代表,有许多针对AFL模糊器的动作。

研究了此问题后,我们确定了可能的防模糊技术:

  • 模糊模糊器工作的结果是一些开发人员在没有意识到的情况下采用的最古怪的技术。它包括添加更多错误以使程序更安全...是的,不幸的是,我们无法回答问题是程序中已经存在多少个错误,这些错误有多危险,但是我们可以用一堆对攻击者无用的错误来稀释它们!
  • 仅在jailbreak_detect,root_detect的范围内才能检测到模糊过程。 该应用程序独立地确定(并且开发人员编写了一系列检查)它不仅在工作,而且是分阶段的,因此拒绝工作。 信息安全行业已经经历了这一百万次。 可以很容易地搜索该代码并将其从应用程序中排除,该技术的标题为“最无用和最简单”。
  • 减缓模糊的过程-在我们公司内部,我们称这些事情为“隐藏开销中的错误”。 即使是现在,某些软件不仅在模糊测试下仍然无法正常工作,因此,寻找其中的漏洞对于研究人员来说在心理上是一项艰巨的任务)
  • 盲区的创建是最有趣的方向,我们认为这将推动模糊测试的发展。 因此,在BlackHat 2018上展示的工作中,AFL引发了shared_mem中的冲突问题,AFL使用它来确定代码涵盖的部分。 即,创建了在其运行期间模糊器不会掉落的区域。

因此,AntiFuzzing具有明显的优点和缺点:

  • “-”也许是软件开发人员的思想之云,他们对信息安全和模糊过程的某些方面不熟悉。
  • “ +”模糊器发展,将来将开始克服已实施的AntiFuzzing机制,并且如果已实施AntiFuzzing机制,则将首先提供更大的覆盖范围; 其次,在软件中是否有可以模拟防模糊功能的元素。

为什么要使用这种方法来确保安全性愚蠢和有害? 高质量AntiFuzzing方法的开发及其在实际软件中的应用在复杂性方面可与算法本身的开发相媲美,以通过基于反馈的Fuzzing来增加代码覆盖率。 困难在于,除了将相抑制结构插入正确的位置之外,还必须确保它们没有清晰的模式可以区分,然后简单地排除在外。 AntiFuzzing不会提高应用程序本身的安全性……很好的是,尽管AntiFuzzing的研究仅在学术环境中进行。 同时,恰恰相反,有些公司则专注于简化对错误的搜索。 例如,Mozilla为此blog.mozilla.org/security/2018/07/19/introducing-the-asan-nightly-project提供了一种特殊的浏览器版本

图片

对AntiFuzzing的兴趣激增主要是由DARPA 2016年网络挑战赛引起的。这场竞赛是在没有人工帮助的情况下搜索漏洞并加以修补的计算机。 您可能已经猜到,大多数搜索系统都是基于AFL模糊器,并且竞争中的所有目标都是二进制应用程序。 所有这些都可以针对自动系统,而不是人员。

本文基于您可以学习的作品:

  1. “逃避模糊评估模糊技术并用AntiFuzzing愚弄它们” ,计算机系统和网络硕士学位
    2016年
  2. Chaff Bugs:通过制作软件Buggier来阻止攻击者 ,2018年
  3. “ AFL的盲点以及如何抵抗任意ELF二进制文件的AFL模糊测试” ,BlackHat USA,2018年
  4. 我们还建议您阅读NCC小组从2014年开始的文章“反模糊介绍:深度援助中的防御” (AFL的第一个版本刚刚出现,尚未赢得社区的热烈欢迎,距离DARPA CGC决赛还有两年了)。

PS:在研究软件并为客户实施SDL时,我们经常使用AFL(+ libfuzz)及其修改。 因此,在以下文章之一中,我们将更多地讨论使用AFL进行模糊测试,以及为什么越来越多的人在测试程序中使用它,以及这如何提高开发安全性。

Source: https://habr.com/ru/post/zh-CN428067/


All Articles