1. 漏洞爆发现场:5亿终端无自动更新带来的现实风险
RARLab官方在2026年7月2日放出WinRAR 7.23补丁包,同步披露CVE-2026-14191高危RCE漏洞。漏洞曝光48小时内,多家安全厂商监测到公开POC流出,黑产团队快速把恶意RAR5包嵌入钓鱼邮件、网盘资源、盗版软件分卷压缩包投放。
全球使用WinRAR的终端总量突破5亿,Windows个人电脑、政企办公终端、工控运维主机占绝大多数。这款软件从初代发布至今,始终没有内置自动更新模块,不存在后台静默校验版本、弹窗推送升级包的逻辑。用户只能手动打开软件查看版本号,再跳转官网下载安装包覆盖安装。
多家安全厂商历史数据能直观体现这个机制缺陷带来的危害。2023年CVE-2023-40477漏洞修复后半年,国内政企内网仍有62%终端停留在漏洞版本;2025年两款WinRAR本地提权漏洞曝光9个月,零售行业办公电脑未修复比例超过78%。普通用户不会主动定期检查解压工具版本,企业运维大多只关注操作系统、浏览器、办公软件补丁,长期忽略WinRAR这类轻量工具的安全基线。
本次漏洞攻击门槛极低,攻击者不需要复杂交互动作。用户下载恶意压缩包后,右键解压、双击打开文件两种常规操作,就能触发堆内存溢出,恶意代码直接获取当前用户权限。如果终端登录账户具备管理员权限,攻击者可完成系统后门植入、全盘文件窃取、横向渗透内网设备全套操作。
APT组织已经调整攻击载荷,把传统Office宏钓鱼、PDF漏洞替换成恶意RAR5分卷包。宏文件会被办公软件默认拦截,畸形RAR包解压操作无任何系统级拦截机制,攻击成功率提升三倍以上。
漏洞攻击链路Mermaid流程图
普通用户权限
管理员权限
攻击者构造畸形RAR5恢复卷分卷包
投递渠道:钓鱼邮件/网盘/论坛附件/盗版软件
终端用户下载压缩文件
双击/右键调用WinRAR解压
WinRAR RecVolumesRestore函数解析REV元数据
超长畸形参数无边界校验触发堆溢出
覆盖堆块指针、劫持程序执行流
落地恶意载荷,执行任意代码
账户权限判断
窃取桌面、文档目录文件
写入启动项、安装持久化后门、内网横向扫描
2. CVE-2026-14191底层技术拆解:RAR5恢复卷堆溢出完整逻辑
2.1 RAR5恢复卷基础工作机制
RAR5格式引入REV恢复分卷,用户打包大容量文件时开启恢复记录,软件生成若干后缀.rev的补充压缩包。原始分卷损坏、丢失后,程序读取REV文件内校验字段、文件长度、分卷索引数据,重建完整压缩包。
解析REV文件的核心逻辑封装在UnRAR64.dll内部RecVolumesRestore()函数,该函数启动后会预先在堆内存分配固定长度缓冲区,用来存储文件名称、分卷字节长度、索引偏移三类元数据。开发人员仅对RAR3格式的REV字段增加长度校验,RAR5分支完全复用未加固的原始内存分配逻辑。
2.2 漏洞触发完整内存流程
- 恶意压缩包写入自定义超长文件名字段、伪造超大分卷长度数值,写入RAR5头部REV标识位;
- WinRAR加载压缩包,识别REV恢复标记,调用恢复卷解析函数;
- 程序读取畸形参数,直接复制进预先分配的固定堆缓冲区,未做长度对比截断;
- 超长数据溢出缓冲区边界,覆盖相邻堆块的内存控制头、函数返回地址;
- 攻击者精准控制溢出数据布局,改写返回地址指向堆内预先存放的shellcode;
- 程序退出解析函数时跳转篡改后的内存地址,执行攻击者写入的恶意指令。
2.3 内存缺陷架构Mermaid图
UnRAR64.dll 风险函数模块
RAR3旧格式
RAR5新格式
RecVolumesRestore 入口
堆内存分配固定缓冲区 0x400字节
格式判断分支
字段长度校验截断
无校验直接拷贝元数据
超长畸形数据溢出堆缓冲区
覆盖相邻堆块头部指针
篡改函数栈返回地址
跳转shellcode地址执行恶意代码
2.4 漏洞利用限制说明
漏洞仅针对带REV恢复卷标记的RAR5压缩包,纯单卷无恢复记录的RAR5文件不会触发缺陷;ZIP、7Z、ISO等其他压缩格式完全不受影响。命令行独立unrar工具Linux、macOS编译版本移除恢复卷解析逻辑,不存在该漏洞,仅Windows平台GUI版WinRAR配套的动态链接库存在风险。
3. 新旧漏洞对照:CVE-2023-40477与本次漏洞代码分支差异
两款漏洞属于同源代码缺陷,2023年厂商修复时仅处理RAR3分支校验逻辑,RAR5解析代码完全保留原始未加固写法,时隔三年衍生出新高危漏洞。
CVE-2023-40477仅能通过老旧RAR3格式REV包触发,目前互联网流通的压缩文件极少使用RAR3标准,攻击者利用场景受限;CVE-2026-14191瞄准当前软件默认输出的RAR5格式,网盘、办公分卷压缩全部使用该标准,攻击覆盖范围无边界。
当年补丁仅在RAR3数据拷贝函数增加strlen长度判断,开发团队未同步修改同逻辑的RAR5解析函数,两份代码分支高度相似却安全标准不一致,属于典型的补丁遗漏开发事故。
POC构造成本差距明显,CVE-2023-40477需要手动修改老旧RAR3文件头标识,工具链零散;当前漏洞已有一键生成恶意RAR5包的公开工具,输入shellcode即可自动输出带畸形REV字段的分卷压缩文件,黑产批量投放门槛大幅降低。
4. 完整影响范围梳理:全系统版本、关联组件、攻击载体分类
4.1 Windows受影响软件版本
WinRAR 7.22及以下全部正式版、测试版:7.x全系列、6.x、5.x、4.x老旧长期使用版本。配套命令行工具RAR.exe、底层解析库UnRAR64.dll、UnRAR.dll同步携带漏洞,只要系统存在上述文件,调用解压操作就存在风险。
32位、64位Windows系统全部中招,Windows 10、Windows 11、Windows Server 2016至2025服务器系统无例外。
4.2 不受影响产品清单
- WinRAR 7.23及以上官方正式安装包;
- Linux、macOS独立开源unrar命令行工具;
- 7-Zip、Bandizip、PeaZip第三方解压软件;
- 仅内置ZIP解压逻辑、不加载UnRAR动态库的轻量工具。
4.3 三类高频攻击载体
- 邮件附件:伪装合同、报价单、项目资料的分卷RAR5 REV包,企业员工打开概率最高;
- 网盘资源:影视、软件、游戏分卷压缩包,个人用户下载量巨大;
- 本地传输文件:内网共享文件夹、U盘携带恶意压缩包,横向渗透企业终端。
5. 个人终端分步修复实操,附版本自查与临时阻断手段
5.1 一步自查当前WinRAR版本
打开桌面WinRAR快捷方式,顶部菜单栏点帮助,选择关于WinRAR,弹窗顶部直接展示版本数字。数字低于7.23,终端处于高危状态,必须立刻升级。
部分用户把WinRAR安装到自定义目录,无桌面快捷方式,可打开此电脑,进入C:\Program Files\WinRAR目录,双击WinRAR.exe执行版本校验。
5.2 官方纯净安装包下载覆盖升级
第三方下载站捆绑广告、篡改安装程序,优先访问RARLab官网获取安装包。关闭所有资源管理器、打开的压缩窗口,运行下载后的exe文件,程序自动覆盖原有安装目录,许可证、右键菜单配置全部保留,无需重新设置。
升级完成重复版本校验步骤,确认弹窗版本号更新至7.23。
5.3 未升级前临时防护手段
不要解压来源不明的分卷后缀.part.rar、后缀.rev的文件;打开文件资源管理器查看选项,勾选文件扩展名,识别伪装成文档、图片的压缩包;陌生压缩包优先上传在线沙箱检测,确认无风险再本地解压。
系统右键菜单清理:控制面板卸载老旧WinRAR版本,临时使用系统自带ZIP解压功能,直到完成新版本安装。
6. 企业内网运维全套方案:巡检、静默推送、域策略落地
企业场景痛点远多于个人终端,数百台、上千台分散办公设备,人工逐台检查版本不现实,必须依靠脚本自动化完成巡检与批量升级。
6.1 CMD终端版本巡检脚本,批量导出漏洞设备日志
新建文本文档,复制下方代码,后缀修改为.bat,管理员身份运行,自动扫描32/64位安装目录,输出版本日志文件:
@echo off chcp 65001 >nul echo 开始本地WinRAR版本扫描,日志将输出至当前目录winrar_scan_log.txt echo ============================================= >> winrar_scan_log.txt echo 扫描时间:%date% %time% >> winrar_scan_log.txt echo 本机计算机名:%computername% >> winrar_scan_log.txt echo 用户账户:%username% >> winrar_scan_log.txt echo. >> winrar_scan_log.txt set flag=0 if exist "C:\Program Files\WinRAR\WinRAR.exe" ( echo 检测到64位WinRAR程序 echo 64位程序版本信息: >> winrar_scan_log.txt "C:\Program Files\WinRAR\WinRAR.exe" -v >> winrar_scan_log.txt set flag=1 ) if exist "%ProgramFiles(x86)%\WinRAR\WinRAR.exe" ( echo 检测到32位WinRAR程序 echo 32位程序版本信息: >> winrar_scan_log.txt "%ProgramFiles(x86)%\WinRAR\WinRAR.exe" -v >> winrar_scan_log.txt set flag=1 ) if %flag% equ 0 ( echo 本机未检测到WinRAR安装程序 echo 本机无WinRAR >> winrar_scan_log.txt ) echo. >> winrar_scan_log.txt echo 扫描结束 pause脚本输出日志后,运维筛选日志内版本数字低于7.23的设备,标记为高危终端,统一推送升级包。
6.2 PowerShell静默升级脚本,域环境开机自动推送
组策略、域控下发脚本,终端开机管理员权限自动执行,后台下载官方7.23安装包静默覆盖,无弹窗交互:
# WinRAR 7.23 内网批量静默升级脚本,域策略专用[Net.ServicePointManager]::SecurityProtocol =[Net.SecurityProtocolType]::Tls12$installFileUrl="https://www.rarlab.com/rar/winrar-x64-723.exe"$tempSavePath="$env:TEMP\winrar_update_723.exe"# 下载官方安装包try{Invoke-WebRequest-Uri$installFileUrl-OutFile$tempSavePath-UseBasicParsing-TimeoutSec 60}catch{Write-Host"安装包下载失败,终止升级流程"exit1}# 静默安装参数/S,无界面覆盖原有版本Start-Process-FilePath$tempSavePath-ArgumentList"/S"-Wait-NoNewWindow# 删除临时安装文件if(Test-Path$tempSavePath){Remove-Item$tempSavePath-Force}# 校验升级后版本$winrarPath="C:\Program Files\WinRAR\WinRAR.exe"if(Test-Path$winrarPath){$versionResult= &$winrarPath-vWrite-Host"升级完成,当前版本信息:$versionResult"}else{Write-Host"升级失败,未检测到程序目录"}6.3 域安全基线配套策略
- 组策略软件限制策略,拦截7.22及以下版本WinRAR.exe进程启动;
- 邮件安全网关过滤附件,直接拦截后缀.rev、part*.rar附件;
- 文件服务器审计策略,记录所有rar、rev文件上传操作,留存日志90天;
- EDR终端规则,监控WinRAR解压时异常内存写入行为,拦截漏洞利用载荷。
7. 恶意RAR5压缩包批量检测脚本(Python/CMD双版本可直接运行)
运维定期扫描企业共享服务器、U盘摆渡文件目录,自动识别携带畸形REV标记的风险RAR5包,拦截内网扩散。
7.1 Python批量狩猎脚本,服务器文件目录扫描专用
importosdefscan_rar_risk_file(file_full_path):# 风险压缩包后缀匹配target_suffix=(".rar",".rev",".part1.rar",".part2.rar",".part01.rar")file_name=file_full_path.lower()ifnotfile_name.endswith(target_suffix):returnFalsetry:withopen(file_full_path,"rb")asfile_stream:file_header_data=file_stream.read(200)# RAR5标准头部标记rar5_header=b"Rar!\x1a\x07\x01\x00"# REV恢复卷特征标识rev_mark=b"REV"ifrar5_headerinfile_header_dataandrev_markinfile_header_data:print(f"[高危风险] 恶意RAR5恢复卷包:{file_full_path}")# 可选:自动隔离文件,取消注释启用# os.rename(file_full_path, file_full_path + ".risk_block")returnTrueexceptPermissionError:print(f"[权限拒绝] 无法读取文件:{file_full_path}")returnFalseexceptExceptionaserr:print(f"[读取异常]{file_full_path}错误信息:{str(err)}")returnFalsereturnFalseif__name__=="__main__":# 修改此处为企业共享目录、服务器扫描路径scan_target_folder=r"D:\company_share_file"risk_file_count=0forroot_dir,sub_dir_list,file_listinos.walk(scan_target_folder):forsingle_fileinfile_list:full_file_path=os.path.join(root_dir,single_file)ifscan_rar_risk_file(full_file_path):risk_file_count+=1print(f"扫描完成,共发现{risk_file_count}个带恢复卷风险RAR5文件")7.2 CMD简易扫描脚本,终端本地快速排查
@echo off chcp 65001 echo 本地恶意RAR5恢复卷文件快速扫描工具 set scan_path=%cd% echo 扫描目录:%scan_path% echo. findstr /s /m /c:"Rar!\x1a\x07\x01\x00" /c:"REV" *.rar *.rev part*.rar echo 扫描结束,上方输出文件即为风险压缩包 pause8. 替代解压工具安全固化配置:7-Zip、Bandizip落地参数清单
WinRAR无自动更新机制是长期无法解决的底层缺陷,长期安全改造必须替换具备自动补丁推送的解压软件,两套工具完整安全配置如下。
8.1 7-Zip开源工具安全配置清单
- 安装后开启软件自动更新检测,设置每周自动校验官方补丁;
- 关闭资源管理器压缩包预览功能,避免未解压触发文件解析漏洞;
- 配置解压路径白名单,禁止解压文件写入C:\Windows、启动目录等系统敏感路径;
- 开启压缩嵌套层数限制,最大嵌套层数设为5,拦截压缩炸弹攻击;
- 取消右键一键全部解压,强制用户手动确认解压目录;
- 禁用程序内置文件浏览器,仅通过系统资源管理器访问压缩包内文件。
7-Zip无内置RAR解析高危REV处理逻辑,底层不加载UnRAR.dll风险库,天然规避本次CVE漏洞。
8.2 Bandizip商用解压软件企业安全配置
- 开启后台静默自动更新,高危漏洞补丁24小时内强制推送安装;
- 内置恶意压缩包检测引擎,识别畸形REV、超长文件名RAR包直接弹窗隔离;
- 域环境统一配置密码保护压缩包强制校验,拦截无密码恶意分卷;
- 日志记录全部解压操作,上传终端审计平台留存;
- 禁用自动执行压缩包内exe、bat脚本文件,阻断载荷自动运行。
9. 内网防御链路搭建:邮件网关、终端EDR、文件服务器联动策略
单一升级软件无法完全阻断攻击,三层防御链路同步部署,形成闭环防护。
第一层:邮件网关过滤。拦截所有带.rev后缀附件,识别邮件正文附带的网盘恶意RAR资源链接;扫描附件文件头,匹配RAR5+REV特征直接丢弃邮件,不投递至员工邮箱。
第二层:终端EDR防护规则。监控WinRAR进程内存异常读写,检测堆溢出典型内存操作行为,直接终止进程并上报安全平台;拦截WinRAR解压后陌生程序写入启动目录、注册表自启动项。
第三层:文件服务器审计拦截。上传文件实时调用检测脚本,识别风险RAR包直接禁止保存;记录全部rar文件上传下载人员、时间、设备信息,发生入侵后快速溯源攻击来源。
三层联动Mermaid架构图
匹配REV/RAR5特征拦截
正常邮件放行
解压触发漏洞内存异常
文件上传内网共享服务器
检测到风险压缩包
外部攻击者投递恶意RAR包
第一层 邮件安全网关
直接丢弃恶意附件
员工终端EDR第二层防护
终止WinRAR进程+告警
第三层 文件服务器实时扫描脚本
禁止写入磁盘,记录操作日志
10. 长期安全架构改造思路,规避同类解压软件重复风险
仅修复本次CVE漏洞治标不治本,软件无自动更新的底层缺陷会持续催生同类漏洞,企业需要固定长期改造方案。
全终端统一替换开源7-Zip,下线全域WinRAR软件,消除手动补丁运维成本;建立终端轻量工具安全基线清单,浏览器、解压软件、PDF阅读器全部选用自带自动更新的产品;运维季度扫描内网老旧工具版本,生成漏洞资产台账;采购文件沙箱系统,所有外来压缩文件先经过沙箱解析,确认无利用行为再下发至终端。
开发内部文件分发管控平台,员工传输大容量文件使用平台内置加密压缩模块,不允许外网下载的分卷RAR包在内网流转;关闭终端本地解压软件右键自动解析功能,外来压缩文件统一上传平台处理。
互动提问
- 你们企业内网现在还在批量使用WinRAR吗,日常靠什么方式管控工具版本漏洞?
- 有没有遇到过恶意RAR分卷包钓鱼攻击,当时用什么手段拦截处置的?