【漏洞通告】 Microsoft WindowsType 1字体处理远程代码执行漏洞(ADV200006)

漏洞描述

近日,微软官方发布了一个非例行的预警通告。通告描述有两个漏洞存在于Windows Adobe Type Manager库处理Adobe Type 1 PostScript字体模块中,可能导致代码执行。从通告中可知该漏洞已经被用于有限的在野攻击中,攻击者可以通过多种方式利用此漏洞:例如诱导用户打开特制文档或通过在Windows预览窗格中查看来执行漏洞攻击。由于微软会在稍后四月的补丁日才对该漏洞进行修复,所以禹宏信安发布该漏洞通告提醒用户通过适当的缓解措施做好提前防范。

漏洞编号

ADV200006

漏洞危害

攻击者可以通过构造包含恶意的字体文件,诱使用户打开特制文档或在Windows预览窗格中查看它,可能导致任意代码执行。

漏洞等级

高危
受影响版本

Windows 10 for 32-bit Systems

Windows 10 for x64-based Systems

Windows 10 Version 1607 for 32-bit Systems

Windows 10 Version 1607 for x64-based  Systems

Windows 10 Version 1709 for 32-bit Systems

Windows 10 Version 1709 for ARM64-based  Systems

Windows 10 Version 1709 for x64-based  Systems

Windows 10 Version 1803 for 32-bit Systems

Windows 10 Version 1803 for ARM64-based  Systems

Windows 10 Version 1803 for x64-based  Systems

Windows 10 Version 1809 for 32-bit Systems

Windows 10 Version 1809 for ARM64-based  Systems

Windows 10 Version 1809 for x64-based  Systems

Windows 10 Version 1903 for 32-bit Systems

Windows 10 Version 1903 for ARM64-based  Systems

Windows 10 Version 1903 for x64-based Systems

Windows 10 Version 1909 for 32-bit Systems

Windows 10 Version 1909 for ARM64-based  Systems

Windows 10 Version 1909 for x64-based  Systems

Windows 7 for 32-bit Systems Service Pack 1

Windows 7 for x64-based Systems Service Pack  1

Windows 8.1 for 32-bit systems

Windows 8.1 for x64-based systems

Windows RT 8.1

Windows Server 2008 for 32-bit Systems  Service Pack 2

Windows Server 2008 for 32-bit Systems  Service Pack 2 (Server Core installation)

Windows Server 2008 for Itanium-Based  Systems Service Pack 2

Windows Server 2008 for x64-based Systems  Service Pack 2

Windows Server 2008 for x64-based Systems  Service Pack 2 (Server Core installation)

Windows Server 2008 R2 for Itanium-Based  Systems Service Pack 1

Windows Server 2008 R2 for x64-based  Systems Service Pack 1

Windows Server 2008 R2 for x64-based  Systems Service Pack 1 (Server Core installation)

Windows Server 2012

Windows Server 2012 (Server Core installation)

Windows Server 2012 R2

Windows Server 2012 R2 (Server Core  installation)

Windows Server 2016

Windows Server 2016 (Server Core  installation)

Windows Server 2019

Windows Server 2019 (Server Core  installation)

修复方案

目前暂时没有相关的补丁发布,微软当前提供了多个相关的缓解措施,但是相关操作都会有一些不良后果,是否使用需要结合自己业务进行判断。

  1. 在Windows资源管理器中禁用预览窗格和详细信息窗格

在Windows资源管理器中禁用“预览”和“详细信息”窗格将阻止在Windows资源管理器中自动显示OTF字体。虽然这可以防止在Windows资源管理器中查看恶意文件,但不能阻止经过身份验证的本地用户运行特制程序来利用此漏洞。

Windows Server 2008,Windows 7,Windows Server 2008 R2,Windows Server 2012,Windows Server 2012 R2和Windows 8.1中禁用这些窗格,请执行以下步骤:

  • 打开Windows资源管理器,单击“组织”,然后单击“布局”。
  • 清除“详细信息”窗格和“预览”窗格的菜单选项。
  • 单击“整理”,然后单击“文件夹和搜索选项”。
  • 单击查看选项卡。
  • 在“高级设置”下,选中“始终显示图标,从不显示缩略图”框。
  • 关闭Windows资源管理器的所有打开的实例,以使更改生效。

