武汉大学学报(理学版) 2018, Vol. 64 Issue (2): 115-120
0

文章信息

姜百合, 傅建明, 王应军, 王亚丽, 黄坚伟
JIANG Baihe, FU Jianming, WANG Yingjun, WANG Yali, HUANG Jianwei
基于Fuzzing技术的云数据泄露漏洞检测
Cloud Data Leak Vulnerability Detection Based on Fuzzing
武汉大学学报(理学版), 2018, 64(2): 115-120
Journal of Wuhan University(Natural Science Edition), 2018, 64(2): 115-120
http://dx.doi.org/10.14188/j.1671-8836.2018.02.003

文章历史

收稿日期:2017-08-01
基于Fuzzing技术的云数据泄露漏洞检测
姜百合1,2, 傅建明1,2, 王应军1,2, 王亚丽3, 黄坚伟1,2    
1. 武汉大学 空天信息安全与可信计算教育部重点实验室,湖北 武汉 430072;
2. 武汉大学 计算机学院,湖北 武汉 430072;
3. 62101部队信息中心,湖北 武汉 430072
摘要:目前Web应用上存在接口枚举、越权与敏感信息回传三种逻辑漏洞,在SaaS服务模式的背景下,攻击者利用这些漏洞可以非法获取云端数据,给厂商和用户造成损失.主流的检测方案未实现自动化,依赖测试者经验的渗透测试,难以全面覆盖复杂的Web应用业务逻辑.本文分析云数据服务Web应用的业务逻辑,建立抽象三种逻辑漏洞的威胁模型,设计漏洞Fuzzing检测算法和系统框架,并实现了原型系统.实验结果表明,本文方案可检测造成云数据泄露的三种逻辑漏洞,与人工经验相结合,实现自动化的渗透测试.测试真实Web应用,发现了未被修补的三种逻辑漏洞,并已经得到厂商确认,提升了漏洞挖掘的覆盖度.
关键词Web应用安全     信息泄露     Fuzzing测试     业务逻辑漏洞    
Cloud Data Leak Vulnerability Detection Based on Fuzzing
JIANG Baihe1,2, FU Jianming1,2, WANG Yingjun1,2, WANG Yali3, HUANG Jianwei1,2    
1. Key Laboratory of Aerospace Information Security and Trusted Computing, Ministry of Education, Wuhan University, Wuhan 430072, Hubei, China;
2. School of Computer, Wuhan University, Wuhan 430072, Hubei, China;
3. Information Center, 62101 Unit, Wuhan 430072, Hubei, China
Abstract: The business logic vulnerabilities such as interface enumeration, unauthorized access and sensitive information postback widely exist in the present web application, which can be exploited to leak sensitive cloud data under the SaaS service mode, bringing the economic loss to vendors and users. The penetration test, the most popular solution, cannot be applied automatically, for its performance is based on the test experts' experience and not perfect enough under the complex web application architecture. In this situation, in this paper we explored how to automatically detect the vulnerabilities which cause the cloud data leak, based on fuzzing. We analyzed and modeled the business logic of cloud data service web applications, provided a threat model of three representative business logic vulnerabilities, designed a vulnerability detection system, and implemented a prototype system. The experimental results show that the solution could detect potential vulnerabilities, and assist security experts to improve performance on coverage in the penetration test.
Key words: Web application security     information leak     Fuzzing test     business logic vulnerabilities    
0 引言

