近日,国家计算机网络应急技术处理协调中心上海分中心(SHCERT)了解到两款iOS平台的第三方解压库(SSZipArchive、ZipArchive)存在漏洞,解压时未对解压路径进行检查。在不安全的Wi-Fi环境中,攻击者通过劫持HTTP流量,将应用下载的zip包替换为包含恶意代码的zip包,从而利用该漏洞解压恶意zip包内的文件,覆盖应用文件夹内的内容,影响用户正常使用。对于使用了JSPatch或其他热更新技术的应用,利用该漏洞还能进一步导致代码执行。
01
漏洞详情
SSZipArchive库(https://github.com/ZipArchive/ZipArchive)中的[SSZipArchiveunzipFileAtPath:toDestination:overwrite:password:error:delegate:] 函数在解析zip文件获取完整文件路径时,未检查是否包含“../../../”等上层文件路径,代码如下所示:
ZipArchive库(https://code.google.com/archive/p/ziparchive)中的[ZipArchive UnzipFileTo:overWrite:] 函数在解析zip文件获取完整文件路径时,未检查是否包含“../../../”等上层文件路径,代码如下所示:
漏洞案例
02
以微博(8.4.3版本)为例,该应用使用了SSZipArchive解压库,每次打开微博应用时,会获取资源,请求下载zip包。
通过流量劫持,将http请求下载的zip包替换为包含恶意JS脚本的zip包,如下图所示:
微博应用会调用SSZipArchive库解压该zip包,随后可以发现该恶意JS脚本已被成功写入应用目录,并成功运行,如下图所示:
结合该案例,可以将漏洞利用条件总结如下:
1.应用使用了存在漏洞第三方解压库;
2.应用通过http协议下载zip包资源;
3.用户在不安全的Wi-Fi环境中被劫持流量;
应用如使用JSPatch或其他热更新技术,可进一步导致代码执行。
03
漏洞影响
该漏洞形态灵活,攻击场景与受影响应用业务场景相关,需要通过人工分析才能确认漏洞是否存在,疑似受影响应用列表可在ZipperDown漏洞网站(https://zipperdown.org/)查询,近16000万个应用疑似受该漏洞影响。
处置修复建议
04
建议应用开发者核查自身应用第三方解压库使用情况,推荐使用https协议下载资源,并在解压时对解压路径进行校验,严格限制“../../../”等上层文件路径的使用。
建议普通用户不要使用未加密的第三方公共Wi-Fi网络。
国家计算机网络应急技术处理协调中心上海分中心
2018年5月16日
感谢上海犇众信息技术有限公司提供
技术分析支持
领取专属 10元无门槛券
私享最新 技术干货