Windows Server 2016,Windows 10和Windows Server 2019,请执行以下步骤:

  • 打开Windows资源管理器,单击“查看”选项卡。
  • 清除“详细信息”窗格和“预览”窗格的菜单选项。
  • 单击选项,然后单击更改文件夹和搜索选项。
  • 单击查看选项卡。
  • 在“高级设置”下,选中“始终显示图标,从不显示缩略图”框。
  • 关闭Windows资源管理器的所有打开的实例,以使更改生效。

解决方法的影响:

Windows资源管理器不会自动显示OTF字体。

通过以下操作撤销以上操作。

Windows Server 2008,Windows 7,Windows Server 2008 R2,Windows Server 2012,Windows Server 2012 R2和Windows 8.1重新启用预览和详细信息窗格,请执行以下操作:

  • 打开Windows资源管理器,单击“组织”,然后单击“布局”。
  • 选择详细信息窗格和预览窗格菜单选项。
  • 单击“整理”,然后单击“文件夹和搜索选项”。
  • 单击查看选项卡。
  • 在“高级设置”下,清除“始终显示图标,从不缩略图”框。
  • 关闭Windows资源管理器的所有打开的实例,以使更改生效。

Windows Server 2016,Windows 10和Windows Server 2019重新启用预览和详细信息窗格,请执行以下操作:

  • 打开Windows资源管理器,单击“查看”选项卡。
  • 选择详细信息窗格和预览窗格菜单选项。
  • 单击选项,然后单击更改文件夹和搜索选项。
  • 单击查看选项卡。
  • 在“高级设置”下,清除“始终显示图标,从不缩略图”框。
  • 关闭Windows资源管理器的所有打开的实例,以使更改生效。
  1. 禁用WebClient服务

禁用WebClient服务可以通过Web分布式创作和版本控制(WebDAV)客户端服务阻止最可能的远程攻击媒介,从而帮助保护受影响的系统免遭利用此漏洞的尝试。应用此替代方法后,成功利用此漏洞的远程攻击者仍然有可能导致系统运行位于目标用户计算机或局域网(LAN)上的程序,但是在从Windows Server 2003中打开任意程序之前,系统将提示用户进行确认。

要禁用WebClient服务,请执行以下步骤:

  • 单击开始,单击运行(或按键盘上的Windows键和R),键入msc,然后
  • 单击确定。
  • 右键单击WebClient服务,然后选择属性。
  • 将启动类型更改为已禁用。如果服务正在运行,请单击“停止”。
  • 单击确定,然后退出管理应用程序。

解决方法的影响:

禁用WebClient服务时,将不发送Web分布式创作和版本控制(WebDAV)请求。此外,任何明确依赖于WebClient服务的服务都不会启动,并且错误消息将记录在系统日志中。例如,将无法从客户端计算机访问WebDAV共享。

要重新启用WebClient服务,请执行以下步骤:

  • 单击开始,单击运行(或按键盘上的Windows键和R),键入msc,然后
  • 单击确定。
  • 右键单击WebClient服务,然后选择属性。
  • 将启动类型更改为自动。如果该服务未运行,请单击“ 开始”。
  • 单击确定,然后退出管理应用程序。
  1. 重命名DLL

从Windows 10版本1709开始的Windows 10安装中不存在ATMFD.DLL。较新的版本没有此DLL。有关更多信息,请参见缓解部分。

对于32位系统在管理命令提示符处输入以下命令:

cd “%windir%\system32”

takeown.exe /f atmfd.dll

icacls.exe atmfd.dll /save atmfd.dll.acl

icacls.exe atmfd.dll /grant Administrators:(F)

rename atmfd.dll x-atmfd.dll

重新启动系统。

对于64位系统在管理命令提示符处输入以下命令:

cd “%windir%\system32”

