漏洞概述
CVE-2023-39138 是针对 Swift 编程语言中 ZIPFoundation 库的一个高危安全漏洞。该漏洞存在于 0.9.16 及更早版本中,允许攻击者通过构造恶意的 Zip 压缩包,在应用程序执行解压操作时实施路径遍历攻击。
受影响版本
- 受影响的版本:<= 0.9.17
- 已修复的版本:0.9.18
漏洞细节
漏洞的核心在于 ZIPFoundation 库在解压 Zip 文件时,未能对文件路径中的特殊元素(例如 ../)进行充分的安全校验和清理。当处理包含恶意路径条目的 Zip 文件时,库可能允许文件被提取到预期的目标目录之外的位置。
攻击场景:攻击者可以制作一个 Zip 文件,其中包含类似 ../../../etc/passwd 的路径。如果使用受影响版本的 ZIPFoundation 来解压此文件,攻击者有可能将文件写入到系统上的任意位置,例如覆盖关键系统文件或脚本,从而可能导致任意代码执行、信息泄露或系统完整性破坏。
技术指标
- CVSS 3.1 评分:7.8(高危)
- 主要弱点:CWE-22 - 路径遍历(不当限制路径名到受限目录)
- 攻击向量:本地
- 所需权限:无
- 用户交互:需要
- 影响范围:未改变
- 影响:机密性、完整性、可用性均受到高影响
修复与建议
- 立即升级:所有使用 ZIPFoundation 库的项目应立即升级到 0.9.18 或更高版本。
- 检查依赖:使用依赖管理工具(如 Swift Package Manager)检查并确保项目引用了已修复的库版本。
- 安全实践:在处理用户上传的 Zip 文件时,应始终在解压前验证文件内容,并对提取出的文件路径进行标准化和安全校验,确保其位于预期的沙箱目录内。