G.O.S.S.I.P 学术论文推荐 2021-04-12

发布于 2021-05-12 10:59 ,所属分类:论文学习资料大全

今天推荐的论文是发表在WWW 2021的文章“On the Feasibility of Automated Built-in Function Modeling for PHP Symbolic Execution”。

近年来,符号执行被广泛的应用于Web应用程序漏洞检测上。在符号执行过程中,常见的挑战是对特定语言的内置函数处理。如,PHP语言是Web应用程序常用的后端语言,它有大量的内置函数,然而,常用的求解器无法对内置函数进行解释。研究人员对该问题的解决方案有两种:一是依据定义和描述,手工建模;二是具体地执行带有选择输入或运行时值的函数。前者对内置函数的建模通常是不全面的,而后者则是不精确的。


为了解决这一问题,作者对“为PHP符号执行中内置函数的自动建模”进行了探索。如下图所示,作者提出了一种跨语言程序合成的方法来自动化完成对内置函数的建模。方法的核心在于将PHP符号执行的结果(如,约束)与内置函数结合在一起,转换为一个C符号执行的输入程序。

下面我们来具体看一下方法的过程,如上图所示。

  • PHP符号执行。作者构造了PHP的抽象语法树(AST),在AST上生成控制流图(CFG),在控制流图上进行符号执行。通过符号执行为后面的输入创建符号变量,通过遍历CFG进行约束的收集。

  • 跨语言整合。上一步收集了PHP的约束,在此步,作者将PHP约束转换为C约束。该过程作者解决了两个挑战,第一个是类型的推断,由于PHP是动态类型编程语言,而C是静态类型编程语言,因此需要对PHP的约束进行类型判断,作者基于上下文设计了算法解决了这一问题;第二个是语法的映射,由于PHPC是两种完全不同的语言,它们定义了不同的操作符和内置函数,因此作者设计了轻量级语法映射,将PHP约束中的PHP运算符映射到了PHP解释器中的C实现中。

  • 合成C程序。作者利用上一步的方法等价地表示了PHP约束的语义,并在PHP内置函数的C实现上合成了C程序。

  • 合成程序的符号执行。最后,作者对合成的C程序进行符号执行。


作者将该方法应用到XSYM上,并与手工建模的方法进行了对比。作者成功对287个内置函数进行了建模。该方法可以发现数据集中141个漏洞。相较于手工的方法,其发现的漏洞更多,且误报率更低。

论文PDF:

https://www-users.cs.umn.edu/~kjlu/papers/xsym.pdf

相关资源