takeown.exe /f atmfd.dll

icacls.exe atmfd.dll /save atmfd.dll.acl

icacls.exe atmfd.dll /grant Administrators:(F)

rename atmfd.dll x-atmfd.dll

cd “%windir%\syswow64”

takeown.exe /f atmfd.dll

icacls.exe atmfd.dll /save atmfd.dll.acl

icacls.exe atmfd.dll /grant Administrators:(F)

rename atmfd.dll x-atmfd.dll

重新启动系统。

通过以下命令撤销重命名操作。

对于32位系统在管理命令提示符处输入以下命令:

cd “%windir%\system32”

rename x-atmfd.dll atmfd.dll

icacls.exe atmfd.dll /setowner “NT SERVICE\TrustedInstaller”

icacls.exe . /restore atmfd.dll.acl

重新启动系统。

对于64位系统在管理命令提示符处输入以下命令:

cd “%windir%\system32”

rename x-atmfd.dll atmfd.dll

icacls.exe atmfd.dll /setowner “NT SERVICE\TrustedInstaller”

icacls.exe . /restore atmfd.dll.acl

cd “%windir%\syswow64”

rename x-atmfd.dll atmfd.dll

icacls.exe atmfd.dll /setowner “NT SERVICE\TrustedInstaller”

icacls.exe . /restore atmfd.dll.acl

重新启动系统。

  1. Windows 8.1或更低版本操作系统的可选过程(禁用ATMFD)

不正确地使用注册表编辑器会导致严重的问题,可能需要您重新安装操作系统。Microsoft无法保证可以解决由于注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。有关如何编辑注册表的信息,请在注册表编辑器(Regedit.exe)中查看“更改键和值”帮助主题,或在Regedt32中查看“在注册表中添加和删除信息”和“编辑注册表数据”帮助主题。可执行程序。

手动编辑系统注册表:

  • 以管理员身份运行exe。
  • 在注册表编辑器中,导航到以下子项(或创建它)并将其DWORD值设置为

1: HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\DisableATMFD, DWORD = 1

  • 关闭注册表编辑器,然后重新启动系统。

使用托管部署脚本:

  • 创建一个名为ATMFD-disable.reg的文本文件,其中包含以下文本:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]

“DisableATMFD”=dword:00000001

  • 运行exe。
  • 在注册表编辑器中,单击“文件”菜单,然后单击“导入”。
  • 浏览并选择您在第一步中创建的ATMFD-disable.reg文件。(请注意,如果未在您

期望的位置列出您的文件,请确保未自动为该文件指定.txt文件扩展名,或将对话

框的文件扩展名参数更改为All Files)。

  • 单击“打开”,然后单击“确定”关闭注册表编辑器。

解决方法的影响:

依赖嵌入式字体技术的应用程序将无法正确显示。禁用ATMFD.DLL可能会导致某些应用程序使用OpenType字体而无法正常运行。Microsoft Windows不会本地发布任何OpenType字体。但是,第三方应用程序可以安装它们,并且它们可能会受到此更改的影响。

通过以下操作撤销以上操作。

Windows 8.1或更低版本操作系统的可选过程(启用ATMFD)

手动编辑系统注册表:

  • 以管理员身份运行exe。
  • 在注册表编辑器中,导航到以下子项并将其DWORD值设置为
  • 0: HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\DisableATMFD, DWORD = 0
  • 关闭注册表编辑器,然后重新启动系统。

使用托管部署脚本:

  • 创建一个名为ATMFD-enable.reg的文本文件,其中包含以下文本:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]

“DisableATMFD”=dword:00000000

  • 运行exe。
  • 在注册表编辑器中,单击“文件”菜单,然后单击“导入”。
  • 导航到并选择您在第一步中创建的ATMFD-enable.reg文件。(请注意,如果未在

您期望的位置列出您的文件,请确保未自动为该文件指定.txt文件扩展名,或将对

话框的文件扩展名参数更改为All Files)。

  • 单击“打开”,然后单击“确定”关闭注册表编辑器。

参考链接

  1. https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/adv200006