问题说明
ZSphere升级到5.1.0后,客户可能按以下流程制作新模板:
- 使用旧模板创建虚拟机。
- 在虚拟机内将VMTools升级到1.5.9。
- 将该虚拟机重新导出为模板。
- 使用新模板创建虚拟机。
新虚拟机页面显示VMTools版本为1.5.9最新版,但同时提示:
当前 VMTools 版本较低,可能导致部分功能无法使用,请升级 VMTools 到最新版本。
这两个显示来自不同判断链路。版本字段可以来自虚拟机实际信息或模板继承的GuestTools版本标签;“版本较低”告警还会在平台状态为qgaState=NotUpgraded时直接出现。因此,页面显示1.5.9不能单独证明VMTools全部组件正常。
本篇只处理Microsoft Defender隔离zs-tools.exe这一已确认根因。其他驱动、服务、版本文件或状态刷新问题,应返回KB-100553继续分流。
现象
页面表现
- 页面显示VMTools已经安装,版本为1.5.9或最新版。
- 页面同时显示“当前VMTools版本较低”的告警。
- 使用同一模板创建的新虚拟机可能持续出现相同告警。
Guest内典型表现
VERSION:1.5.9
qemu-ga:Running
zs-tools.exe:不存在
Defender:存在1116/1117隔离记录
关键文件路径:
C:\Program Files\Common Files\GuestTools\VERSION
C:\Program Files\GuestTools\zs-tools\zs-tools.exe
Defender记录通常包含:
Threat: Trojan:Win64/GoShell.GZX!MTB
Path: C:\Program Files\GuestTools\zs-tools\zs-tools.exe
Event ID: 1116 / 1117
Action: Quarantine
平台侧典型表现
version=1.5.9。qgaState=NotUpgraded或NotInstalled,而不是Running。- QGA通道可能正常,但宿主机检测不到
zs-tools.exe,等价于qga=true、tools=false。
适用环境
- 产品:ZSphere 5.1.0。
- 已验证构建:5.1.0.485、5.1.0.499。
- Guest:Windows Server 2019、Windows Server 2022已验证。
- VMTools版本:1.5.9。
- 安装方式可以是直接安装,也可以由安装完成的虚拟机再次导出模板。
未验证版本和其他Windows版本可以参考排查方法,但不能直接扩大为同一产品问题。
可能原因
按以下顺序建立证据闭环:
页面版本/告警
-> 平台GuestToolsState是否为NotUpgraded
-> Guest内VERSION、QGA服务和zs-tools.exe是否完整
-> Defender 1116/1117是否明确命中该文件
-> QGA通道是否正常
-> 经批准恢复文件后状态是否转为Running
前三层证据可以确认是否高度符合ZSV-12861;在测试克隆机中恢复可信文件后状态恢复,是最强的因果验证。没有Defender事件或文件仍正常时,不能因为页面文案相似就引用本篇定根因。
问题定性
- 问题类型:产品Bug/安全软件识别兼容问题。
- 是否已知问题:是,ZSV-12861。
- Jira状态:截至2026-08-13为Open/P1,未记录可确认的正式修复版本。
- 已验证版本:ZSphere 5.1.0.485、5.1.0.499;VMTools 1.5.9。
- 根因:Microsoft Defender将官方GuestTools核心程序
zs-tools.exe识别为Trojan:Win64/GoShell.GZX!MTB并隔离。版本文件仍保留1.5.9,但宿主机无法检测到zs-tools,平台状态无法进入Running,UI因此继续显示低版本告警。 - 影响:依赖zs-tools的Guest配置能力可能不可用,例如部分网络配置、主机名/DNS同步和Guest信息读取;具体能力需按实际调用验证。
- 结论置信度:高,前提是检查五的证据组合成立。
排查步骤
检查一:读取平台GuestTools状态
- 检查目的:确认告警是否由
qgaState=NotUpgraded触发,并排除真实版本差异。 - 在管理节点执行只读查询:
zstack-cli QueryGuestToolsState vmInstanceUuid=<VM_UUID>
zstack-cli GetVmGuestToolsInfo uuid=<VM_UUID>
zstack-cli GetLatestGuestToolsForVm uuid=<VM_UUID>
- 结果与结论:
| 检查结果 | 对应结论 | 下一步 |
|---|---|---|
version=1.5.9且qgaState=NotUpgraded/NotInstalled | 版本存在但运行状态异常,符合本问题入口,尚不能单独证明Defender隔离 | 检查Guest文件和Defender事件 |
qgaState=Running且最新版本也是1.5.9 | 当前状态不符合本问题;可能是页面缓存或历史截图 | 刷新页面并收集前端响应,必要时升级人工 |
| 平台最新版本不是1.5.9 | 存在管理节点GuestTools包或版本差异 | 转包同步/升级完整性排查,不直接引用ZSV-12861 |
| VERSION/version为空 | 更接近安装不完整或版本上报异常 | 返回KB-100553分流 |
检查二:检查Windows服务、版本文件和核心程序
- 检查目的:确认“版本标识存在但核心程序缺失”的特征。
- 使用管理员PowerShell执行只读检查:
Get-Content 'C:\Program Files\Common Files\GuestTools\VERSION' -ErrorAction SilentlyContinue
Get-Service -Name qemu-ga,zstack_zwatch_agent -ErrorAction SilentlyContinue |
Format-Table Name,Status,StartType
Test-Path 'C:\Program Files\GuestTools\zs-tools\zs-tools.exe'
Get-ChildItem 'C:\Program Files\GuestTools\zs-tools' -Force -ErrorAction SilentlyContinue
- 结果与结论:
| 检查结果 | 对应结论 |
|---|---|
VERSION=1.5.9、qemu-ga=Running、Test-Path=False | 高度符合核心文件被删除/隔离;继续检查Defender,不能仅凭缺文件认定安全软件 |
zs-tools.exe存在 | 当前不符合“文件已被隔离后缺失”的典型状态;仍需查看历史事件,确认是否曾被隔离后恢复 |
| qemu-ga未运行或VirtIO Serial异常 | QGA/驱动问题可能是主因,转KB-100553或KB-100554 |
| VERSION也不存在 | VMTools安装本身不完整,不属于本篇的典型证据组合 |
检查三:检查Microsoft Defender隔离记录
- 检查目的:确认删除
zs-tools.exe的具体执行者、威胁名称、时间和处置结果。 - 管理员PowerShell:
Get-WinEvent -FilterHashtable @{
LogName='Microsoft-Windows-Windows Defender/Operational'
Id=1116,1117
} -MaxEvents 200 |
Where-Object {
$_.Message -match 'zs-tools.exe|GoShell'
} |
Select-Object TimeCreated,Id,Message |
Format-List
Get-MpThreatDetection |
Where-Object {
$_.Resources -match 'zs-tools.exe|GuestTools'
} |
Format-List *
- 结果与结论:
| 检查结果 | 对应结论 |
|---|---|
1116/1117明确命中Trojan:Win64/GoShell.GZX!MTB和目标路径 | 与ZSV-12861的关键证据一致 |
| 只有其他文件或其他威胁记录 | 不能关联ZSV-12861 |
| 没有Defender记录 | 不能仅凭缺文件引用本Bug;检查第三方安全软件、安装日志和人为删除记录 |
| Defender被第三方安全软件替代 | Defender无记录不能排除第三方隔离,需转对应安全软件日志 |
检查四:确认QGA通道
- 检查目的:区分“QGA通道异常”和“QGA正常但zs-tools缺失”。
- 在虚拟机所在物理机执行:
virsh qemu-agent-command <VM_UUID> '{"execute":"guest-ping"}'
- 返回
{"return":{}}:QGA通道正常,结合文件缺失和Defender记录,根因进一步聚焦到zs-tools.exe被隔离。 - 命令超时或失败:还存在QGA/VirtIO Serial通道问题,不能把所有状态异常都归因Defender。
检查五:确认是否命中ZSV-12861
以下证据同时成立时,可以高置信确认:
- ZSphere版本属于已验证的5.1.0环境或具有相同组件版本。
VERSION=1.5.9。- qemu-ga服务及QGA通道正常。
zs-tools.exe不存在或明确处于隔离状态。- Defender 1116/1117命中
Trojan:Win64/GoShell.GZX!MTB和准确文件路径。 - 平台状态为
NotUpgraded/NotInstalled而不是Running。
只满足“页面提示版本较低”和“显示1.5.9”时,证据不足。
处理建议
本节包含安全软件例外、文件恢复和 VMTools 重装,只能由 Windows 管理员在客户安全部门审批后执行。
处理前准备
- 给故障虚拟机创建快照或完成系统备份。
- 确认VMTools安装介质来自当前ZSphere 5.1.0环境提供的官方可信ISO。
- 记录当前Defender事件、VMTools版本、文件状态和平台
GuestToolsState,便于回退及对比。 - 生产环境优先在故障VM的测试克隆机中验证,不直接在业务VM上试验安全例外。
恢复现有虚拟机
- Windows管理员打开:
Windows安全中心
-> 病毒和威胁防护
-> 保护历史记录
-> 找到Trojan:Win64/GoShell.GZX!MTB
-> 确认受影响路径为GuestTools的zs-tools.exe
- 确认文件来自可信官方介质后,仅对该对象执行“允许在设备上/还原”。如果还原后立即再次隔离,经安全审批后可临时添加精确文件排除:
Add-MpPreference -ExclusionPath 'C:\Program Files\GuestTools\zs-tools\zs-tools.exe'
禁止关闭Defender全局实时防护,禁止排除整个C:\磁盘。
- 使用当前ZSphere提供的官方VMTools ISO重新执行修复或安装,恢复缺失的
zs-tools.exe。
- 在Windows中验证:
Test-Path 'C:\Program Files\GuestTools\zs-tools\zs-tools.exe'
Get-Service -Name qemu-ga,zstack_zwatch_agent -ErrorAction SilentlyContinue |
Format-Table Name,Status,StartType
& 'C:\Program Files\GuestTools\zs-tools\zs-tools.exe' nic-info
$LASTEXITCODE
预期结果:文件存在、两个服务为Running、nic-info返回有效信息且退出码为0。
- 由人工在管理节点刷新并验证平台状态:
zstack-cli UpdateGuestToolsState vmInstanceUuid=<VM_UUID>
zstack-cli QueryGuestToolsState vmInstanceUuid=<VM_UUID>
等待30~60秒后,预期结果为:
version=1.5.9
qgaState=Running
zwatchState=Running
- 刷新页面,确认低版本告警消失;再验证此前受影响的Guest配置功能。
修复模板来源
如果故障VM由重新制作的模板创建,当前模板很可能已经包含“不完整安装状态”:VERSION是1.5.9,但zs-tools.exe在导出前已经被隔离。
- 回到制作模板的源VM执行上述恢复步骤。
- 重启源VM后再次确认文件未被隔离、服务正常、平台状态为
Running。 - 正常关机后重新导出模板。
- 使用新模板创建一台测试VM,再次检查Defender事件、文件、服务及平台状态。
- 验证通过后再用于批量创建;旧模板应停止继续分发并按内部流程下线。
只修复一台现有VM而继续使用原模板,不能解决后续批量创建问题。
排除项清理与回退
- 验证结束后,在安全负责人确认下尝试删除临时精确排除:
Remove-MpPreference -ExclusionPath 'C:\Program Files\GuestTools\zs-tools\zs-tools.exe'
- 删除排除后持续观察Defender事件和文件状态。如果再次隔离,说明当前包仍不能在现有病毒库下无例外运行,应停止把该方案当作长期修复,保留安全审批后的最小例外或等待官方修复包。
- 若恢复/重装造成异常,移除新增排除项,并按变更计划使用快照或备份回退。
长期方案
- 跟踪ZSV-12861提供的正式修复包和适用版本,未经Jira/发布说明确认不得自行声明已修复。
- GuestTools发布侧确认二进制来源和SHA256,完善代码签名并推进Microsoft误报申诉。
- 安装器在结束前检查
zs-tools.exe等关键文件是否存在、可执行;核心文件缺失时安装应明确失败,不能只留下版本号。 - 模板制作流程增加交付前检查:Defender事件、关键文件、QGA/ZWatch服务、平台状态和一次实际Guest配置调用。
补充信息
升级人工条件
- 安装介质来源或文件哈希无法确认。
- 客户安全策略不允许恢复文件或配置精确排除。
- Defender没有命中证据,但文件仍然缺失。
- 文件恢复后仍不能执行
nic-info,或QGA通道异常。 qgaState刷新后仍不是Running。- 删除排除项后再次隔离,需要安全团队评估长期例外。
- 需要确认ZSV-12861正式补丁、修复版本或批量处理方案。
需要收集的信息
- ZSphere完整版本和构建号。
- Windows版本、补丁版本和系统架构。
- VMTools版本、安装时间、安装方式和模板制作流程。
QueryGuestToolsState、GetVmGuestToolsInfo及GetLatestGuestToolsForVm输出。- VERSION、QGA/ZWatch服务和
zs-tools.exe文件检查结果。 - Defender 1116/1117完整事件、病毒库版本和检测时间。
- QGA
guest-ping结果。 - 恢复前后平台状态、页面截图和功能验证结果。
提交工单前应对VM UUID、IP、客户名称等信息脱敏,不收集密码、Token或会话信息。
相关问题
- ZSV-12861:5.1.0最新版
zs-tools.exe被Microsoft Defender识别并隔离;截至2026-08-13为Open/P1。 - KB-100553:Windows虚拟机已安装VMTools但平台显示未安装的多根因分流。
- KB-100554:VirtIO Serial/Balloon驱动黄色感叹号导致VMTools状态异常。
- 本文最后验证日期:2026-08-13。