近年来我国云服务市场日益繁荣,大量计算、存储资源向云端迁移,由云服务器统一对外提供服务.基于SaaS模式,Web应用业务的部署更加可靠、灵活与经济.其中一类Web应用依赖云存储技术,向用户提供图片、音乐等媒体的在线点播与分享等数据服务.在用户请求获取数据服务时,终端Web应用与用户交互,云端Web应用服务器处理、响应用户的服务请求.在此过程中,Web应用作为用户接口,面临多种安全威胁,例如Web应用系统中存在的漏洞可能被攻击者利用[1].业务逻辑漏洞是其中常见的一类漏洞,从广义上讲,逻辑漏洞是指由设计不当产生,使得攻击者无需进行破坏性操作,利用合法执行流程,绕过保护机制,实现恶意行为的一类漏洞,如CVE-2016-4322(http://cve.scap.org.cn/CVE-2016-4322.html),CVE-2015-462(http://cve.scap.org.cn/CVE-2015-4626.html)等.国家信息安全漏洞共享平台(http://www.cnvd.org.cn/flaw/list.htm?flag=true)已经收录了逻辑漏洞2 700条;2017年OWASP项目[2]列举的十大Web应用安全风险中的认证失效、访问控制失效、敏感信息泄露与API接口泄露,都可由业务逻辑漏洞引发.目前,检测业务逻辑漏洞,常用依赖测试者经验的渗透测试,安全测试人员在渗透测试系统中尝试发现、利用逻辑漏洞.当Web应用规模增加,业务庞杂时,基于人工的测试覆盖率不高.检测逻辑漏洞尚没有通用方法[3].

在Web应用漏洞检测方面,NOTAMPER[4]使用黑盒测试方法,在客户端与服务器端交互时,在服务器校验用户输入关键字段过程中,检测存在的漏洞.WAPTEC[5]基于白盒测试审计服务器端源代码,检测篡改参数绕过服务器端认证的漏洞,但仅适用于基于LAMP的Web应用.ViewPoints[6]在服务器端和客户端加入冗余输入认证,通过发现两端用户数据不一致的方法,检测用户输入认证绕过漏洞,不足之处是该方法基于动态黑盒测试,代码覆盖率受到限制.PAPAS[7]使用一种启发式的黑盒测试方法,自动化检测HTTP请求参数的伪造篡改漏洞;LogicScope[8]基于有限状态机FSM对交互过程与漏洞利用过程建模,检测业务逻辑漏洞.但是,不能检测基于AJAX的Web应用,当业务逻辑变得复杂时也不能很好地检测.

Fuzzing是软件工程常用的测试技术,在安全领域多用于测试网络协议的安全性[9~11],其原理为构造随机测试用例作为程序输入,观察是否会引发程序内部错误.其优点是应用简捷,不需要具备系统的先验知识,通用性好.兼具通用性和针对性是检测算法设计的关键[12].针对业务逻辑漏洞中造成云数据泄露的三种具体类型:接口枚举、越权漏洞与敏感信息回传,基于Fuzzing技术,本文对检测方案进行了研究.

本文贡献如下:

1) 分析主流提供云图片、音乐等云数据服务的Web应用业务架构,抽象出基本业务流程,并描述三种逻辑漏洞的威胁模型,为自动化测试方案的设计奠定基础.

2) 设计并实现基于Fuzzing技术的自动化检测系统,系统由URL采集模块、测试用例生成模块、测试监控模块与漏洞检测模块组成.实现三种逻辑漏洞的自动化检测,生成的测试报告可以辅助测试者,与渗透测试相结合,降低漏洞检测的漏报率.

3) 实现原型系统,检测开源渗透测试目标Web应用WackoPicko与两个真实的云数据Web应用.测试WackoPicko的漏报率为零,测试真实云数据Web应用时发现了未被修补的三种逻辑漏洞.

1 云数据泄露

本节首先描述云数据服务网站的抽象业务流程,然后叙述接口枚举、越权漏洞与敏感信息回传的基本原理,最后描述云端数据泄露的威胁模型.

1.1 云数据Web应用的业务流程

使用Fuzzing技术检测逻辑漏洞的难点在于:其一, 逻辑漏洞机理各异,存在位置随机,难以建立通用的检测模型; 其二, 逻辑漏洞的存在不会引起Web应用功能的缺失与异常,相对隐匿,难以检测完全.而提供音频、视频点播等服务的Web应用作为用户与云端交互的接口,具有相似的业务逻辑.只针对某一类环境的逻辑漏洞,使得应用Fuzzing技术构建异常请求序列, 触发检测逻辑漏洞变得可行.

