天天看点

自动化漏洞利用的发展——期刊读后记录综述概述漏洞利用的发展展望

自动化漏洞利用

  • 综述
  • 概述
  • 漏洞利用的发展
  • 展望

综述

这篇文章,是一篇关于系统漏洞利用的综述。自动化漏洞利用的发展是为了保障信息系统安全,显著提高软件安全分析的效率,为人工分析提高良好辅助。本文围绕自动化漏洞利用技术,对该技术进行概述,同时选取典型研究成果,重点对其发展现状进行分析探讨,最后对未来发展趋势进行展望。

概述

自动化漏洞利用,指在无安全分析人员干扰饿基础上,依靠程序自动化挖掘软件中隐藏的漏洞,并自动分析漏洞,生成可以获取计算机控制权限的利用数据或代码,最终利用该漏洞实现软件非预期的功能。

(用自己的话来说:就是通过自动化漏洞利用生产的利用代码目标是获取计算机信息系统的运行权限。)

自动化漏洞利用的过程主要包括两个阶段:漏洞挖掘、漏洞利用生成。

漏洞挖掘:对源代码或可执行的二进制程序进行分析,采用静态分析技术(分汇编技术、控制流图分析技术)和动态分析技术(模糊测试、符号执行、污点分析技术)结合的方式发现软件中的漏洞、确定漏洞在程序中的位置。

漏洞利用生成:漏洞利用生成是根据上一阶段获得的漏洞现场信息(内存上下文信息和寄存器信息等),对其加以分析,提取关键寄存器值,构造内存布局,并根据系统内存防护机制采取相应的绕过方法,最终生成能够利用挖掘出的软件漏洞获取目标系统控制权限的代码。

(简言之:漏洞挖掘:找漏洞;漏洞利用生成:分析漏洞,生成payload)

漏洞利用的发展

这里重点介绍了六个重大研究成果。

  1. APEG 方案

    背景:2008年,美国卡内基梅隆大学,提出的基于补丁比对的自动化漏洞利用方案。

    原理:通过补丁程序寻找到导致程序崩溃的位置,并且根据补丁程序中的崩溃过滤条件,为待测程序生成非预期输入,以此触发程序漏洞。

    (补丁程序必须要有过滤条件)

  2. AEG 方案

    背景:2011年,为了弥补上一方案对补丁程序依赖的弊端,提出基于源码的自动化漏洞利用方案。

    原理:将自动化漏洞利用转化为形式化的验证问题,使用带路径优先策略的前置条件符号执行技术收集路径约束并使用STP求解器进行求解,能够发现软件程序中的栈溢出漏洞和格式化字符串漏洞,可以生成绕过NX 栈不可执行保护的漏洞利用,对程序实现rtlibc方式的控制流劫持。

    (通过分析源代码,主要针对栈溢出等有限范围的漏洞)

  3. Mayhem方案

    背景:2012年,为了摆脱源代码限制,扩大安全分析的适用范围

    原理:以二进制程序作为分析对象,使用动态符号执行技术检测漏洞,利用基于可满足性模理论(SMT)的约束求解器求解同时满足路径可达条件和漏洞可利用条件的漏洞利用。

    (通过基于索引的内存模型,缓解了漏洞挖掘过程中的路径爆炸问题。不能有效处理复杂程序)

  4. PolyAEC方案

    背景:2013年,通过污点分析技术动态监控、获取程序中全部可能的控制流劫持点,通过构造不同的跳转指令链和对收集的路径约束进行求解,生成多样化的漏洞利用样本。

    原理:依赖程序中存在的指令信息,构造不同的跳转指令链和对收集的路径约束进行求解,动态生成漏洞利用

  5. FlowStitch方案

    背景:2015年,面向数据流分析的自动化漏洞分析。

    原理:在不改变程序控制流的前提下,针对目标二进制程序中的已知内存错误进行分析,对正常数据流中的关键变量内容进行篡改,生成的漏洞利用可以实现对目标主机的权限提升和信息泄露等功能。

    (要求,目标程序含有已知的内存错误,对正常数据流中的关键变量内容进行篡改)

  6. Revery方案

    背景:2018年,针对程序crash现场无法利用的问题,提出的

    原理:以异常对象的内存布局为导向,采用模糊测试技术来探索漏洞可利用的替代路径,并利用关键内存操作指令定位漏洞点,使用污点分析技术在替代路径中寻找可利用状态。确定拼接点,完成路径拼接后,通过符号执行技术求解路径约束、漏洞利用约束等条件,生成漏洞利用。

    (无法自动生成绕过ASLR内存地址随机保护机制的利用样本,无法自动构造内存布局)

展望

自动化攻防:自动化漏洞利用技术的出现和发展正满足了自动化攻防的迫切需求,自动挖掘软件或系统中的 0day 漏洞,自动生成漏洞利用代码,实施网络对抗,同时随着技术的成熟,自动化漏洞利用会结合自动生成补丁,对乙方软件和系统中的漏洞威胁进行修复,实现积极防御,增强信息系统的安全性。正是由于自动化漏洞利用技术的高度适用性,围绕该技术的研究在网络自动化攻防中具有广阔前景。

智能化发展:今后的软件安全分析研究中,一个可能的发展趋势是自动化漏洞利用会紧密结合机器学习等技术,探索漏洞挖掘与漏洞利用生成的新方式,尤其是在自动化漏洞利用中的漏洞挖掘阶段,构造路径覆盖率高或具有脆弱性导向的测试输入,能提高漏洞挖掘的效率和针对性,利用神经网络模型可以对海量待测程序进行分析、学习,并利用生成模型指导生成更高质量的测试输入样本,缓解盲目性、路径爆炸问题,结合梯度下降算法处理约束求解的复杂性问题。

继续阅读