文档目录

问题说明

ZSphere升级到5.1.0后,客户可能按以下流程制作新模板:

  1. 使用旧模板创建虚拟机。
  2. 在虚拟机内将VMTools升级到1.5.9。
  3. 将该虚拟机重新导出为模板。
  4. 使用新模板创建虚拟机。

新虚拟机页面显示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

以下证据同时成立时,可以高置信确认:

  1. ZSphere版本属于已验证的5.1.0环境或具有相同组件版本。
  2. VERSION=1.5.9。
  3. qemu-ga服务及QGA通道正常。
  4. zs-tools.exe不存在或明确处于隔离状态。
  5. Defender 1116/1117命中Trojan:Win64/GoShell.GZX!MTB和准确文件路径。
  6. 平台状态为NotUpgraded/NotInstalled而不是Running。

只满足“页面提示版本较低”和“显示1.5.9”时,证据不足。

处理建议

Note:

本节包含安全软件例外、文件恢复和 VMTools 重装,只能由 Windows 管理员在客户安全部门审批后执行。

处理前准备

  1. 给故障虚拟机创建快照或完成系统备份。
  2. 确认VMTools安装介质来自当前ZSphere 5.1.0环境提供的官方可信ISO。
  3. 记录当前Defender事件、VMTools版本、文件状态和平台GuestToolsState,便于回退及对比。
  4. 生产环境优先在故障VM的测试克隆机中验证,不直接在业务VM上试验安全例外。

恢复现有虚拟机

  1. Windows管理员打开:
   Windows安全中心
   -> 病毒和威胁防护
   -> 保护历史记录
   -> 找到Trojan:Win64/GoShell.GZX!MTB
   -> 确认受影响路径为GuestTools的zs-tools.exe
  1. 确认文件来自可信官方介质后,仅对该对象执行“允许在设备上/还原”。如果还原后立即再次隔离,经安全审批后可临时添加精确文件排除:
   Add-MpPreference -ExclusionPath 'C:\Program Files\GuestTools\zs-tools\zs-tools.exe'

禁止关闭Defender全局实时防护,禁止排除整个C:\磁盘。

  1. 使用当前ZSphere提供的官方VMTools ISO重新执行修复或安装,恢复缺失的zs-tools.exe。
  1. 在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。

  1. 由人工在管理节点刷新并验证平台状态:
   zstack-cli UpdateGuestToolsState vmInstanceUuid=<VM_UUID>
   zstack-cli QueryGuestToolsState vmInstanceUuid=<VM_UUID>

等待30~60秒后,预期结果为:

   version=1.5.9
   qgaState=Running
   zwatchState=Running
  1. 刷新页面,确认低版本告警消失;再验证此前受影响的Guest配置功能。

修复模板来源

如果故障VM由重新制作的模板创建,当前模板很可能已经包含“不完整安装状态”:VERSION是1.5.9,但zs-tools.exe在导出前已经被隔离。

  1. 回到制作模板的源VM执行上述恢复步骤。
  2. 重启源VM后再次确认文件未被隔离、服务正常、平台状态为Running。
  3. 正常关机后重新导出模板。
  4. 使用新模板创建一台测试VM,再次检查Defender事件、文件、服务及平台状态。
  5. 验证通过后再用于批量创建;旧模板应停止继续分发并按内部流程下线。

只修复一台现有VM而继续使用原模板,不能解决后续批量创建问题。

排除项清理与回退

  • 验证结束后,在安全负责人确认下尝试删除临时精确排除:
  Remove-MpPreference -ExclusionPath 'C:\Program Files\GuestTools\zs-tools\zs-tools.exe'
  • 删除排除后持续观察Defender事件和文件状态。如果再次隔离,说明当前包仍不能在现有病毒库下无例外运行,应停止把该方案当作长期修复,保留安全审批后的最小例外或等待官方修复包。
  • 若恢复/重装造成异常,移除新增排除项,并按变更计划使用快照或备份回退。

长期方案

  1. 跟踪ZSV-12861提供的正式修复包和适用版本,未经Jira/发布说明确认不得自行声明已修复。
  2. GuestTools发布侧确认二进制来源和SHA256,完善代码签名并推进Microsoft误报申诉。
  3. 安装器在结束前检查zs-tools.exe等关键文件是否存在、可执行;核心文件缺失时安装应明确失败,不能只留下版本号。
  4. 模板制作流程增加交付前检查: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。
Windows 虚拟机已安装 VMTools 1.5.9,但仍提示版本较低 | 故障排查 · KB | ZStack 资源中心