在云环境中的Web应用基于B/S架构,与传统Web应用相比,其云服务器为部署在云上的虚拟机实例,如图 1所示,Web应用的业务逻辑部署在Web服务器、应用服务器以及数据服务器之上.用户在浏览器发起HTTP请求后,Web服务器将处理此次请求,将包含JSP、ASP等动态内容的页面转交应用服务器处理,而数据服务器则对网站的数据资源进行统一的维护管理,最终为用户提供所需的数据资源.对于上层业务逻辑,根据用户对数据资源和服务资源的访问权限,将用户分组管理,一般以HTTP协议的状态信息中的Cookie作为用户身份凭据,实现对云端资源的访问控制.以云音乐Web应用为例,对于歌曲X,U1组用户可以在线收听和下载,U2组用户仅能在线收听却不能下载,而U3组用户既不能在线收听也不能够下载.

图 1 云数据服务的业务流程 Figure 1 Business process of cloud data service
1.2 云数据泄露的威胁模型

基于上述云数据服务的业务逻辑,Web应用实现对分组用户的资源访问控制,但恶意用户可利用逻辑漏洞使自身行为与资源访问策略不一致,获取未授权的云端资源,泄露云端数据.

用户请求资源服务时访问的URL有如下结构:

cdatahttp://host[:port][abs_path][?A=x&B=y&…]

其中http表示通过HTTP协议来定位网络资源位置,host为访问网站的主机域名或IP地址,port为服务的端口号,abs_path为资源的统一资源定位符),之后为若干此次请求参数与数值对.下面以http://192.168.1.1/ID=x的URL为例,具体描述三种逻辑漏洞的攻击流程.

1) 接口枚举漏洞

接口枚举漏洞使得攻击者分析请求URL中参数数值的规律,推知其他服务接口,篡改请求参数获得未授权服务.如图 2所示,假设U1中用户仅能访问资源A和B,不能访问资源C.但U1组中恶意用户发现资源A参数ID为111,而资源B为222,推测得到请求资源C时的参数ID为333.构造请求URL,获得对未授权的资源C的访问,造成资源C的泄露.

图 2 接口枚举漏洞 Figure 2 Interface enumeration vulnerability

2) 越权漏洞

越权漏洞使得恶意用户利用身份凭据的认证不充分,访问未授权服务.如图 3所示,假设U2组用户可以访问资源C,而U1组用户不具有此权限,由于Web应用没有根据用户身份凭据(例如请求状态信息Cookie)认证请求者的身份,U1组用户可用自己的身份凭据非法访问资源C.

图 3 越权漏洞 Figure 3 Unauthorized access vulnerability

3) 敏感信息回传

敏感信息回传是指敏感信息在HTTP请求响应的Response中泄露给用户.如图 4所示,假设U2组用户对资源C可在线访问,但不能下载.恶意用户请求资源C时, 如响应Response中含有资源C的直接URL地址,则可通过下载URL,造成资源C的泄露.本文主要关注敏感信息为资源的直接URL的情况.

图 4 敏感信息回传 Figure 4 Sensitive information postback
2 本文的检测系统

本节首先描述基于Fuzzing技术的云数据泄露检测系统的整体架构,再介绍关键模块的算法设计.

2.1 系统架构

系统的整体架构如图 5所示,其输入为待测试Web应用的根URL;其输出为漏洞检测结果与相关信息,可辅助Web应用管理者发现并修补潜在漏洞.测试系统由URL采集模块和模糊测试器Fuzzer两部分组成.

图 5 基于Fuzzing的检测系统架构图 Figure 5 Framework of fuzzing detection system

