iOS 解压缩漏洞:路径穿越 RCE 解析
2023-11-23 13:53:31
iOS 解压缩:路径穿越漏洞解析
盘古实验室公布了一个由目录穿越导致 RCE 的漏洞,称为 ZipperDown。该漏洞影响广泛,原因在于大多数 iOS 应用都使用 SSZipArchive 或 Ziparchive 来解压 Zip 文件,而这些库在处理 Zip 内文件名时没有进行必要的校验。
漏洞详情
在解压 Zip 文件时,SSZipArchive 和 Ziparchive 库可能会将恶意文件解压到任意目录,从而导致路径穿越漏洞。这是因为这些库未对 Zip 文件中的文件名进行适当的验证,允许攻击者在 Zip 文件中包含指向任意目录的路径。
例如,攻击者可以在 Zip 文件中包含一个名为 "/tmp/myfile" 的文件。当此 Zip 文件被解压时,恶意文件将被解压到 "/tmp" 目录下,该目录通常对用户具有写权限。这为攻击者提供了在目标设备上执行任意代码的机会。
漏洞影响
ZipperDown 漏洞影响所有使用 SSZipArchive 或 Ziparchive 库的 iOS 应用。这些应用范围广泛,包括社交媒体应用程序、文件管理器和文档阅读器。
缓解措施
缓解 ZipperDown 漏洞的最佳方法是升级到最新版本的 SSZipArchive 或 Ziparchive 库。这些新版本已修复了导致漏洞的根本问题。
开发人员还应仔细检查他们应用程序中使用的所有第三方库,以确保这些库是最新的且没有已知漏洞。
结论
ZipperDown 漏洞是一个严重的漏洞,可能导致 iOS 设备上的远程代码执行。开发人员应采取措施立即修补其应用程序,以保护用户免受此漏洞的侵害。
深入分析
SSZipArchive 和 Ziparchive 库
SSZipArchive 和 Ziparchive 是用于在 iOS 设备上解压 Zip 文件的两个流行库。这两个库都是开源的,并且被广泛用于各种应用程序中。
在处理 Zip 文件时,这些库将文件解压到由 destinationPath
参数指定的目录中。如果不指定 destinationPath
,则文件将被解压到应用程序的沙盒目录中。
漏洞根源
ZipperDown 漏洞源于 SSZipArchive 和 Ziparchive 库未能验证 Zip 文件中的文件名。这允许攻击者在 Zip 文件中包含指向任意目录的路径。
当这些库解压包含恶意文件名的 Zip 文件时,恶意文件将被解压到指定目录中。这为攻击者提供了执行任意代码的机会,因为他们现在可以在目标设备上写文件。
漏洞利用示例
以下是利用 ZipperDown 漏洞的一个示例:
- 攻击者创建一个包含名为 "/tmp/myfile" 的文件的 Zip 文件。
- 攻击者将此 Zip 文件发送到目标设备。
- 目标设备上的应用程序使用 SSZipArchive 或 Ziparchive 库解压 Zip 文件。
- 恶意文件被解压到 "/tmp" 目录下。
- 攻击者利用 "/tmp/myfile" 文件在目标设备上执行任意代码。
影响范围
ZipperDown 漏洞影响所有使用 SSZipArchive 或 Ziparchive 库的 iOS 应用。这些应用范围广泛,包括:
- 社交媒体应用程序
- 文件管理器
- 文档阅读器
- 照片编辑器
- 游戏
缓解措施
缓解 ZipperDown 漏洞的最佳方法是升级到最新版本的 SSZipArchive 或 Ziparchive 库。这些新版本已修复了导致漏洞的根本问题。
开发人员还应仔细检查他们应用程序中使用的所有第三方库,以确保这些库是最新的且没有已知漏洞。
结论
ZipperDown 漏洞是一个严重的漏洞,可能导致 iOS 设备上的远程代码执行。开发人员应采取措施立即修补其应用程序,以保护用户免受此漏洞的侵害。