CVE-2025-8088 是 WinRAR 中一个路径遍历漏洞,影响 7.13 之前的版本。利用此漏洞,攻击者可通过精心构造的压缩包,在解压过程中绕过文件名和路径验证,并将攻击者控制的内容写入 NTFS 分区上的特定位置。在某些条件下,此写入能力可被利用来实现远程代码执行。
OPSWAT 研究员计划的研究生研究员对 CVE-2025-8088 进行了技术分析。此次针对 RAR5 和 NTFS(ADS)机制的分析结果,追溯了导致不安全写入操作的提取工作流和 ADS 处理路径,并为网络安全从业人员和组织总结了切实可行的缓解与修复指南。

CVE-2025-8088 简介
WinRAR 是 Windows 平台上使用最广泛的压缩工具之一。它支持保留和恢复 NTFS 特有的元数据,例如 ADS(替代数据流)。CVE-2025-8088 存在于特定版本 WinRAR 的 ADS 处理逻辑中。在存在漏洞的版本中,恶意压缩包可能会影响解压过程中使用的流标识符;由于 ADS 创建流程中路径规范化和验证机制不足,从而导致目录遍历漏洞。
CVE-2025-8088 被评估为高危漏洞,其 CVSS v4.0 基础评分为 8.4(高),这表明如果用户使用存在漏洞的 WinRAR 版本解压经过特殊构造的压缩包,可能会造成可测量的安全影响。

技术背景
NTFS 替代数据流
NTFS (New Technology File System) is the default filesystem for modern versions of Windows. Compared to FAT-based filesystems, NTFS supports advanced capabilities including ACLs (access control lists), EFS encryption, compression, hard links, reparse points (junctions and symlinks), and ADS.
ADS is an NTFS feature that allows a single file or directory to contain multiple independent streams of data. The primary, user-visible content is stored in the unnamed default stream, commonly represented as ::$DATA, while additional named streams can be accessed using the syntax:
文件名.扩展名:流名
These named streams are not normally visible in standard Windows Explorer views, but they are fully supported by the filesystem and can be enumerated using supported tooling. For instance, dir /R can display alternate streams.
WinRAR supports extracting archive entries that include ADS syntax. When such entries exist within an archive, WinRAR writes the corresponding content into the target file’s alternate stream during extraction.

了解 RAR5 文件结构
RAR5 压缩包以一组连续的块形式存储。每个块开头都有一个头部,其中定义了块的类型和大小信息。该块可选地包含一个额外的元数据区域,以及由有效载荷字节(如压缩内容)组成的数据区域。
块 = 头部 + (可选的额外区域) + (可选的数据区域)
RAR5 使用了多种块类型。CVE 中涉及的块类型包括:
- 文件头(类型 2):描述归档文件中的文件条目(名称/路径、属性、时间戳、压缩参数),其后紧跟该文件的有效载荷数据
- 服务头(类型 3):可选的补充头,用于存储与归档文件或特定文件条目相关的附加元数据,例如 ADS
在 NTFS 文件系统中,ADS 由一个服务头(类型 3)表示,称为 STM。服务头的数据区包含基础文件条目的 ADS 流字节。
简而言之:

技术分析 (CVE-2025-8088)
RAR5 解压工作流
WinRAR processes RAR5 archives as a sequence of blocks. During extraction, it iterates over these blocks, parses each block header, and validates header integrity using the embedded CRC32 before continuing. After a file entry is processed, WinRAR decompresses and writes the base file content to the disk, then determines whether additional NTFS-related metadata must be applied via associated service records. When an ADS (Alternate Data Stream) record is present, such as an STM service entry, WinRAR enters the ADS-handling path, combines the base file path with the stream name to form the ADS target, and creates the stream.

在 CVE-2025-8088 中,根本原因在于 ADS 流的创建过程会调用 WindowsAPI (),并使用从归档控制元数据中派生的路径,导致 ADS 路径的构建和验证不足以防止目录遍历。
确定 ADS(“STM”)代码路径
我们的研究生研究员在受控的实验室环境中,使用 WinRAR 7.12 进行了静态与动态分析的结合。他们通过在二进制文件中搜索“STM”服务标记来定位与 ADS 相关的逻辑,随后在运行时确认了提取侧的代码路径。

通过在提取包含 ADS 数据的归档文件时,在“STM”引用处设置断点,该断点被持续触发,从而验证了该执行路径在正常的提取工作流中会被调用。

当触发断点时,利用调试器的调用堆栈重构了WinRAR用户界面中“提取”操作后的函数调用序列,从而为后续的块处理和ADS执行路径确立了一个明确的锚点。

报头解析与CRC32校验
WinRAR 通过读取块头、验证完整性字段并将数据分派给特定块类型的处理程序来处理每个 RAR5 块。图 6-10 展示了块处理的入口点及相关头文件解析逻辑:WinRAR 会将文件指针设置为当前块的偏移量,读取包含头文件类型和长度的初始头文件字节,并在继续处理前使用 CRC32 验证头文件的完整性。
验证成功后,它会解析其他标头字段,例如标志、解压后大小、压缩方法以及可选的校验和。随后,它会处理数据块主体。