URL采集模块从Web应用收集与云资源相关的请求URL、请求与响应状态信息.使用爬虫从目标待测网站爬取URL超链接,而对于按钮点击、表单提交、用户登陆等操作,则基于Web自动化测试框架Selenium,爬取深度为3,完成相应处理.

模糊测试器Fuzzer由测试用例生成模块、测试监控模块与漏洞检测模块组成.测试用例生成模块是原型测试系统的核心,变异原始HTTP请求URL中的参数数值与请求状态Cookie,生成触发潜在业务逻辑漏洞的测试用例.测试监控模块获取Web应用对测试用例请求的响应状态,为漏洞检测提供依据.漏洞检测模块综合原始请求URL及其状态信息、测试生成用例与Web应用响应结果,判断是否存在潜在的逻辑漏洞.

2.2 算法设计

本节描述原型检测系统关键模块的算法实现,包括URL采集模块、测试用例生成模块与漏洞检测模块.

1) URL采集模块

云资源Web应用业务体系庞大,资源海量,所以存在数量可观的资源URL,为降低检测开销,对采集的URL进行预处理.通过模式匹配去除没有响应信息和结构近似的URL,筛选出与请求资源相关URL最小集合,作为测试用例生成模块的输入.算法1描述了URL去重与模式匹配的具体过程.

算法1 URL去重与模式匹配算法
输入:URL集合url_list
输出:待Fuzzing测试的URL集合f_list
1:f_list = list()
2: forurl in url_list:
3:  if not url has Response:
4:   url_list.remove(url)
5: #通过请求参数筛选
6:   url_tmp = url.replace(param_value, “*”)
7:    if url has_param and url_tmp not in f_list:
8:     f_list.append(url)
9: #通过请求路径筛选
10: #如果请求路径中存在数字
11:  if url re.match(/\d+/):
      url_tmp = url.replace(request_path, “*”)
12:    ifurl_tmp not in f_list:
13:     f_append(url)

算法第10行,判断请求路径中是否存在数字的原因是,有时资源ID会出现在请求URL的路径中.

2) 测试用例生成模块

生成触发漏洞的测试用例是Fuzzing测试的核心,本文采用基于变异的测试用例生成方法.

针对接口枚举与越权漏洞,生成两种测试用例,第一种基于请求URL变异,随机化请求路径与参数的数值;第二种基于状态信息Cookie的变异,将请求时的Cookie替换URL集合中其他的Cookie,生成不同的测试用例.

3) 漏洞检测模块

漏洞检测模块的算法逻辑如图 6所示,输出结果包括潜在逻辑漏洞的类别、触发漏洞的变异测试用例、原始的URL请求及响应状态,便于Web应用管理者发现并修补潜在漏洞.

图 6 漏洞检测逻辑 Figure 6 Vulnerability detection algorithm

对于URL变异生成的测试用例,如果Web应用响应状态正常,对测试用例URL的访问成功,则存在接口枚举漏洞.

对于Cookie变异生成的测试用例,如果Web应用对替换Cookie前后的响应内容相同,则存在越权漏洞.

若Web应用对原始URL的响应数据中存在云数据资源的直接URL,则存在敏感信息回传漏洞.

本文设计检测逻辑基于如下考虑:当URL参数数值改变时,如果变异参数与资源服务类型相关,那么对数值变异篡改后可能对应不存在的服务,此时的URL是非法的;如果参数和资源ID相关,资源ID数值被Hash保护,熵值较大,N次的数值变异碰撞(即对每个原始URL生成N个测试用例)并不会大量命中正常的资源ID.例如,Xiami网站共有资源URL共有27 356个,ID为10位十进制Hash值,每次命中有效资源ID的概率是≈2.73×10-6.要命中概率大于0.5,需满足(1-f)N < 0.5,N要大于253 380次.显然,当生成用例数目N在合理范围内,测试用例不容易命中.因此,对于其他的关键字段,若变异测试用例被正常响应,则可能存在接口枚举漏洞.

