ZipperDown漏洞修复

ZipperDown漏洞是由盘古实验室发现的,该漏洞是盘古团队针对不一样客户的iOS应用安全审计的过程当中发现的,大约有10%的iOS应用会受到此漏洞的影响。相似解压等通用功能的漏洞,一个平台爆出了漏洞,其余平台每每也受到牵连,不久前Android平台上的unZip解压文件漏洞,和这个漏洞几乎是彻底同样,只是平台和第三方解压库不一样而已。git

危害

利用此漏洞能够作不少事情,例如实现目录遍历攻击和App沙盒目录中任意文件覆盖风险,影响究竟有多大,取决于具体App。例如,若是集成了热修复,且未作相应的安全处理,经过覆盖热修复的JS代码,能够在非越狱的手机上达到修改执行源码的目的。github

原理

ZipperDown漏洞并不是iOS平台自身问题,而是与Zip文件解压有关。安全

  • iOS平台没有提供官方解压类库,因此开发中每每引用第三方库来实现解压功能;
  • 因为现有的iOS App基本上采用SSZipArchive或Ziparchive来实现解压,所以漏洞是来自使用第三方Zip库解压Zip文件的过程当中没有对Zip内文件名作校验致使的;
  • 例如 SSZipArchive解压时会吧文件名直接拼接到目标路径后面,若是文件名中含有“../”则能够实现目录的上一级跳转,从而实现应用内任意目录的跳转,进一步能够实现文件覆盖;
  • 若是把App的热修复hotpatch文件覆盖替换了,能够达到执行黑客指定指令,从而按照黑客的意图实现任意应用内攻击。

攻击条件

  1. 使用了SSZipArchive或Ziparchive第三方解压库;
  2. Zip包在解压时没有作完整性校验;
  3. 文件名中包含../等路径特殊符号,解压时没有对文件名过滤处理;
  4. 使用了JSPatch或其余热修复库,且本地脚本没有加密等安全处理;
  5. 链接不可靠的WIFI热点或者网络被人劫持。

注:若App没有使用热修复功能,而且在沙盒文件中没有保存重要的配置/信息,则可忽略此漏洞。网络

修复

iOS端修复很简单,下载文件成功后,解压文件时,不用网络传输过来的文件名称,或者将文件名中的./等特殊符号所有都过滤替换掉就能够了。jsp

Demo演示

  1. 假设咱们App使用了热修复,热修复文件放在沙盒的library/Caches/jspatch/hot.js(hot.js内容为 jjjjjjjjjj);
  2. 咱们须要从这个连接(https://raw.githubusercontent.com/muzipiao/CommonResource/master/zip/hot.zip)下载一个包含图片的ZIP文件,下载解压的目标路径为library/Caches/zip/default;
  3. 黑客经过替换压缩包,将压缩包中内容替换为假的hot.js(hot.js内容为 hack hack hack),并将压缩重命名为**../jspatch**;
  4. 咱们下载解压后发现,JS热修复文件(library/Caches/jspatch/hot.js)内容变成了hack hack hack
  5. 若是使用的是Http,能够经过charles代理抓包替换来达到模拟的目的,这里咱们经过手动修改压缩包名称来模拟。

攻击示意图

代码示例

//----------------------解压缩示例------------------------
//网络资源zip地址
NSString *zipFileURLPath = [filePath path];
//library/Caches/没有zip文件夹则建立zip文件夹
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *zipPath = [cachePath stringByAppendingPathComponent:@"zip"];
//咱们直接存到文件夹下,若fileName含有../字符串,经过拼接组合则能够打开任意目录文件
NSString *desPath = [NSString stringWithFormat:@"%@/%@",zipPath,fileName];
//解压新的压缩文件,可能会覆盖掉原有文件
BOOL isSuccess = [SSZipArchive unzipFileAtPath:zipFileURLPath toDestination:desPath];
// 压缩
if (isSuccess) {
NSLog(@"解压缩成功");
}else{
NSLog(@"解压缩失败");
}
复制代码

若是您以为有所帮助,请在ZipperDownDemo上赏个Star ⭐️,您的鼓励是我前进的动力加密

参考:https://blog.csdn.net/yidunmarket/article/details/80359004spa

相关文章
相关标签/搜索