NAVEX:针对动态web应用的精确可扩展的漏洞利用生成工具

作者:{wh1t3p1g}@ArkTeam

原文作者:Abeer Alhuzali, Rigel Gjomemo, Birhanu Eshete,
and V.N. Venkatakrishnan, University of Illinois at Chicago

原文标题:NAVEX: Precise and Scalable Exploit Generation for Dynamic Web Applications

原文会议:the 27th USENIX Security Symposium

原文链接:https://www.usenix.org/conference/usenixsecurity18/presentation/alhuzali

现代的WEB应用程序多采用动态生成的方式来实现相应功能,这使得对于此类漏洞分析存在挑战性。本文提出采用动静态结合的方式,来自动识别漏洞并构建利用代码。针对提出的方法,作者实现了NAVEX,它是一种可以扩展的自动化漏洞分析和利用生成的工具。在作者的实验中,使用NAVEX对320w行PHP代码进行建库分析,发现并生成了204个漏洞利用。

  1. 问题的提出
    1. 发现可达的sink点

      在现代的Web应用中,从source点到sink点的代码执行路径通常跨越多个模块或多个文件,并且在代码执行路径上存在可能的净化函数(1.内置净化函数2.隐式净化函数3.自定义净化函数),对可能存在漏洞的source点进行相关安全处理,导致整个执行链路不可攻击。针对这个问题,作者提出使用约束求解器,来推断该链是否可被攻击。

    2. WEB的动态特性

      现代的Web应用,常通过动态生成表单或链接,静态的方式无法检测此类动态生成的source点。针对这个问题,作者使用了动态执行(爬虫)的方式来解决这个问题。

    3. 可扩展性

      由于现代Web应用的复杂性,构建漏洞利用代码需要分析客户端、服务器端以及数据库端。而且漏洞的类型也在不断增加,这就要求分析工具具备可扩展性来应对复杂多变的Web应用。

  2. 方法提出

    程序实现共包括两个部分a. 漏洞sink点识别b. 具体的攻击生成


    1. 漏洞sink点识别
      1. 攻击字典 {sink点,净化函数,遍历类型,攻击语句}
      2. 代码属性图构建

        在代码属性图上添加了净化标签和数据库限制标签,用于后面做约束求解器的条件

      3. 图遍历算法 {前向算法,后向算法}
      4. 漏洞利用字符串生成 得到约束求解器的另一个条件


  1. 具体的攻击生成
    1. 动态执行

      采用爬虫的方式,获取表单和链接,使用约束求解器自动化生成符合要求的表单内容提交。

    2. 导向图生成

      由动态执行步骤生成的有向图G=<N,E>,N代表HTTP请求集合,E代表ni->nj的有向边,表示从当前ni这个http请求通过表单或链接的方式定向到nj。

    3. 最终的漏洞利用生成

      利用导向图的搜索算法,找到最终的url,并将参数部分填入相关漏洞Payload


3. 讨论

作者在代码属性图的基础上,添加了净化标签和数据库标签,并且使用了净化约束,数据库查询约束和攻击字串的约束作为约束条件,用Z3约束求解器来判断该代码链是否可被攻击。但是注意到的是作者并没有明确处理基于类开发的CMS的漏洞检测,或许这个问题可以进一步发掘。其次关于微软开发的Z3约束求解器的作用,可以在后续的研究中应用这个方法来处理一些类似机器学习的分类效果。

发表评论

电子邮件地址不会被公开。 必填项已用*标注