对于Cookie变异测试用例,由于Cookie作为用户身份凭据与资源服务权限对应,当Cookie发生变化后,Web应用的响应内容很大程度上会不同(如替换后响应要求登陆页面等).如果基于Cookie随机生成的用例正常响应,则可能存在异常.

3 系统测试与评估

本节应用漏洞检测系统与开源的渗透对象Web应用WackoPicko[13]和两个真实Web应用,展示并分析实验结果,以评估原型系统的检测性能与开销.

3.1 实验部署

测试系统与基于WackoPicko的图片资源Web应用部署运行在配置为3.2 GHz Intel CPU,16 GB RAM的主机上.应用检测系统于WackoPicko、Xiami云音乐与5sing云音乐进行实验.

3.2 结果分析与评估

表 1中测试请求数反映变异生成的测试用例总数,命中次数为检测出存在逻辑漏洞的URL请求数,漏洞发现数是进一步分析命中次数发现的逻辑漏洞数.Fuzzing测试三个应用的总时间开销为1 426 s,筛选后总URL数为551,对筛选后URL平均处理时间为2.59 s.

表1 检测系统测试结果 Table 1 Results of detection system
网站名称 总URL数 筛选后URL数 测试请求数 命中次数 误报次数 漏洞发现数 时间开销/s
WackoPicko 58 13 53 8 0 3 22
Xiami 443 273 2 872 22 28 2 432
5sing 455 265 3 846 92 19 2 972

表 1可看出,本测试系统在Xiami云音乐与5sing云音乐应用上存在误报.我们认为存在误报的原因是:1)基于URL变异的测试用例会命中具备访问权限的URL,2)变异了无关的请求参数.命中次数多于最终漏洞发现数目是因为一个漏洞往往与多个资源相关,会引起多次命中.例如,对Xiami的50次测试中22次命中是由两个漏洞引起的,5sing的111次测试中有92次命中是由两个漏洞引起的.

在漏报方面,WackoPicko是开源待测试目标Web应用,逻辑漏洞可以人工配置,且资源较少,人工点击所有的URL观察是否存在云数据泄露,没有发现未检测到的三类逻辑漏洞,所以系统对于WackoPiko的漏报率为零.显然对于真实Web应用不可能通过人工分析找到所有的三种逻辑漏洞,进而确定漏报率,但Xiami和5sing时刻处在被维护修补状态中,而原型检测系统仍然发现了未被修补的漏洞.综上,系统可以提升漏洞检测的覆盖度.

4 修补方案

本节针对引起云数据泄露的三种逻辑漏洞给出可能的修补方案.

在测试中发现,三种逻辑漏洞造成云数据泄露的原因是:1)在请求与响应的交互过程中,对服务接口(例如资源的URL)未作安全防护;2)对用于身份凭据Cookie的认证不恰当.提出修补方案如下:

1) Hash散列与加密

对于请求参数中资源相关的ID等参数的数值进行Hash散列处理,增加熵值缓解因攻击者猜测泄露;而对于过程中传递的资源URL等敏感信息进行加密,避免明文传输被终端攻击者获取.

2) 基于Cookie的随机化参数

客户端发起请求的URL中增加参数附带由请求时间戳、请求参数与用户Cookie共同生成的Hash值.在服务器端基于时间戳、请求参数与用户Cookie重新计算Hash值,当验证服务器端计算的Hash值等于请求附带Hash值时,判断请求合法.

5 结论

本文设计了基于Fuzzing的逻辑漏洞检测算法与系统,并实现漏洞检测原型系统.在真实Web应用中,原型检测系统发现了未被修补的漏洞,并已经得到厂商确认.

本文检测方法还存在某些局限性,需要改进.一方面,目前的检测仅针对本文的威胁模型,后续考虑将更多的逻辑漏洞纳入到检测逻辑中.另一方面为更好的辅助Web应用测试者的渗透测试,要进一步强化原型系统的用户交互接口.我们下一步将在通用性与扩展性两方面对原型系统进行改进.

