文章信息
- 姜百合, 傅建明, 王应军, 王亚丽, 黄坚伟
- 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
2. 武汉大学 计算机学院,湖北 武汉 430072;
3. 62101部队信息中心,湖北 武汉 430072
2. School of Computer, Wuhan University, Wuhan 430072, Hubei, China;
3. Information Center, 62101 Unit, Wuhan 430072, Hubei, China
近年来我国云服务市场日益繁荣,大量计算、存储资源向云端迁移,由云服务器统一对外提供服务.基于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 |
基于上述云数据服务的业务逻辑,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 |
本节首先描述基于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的概率是
对于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.
网站名称 | 总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.
|