论文分享_06_09

Path Sensitive Static Analysis of Web Applications

贡献和创新点

         本文发表于2013年,于现在立场看略失创新。但在当时的情况下,作者明确了静态分析remote code execution(RCE)漏洞的难点:需要处理复杂的字符串操作和非字符串操作;需要整合来自不同php文件的请求。基于此开发了能够在一定程度上检测RCE的工具,误报率22.0%。本文的算法很有创新性,它并没有把字符串操作和非字符串操作聚在一起处理,而是先通过对非字符串操作的分析确定某条可执行的Path, 再继续分析该条Path上的字符串操作,如果字符串操作分析返Unsat,那么回到非字符串操作的分析寻找下一条可执行Path, 如此反复迭代。这样做有两个好处:降低单次分析的复杂度;分析是Path-sensitive,更加准确。

实验结果

       本文测试了10个web app,新报了8个漏洞。每个app的约束都不是很大,所以耗费的时间不多。不足在于没有和其他分析工具做横向对比,只是和自己的低级算法(只用non-string或者只用string)做对比,意义不大。

缺点

       文章时间比较早,用的字符串约束求解器还是HAMPI(现有的最牛应该是cvc4)。

启发

       文章借用了4个工具:LLVM、PHC(php转C代码工具)、HAMPI、STP。其实他最大的贡献就是把他们整合起来。用轮子也是写文章的新思路,不一定要造轮子。