报告编号: B6-2018-083001

报告来源: 360 Nirvan Team

报告作者: 360 Nirvan Team

更新日期: 2018-08-30

0x00 背景

今年 5 月 15 日傍晚盘古团队披露了 ZipperDown 漏洞[1],其中涉及到的主要的第三方解压缩库为 ZipArchive[2]。我们团队主要负责公司内 iOS App 的安全,因此为了更快的推进漏洞修复,我们连夜为这个漏洞编写了补丁,并在 16 日上午向官方的代码库提交了 Pull Request[3]。这个补丁主要处理了 Zip 包中的相对路径及软链接问题。由于时间紧,该补丁并没有考虑接口兼容性问题,但是作为修复漏洞的参考,已经包含了足够的信息。 几天前,收到了 Pull Request 关闭的邮件通知[4]:

其中一条描述大意为:没有什么证据说明 Zip 中的符号链接会引起安全问题。于是我们构造了新的 PoC[5] 来说明:存在于 ZipArchive 库中的,由于没有安全的处理软链接而造成的路径穿越漏洞。

0x01 漏洞描述

ZipArchive 库没有安全的处理 Zip 包中的软链接,存在路径穿越漏洞。

Zip 包的构造方法:

  1. 首先,向 Zip 文件中添加一个软链接 PDIR,指向 ../。 . 然后,向 Zip 中添加文件,文件名为:PDIR/XXX。

    这样在解压缩时 XXX 文件会被解压到 PDIR 指向的目录,通过组合 PDIR 可以实现任意级别的穿越。

    PoC 地址: https://github.com/Proteas/ZipArchive-Dir-Traversal-PoC

    运行 PoC 后的效果如下:

0x02 漏洞危害

像 ZipperDown 一样,路径穿越本身只会造成文件覆盖,但是结合 App 中的其他缺陷可能造成远程任意代码执行。

0x03 修复建议

参考补丁[3] 进行修复

0x04 参考

  1. ZipperDown 漏洞:https://zipperdown.org/ . ZipArchive 库:https://github.com/ZipArchive/ZipArchive . 参考补丁:https://github.com/ZipArchive/ZipArchive/pull/454/files . 开发者不处理软链接的原因:https://github.com/ZipArchive/ZipArchive/pull/454 . PoC: https://github.com/Proteas/ZipArchive-Dir-Traversal-PoC

0x05 时间线

2018-05-15 ZipperDown披露

2018-05-16 Nirvan Team提交补丁

2018-08-30 Nirvan Team披露软连接路径穿越漏洞

0x06 参考链接

  1. ZipperDown 漏洞

  2. ZipArchive 库

  3. 参考补丁

  4. 开发者不处理软链接的原因

  5. PoC

声明:本文来自360CERT,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。