参考文献
[1]
冯登国, 张敏, 张妍, 等. 云计算安全研究[J]. 软件学报, 2011, 22(1): 71-83.
FENG D G, ZHANG M, ZHANG Y, et al. Study on cloud computing security[J]. Journal of Software, 2011, 22(1): 71-83. DOI:10.3724/SP.J.1001.2011.03958(Ch)
[2]
OWAS P. Category: OWASP Top Ten Project[EB/OL]. [2017-11-19]. https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project.
[3]
DEEPA G, THILAGAM P S. Securing web applications from injection and logic vulnerabilities: Approaches and challenges[J]. Information and Software Technology, 2016, 74: 160-180. DOI:10.1016/j.infsof.2016.02.005
[4]
BISHT P, HINRICHS T, SKRUPSKY N, et al. NoTamper: Automatic blackbox detection of parameter tampering opportunities in web applications[C]//Proceedings of the 17th ACM Conference on Computer and Communications Security. New York: ACM, 2010: 607-618. DOI: 10.1145/1866307.1866375.
[5]
BISHT P, HINRICHS T, SKRUPSKY N, et al. WAPTEC: White box analysis of Web applications for parameter tampering exploit construction[C]//Proceedings of the 18th ACM Conference on Computer and Communications Security. New York: ACM, 2011: 575-586. DOI: 10.1145/2046707.2046774.
[6]
ALKHALAF M, CHOUDHARY S R, FAZZINI M, et al. Viewpoints: Differential string analysis for discovering client-and server-side input validation inconsistencies[C]//Proceedings of the 2012 International Symposium on Software Testing and Analysis. New York: ACM, 2012: 56-66. DOI: 10.1145/2338965.2336760.
[7]
BALDUZZI M, GIMENEZ C T, BALZAROTTI D, et al. Automated discovery of parameter pollution vulnerabilities in Web applications[DB/OL]. [2017-03-21]. http://www.iseclab.net/papers/balduzzi-ndssll.pdf.
[8]
LI X, XUE Y. LogicScope: Automatic discovery of logic vulnerabilities within web applications[C]//Proceedings of the 8th ACM SIGSAC Symposium on Information, Computer and Communications Security. New York: ACM, 2013: 481-486. DOI:10.1145/24843 13.2484375.
[9]
TSANKOV P, DASHTI M T, BASIN D. SECFUZZ: Fuzz-testing security protocols[C]//Automation of Software Test (AST), 2012 7th International Workshop on IEEE. Piscataway: IEEE Press, 2012: 1-7. DOI:10.1109/IWAST.2012.6228985.
[10]
HAN X, WEN Q, ZHANG Z. A mutation-based fuzz testing approach for network protocol vulnerability detection[C]//Computer Science and Network Technology (ICCSNT), 2012 2nd International Conference on IEEE. New York: IEEE, 2012: 1018-1022. DOI:10.1109/ICCSNT.2012.6526099.
[11]
ZHAO J, CHEN S, LIANG S, et al. RFSM-fuzzing a smart fuzzing algorithm based on regression FSM[C]//P2P, Parallel, Grid, Cloud and Internet Computing (3PGCIC), 2013 Eighth International Conference on IEEE. New York: IEEE, 2013: 380-386. DOI: 10.1109/3PGCIC.2013.65.
[12]
RATHAUS N, EVRON G. Open Source Fuzzing Tools[M]. Massachusetts: Syngress, 2011: 101-103.
[13]
DOUPÊ A, COVA M, VIGNA G. Why Johnny can't pentest: An analysis of black-box web vulnerability scanners[C]//International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment. Berlin: Springer-Verlag, 2010: 111-131. DOI: 10.1007/978-3-642-14215-4_7.