在逆向工程过程中,发现该CRC32例程的行为与标准的zlib风格CRC32实现一致。实际上,此CRC32校验充当了完整性检查机制。如果头部字段被修改,则必须更新嵌入的CRC32值,以确保WinRAR能够接受该头部并继续处理。

在验证 CRC32 头部后,解析器将继续提取其余的头部信息,例如解压后的大小、压缩方法及其他属性。

完成头部解析和验证后,WinRAR 会根据解析出的头部类型和标志来处理数据块主体。

在 CVE-2025-8088 中,WinRAR 在将请求分派给处理 ADS 记录的服务块处理程序之前,会强制执行头信息完整性验证。
通过服务块(“STM”)创建广告
当 WinRAR 遇到服务块时,将进入 ADS 处理路径。服务块使用块类型值 3。当检测到服务块时,WinRAR 会将其分派给服务头处理程序。

在服务处理程序中,WinRAR 会检查服务名称。当服务名称与“STM”匹配时,该记录将被视为 ADS 有效载荷,此时程序将转入 ADS 创建例程。

随后,WinRAR 从服务记录中获取流名称,并将其与基础文件路径组合,从而构建最终的 ADS 目标。分析表明,在 7.13 之前的版本中,流名称的清理工作不够充分,这使得遍历序列能够影响最终目标路径的解析结果。


构建目标后,WinRAR 会通过一个调用 Windows CreateFileWAPI 的辅助例程创建数据流,然后使用 WriteFile 写入 ADS 字节。如果解析出的路径位于用户选定的解压目录之外,WinRAR 将创建目标数据流/文件,并将其填充为攻击者控制的内容。




总而言之,ADS 提取工作流暴露了两个与安全相关的问题。首先,ADS 流名称未经过充分的清理,导致遍历序列能够影响最终的目标路径。其次,WinRAR 通过调用 CreateFileW() 函数并传入一个源自归档控制元数据的路径来创建 ADS 流。
这些条件共同作用下,经过精心构造的存档文件可将 CreateFileW() 目标引导至预定解压目录之外,并将攻击者控制的内容写入攻击者操控的位置。如果目标位置是与持久化相关的目录(例如用户的“启动”文件夹),则根据有效载荷类型和系统配置的不同,此写入操作可能导致在下次登录或重启时执行后续代码。
攻击场景
在攻击者诱使用户使用存在漏洞的 WinRAR 版本解压经过特殊构造的 RAR 压缩包的情况下,CVE-2025-8088 实际上可被利用。典型的攻击途径是社会工程学手段(例如网络钓鱼),诱使受害者信任恶意压缩包,并在关键系统中启动解压操作。
该压缩包嵌入了 ADS(“STM”)服务记录。其流名称的构造方式引入了遍历语义。在 NTFS 系统上进行解压时,WinRAR 会处理该 ADS 记录,并根据压缩包控制的元数据推导出目标流路径。由于这种 ADS 路径的构造缺乏足够的约束,解析出的目标位置可能超出用户选定的解压目录范围,包括用户的“启动”文件夹等关键位置。

概念验证
To demonstrate CVE-2025-8088, our graduate fellows prepared a crafted RAR archive file containing an ADS (“STM”) service record with attacker-controlled fields. This archive is structured with an ADS stream name that includes traversal sequences. This structure influences the final target location during ADS handling, including the path passed to CreateFileW() when the stream is created. To ensure that WinRAR accepts the modified metadata and reaches the ADS-processing path, the relevant header CRC32 values are recomputed so the archive passes header integrity validation.

当存在漏洞的 WinRAR 版本在解压经过特殊构造的压缩包时进入 ADS 处理例程,它会将攻击者控制的内容写入预先选定的目标位置,而非用户原本指定的解压目录。解压完成后,有效载荷的执行取决于其格式以及预先选定目标位置的执行机制。例如,某些位置可能会在下次登录或重启时执行内容。

补救措施
通过将所有受管终端上的 WinRAR 更新至已修复版本(7.13 或更高版本),可缓解 CVE-2025-8088 带来的风险。如果无法及时更新,则必须考虑采取替代控制措施,例如:
- 在无需保留 ADS 时,限制或禁用归档工具中的 ADS 保留功能
- 将不受信任的存档文件解压限制在隔离环境中
- 实施最小权限原则(避免以管理员身份运行数据提取工具)
- 监控关键目录(例如启动位置),以检测源自归档文件解压工作流的意外写入操作
为了vulnerability detection 早期高级vulnerability detection 快速修复MetaDefender 通过识别运行存在漏洞的 WinRAR 版本的设备并突出显示所需更新,从而支持紧急修复操作。其强大的漏洞和补丁管理功能支持超过 1100 款应用程序,能够主动识别运行未打补丁或过时操作系统及第三方应用程序的终端设备,并提供建议的修复方案。
Vulnerability Management 使管理员能够快速检测漏洞风险、优先处理修复工作,并推动系统升级至已打补丁的版本,从而降低基于归档文件的写入攻击(如 CVE-2025-8088)以及类似终端威胁的风险。

