简介
安装 .NET Framework的 2018 年 7 月安全和质量汇总更新后,依赖于 .NET Framework 初始化 COM 组件且以受限权限运行的应用程序可能无法启动或正常运行。
Microsoft.NET Framework运行时使用进程令牌来确定进程是否在提升的上下文中运行。 如果没有所需的进程检查权限,这些系统调用可能会失败。 这会导致“拒绝访问”错误。
症状
在安装 2018 年 7 月 .NET Framework 安全更新之后,由于“拒绝访问”、“没有注册类”或“因未知原因发生内部故障”错误,导致 COM 组件无法加载。 最常见的故障签名如下:
Exception type: System.UnauthorizedAccessException
Message: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
SharePoint
- 当用户浏览到 SharePoint 网站时,他们可能会看到以下 HTTP 403 消息:“网站拒绝显示此网页”HTTP 403。
- SharePoint ULS 日志将包含以下消息:
w3wp.exe (0x1894) 0x0B94 SharePoint Foundation General 0000 High UnauthorizedAccessException for the request. 403 Forbidden will be returned. Error=An error occurred creating the configuration section handler for system.serviceModel/extensions: Could not load file or assembly <AssemblySignature> or one of its dependencies. Access is denied. (C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Config\machine.config line 180)
w3wp.exe (0x1894) 0x0B94 SharePoint Foundation General b6p2 VerboseEx Sending HTTP response 403:403 FORBIDDEN.
w3wp.exe (0x1894) 0x0B94 SharePoint Foundation General 8nca Verbose Application error when access /, Error=Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
- 对人员内容源进行爬网时,请求可能会失败,并在 SharePoint ULS 日志中记录以下条目:
mssearch.exe (0x118C) 0x203C SharePoint Server Search Crawler:Gatherer Plugin cd11 Warning The start address sps3s://<URLtoSite> cannot be crawled. Context: Application 'Search_Service_Application', Catalog 'Portal_Content' Details: Class not registered (0x80040154)
发生错误时,SharePoint 爬网日志中会记录类似于以下内容的消息:
sps3s://<URLtoSite>
爬网此类内容所需的组件未注册到此应用程序服务器。 有关详细信息,请查看事件日志。 (SearchID = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXxxx)
BizTalk Server管理控制台
- BizTalk Server管理控制台无法正确启动,并返回以下错误:
An internal failure occurred for unknown reasons. (WinMgmt)
Program Location:
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at System.Management.ManagementObject.Get()
at Microsoft.BizTalk.SnapIn.Framework.WmiProvider.SelectInstance
将 IIS 与经典 ASP 配合使用
为 .NET COM 对象调用 CreateObject 的托管经典 ASP 可能会生成类似于以下内容的错误消息:
ActiveX component can't create object
使用模拟的 .NET 应用程序
在模拟上下文中创建 .NET COM 应用程序实例的 .NET 应用程序可能会生成类似于以下内容的错误消息:
0x80040154 (REGDB_E_CLASSNOTREG)
解决方法
若要解决这些问题,请应用适用于操作系统的 2018 年 8 月安全和质量汇总或仅安全更新,并安装.NET Framework。 有关详细信息,请转到 CVE-2018-8356 |.NET Framework安全功能绕过漏洞。
解决方法
若要解决此问题,请尝试以下任一方法。
注意 根据受影响的应用程序及其代码,以下解决方法可能无效。
如果具有有关如何启动进程的高级知识,请使用 PROCESS_QUERY_INFORMATION 权限运行进程。
为 .NET COM 对象调用 CreateObject 的 IIS 托管经典 ASP 可能会收到“ActiveX 组件无法创建对象”错误:
如果网站使用匿名身份验证:
- 将网站匿名身份验证凭据更改为使用“应用程序池标识”。
如果站点使用基本身份验证或 Windows 身份验证:
- 以应用程序池标识身份登录应用程序一次,然后创建 .NET COM 组件的实例。
- 之后,其他站点用户将能够激活 .NET COM 组件,而不会失败。
或者,如果使用 Windows 身份验证,并且从运行 ASP 应用程序的 Windows 服务器的控制台访问网站:
- 创建 .NET COM 组件的实例也会为其他站点用户解决错误。
在模拟上下文中创建 .NET COM 应用程序实例的 .NET 应用程序可能会生成“0x80040154 (REGDB_E_CLASSNOTREG) ”错误消息:
在模拟上下文调用之前创建 .NET COM 组件的实例。
- 稍后模拟的创建实例调用按预期工作。
在模拟用户的上下文中运行 .NET 应用程序。
创建 .NET COM 对象时避免使用模拟。
如果为计算机禁用了 UAC,请重新启用它。
如果进程无法加载 Diasymreader.dll,请为程序集运行以下命令:
ngen install <the failing assembly>有关 ngen 的详细信息,请参阅 )Ngen.exe (本机映像生成器 。
警告:以下解决方法可能会使计算机或网络更容易受到恶意用户或恶意软件(如病毒)的攻击。 不建议采用这些解决方法。 但是,我们将提供此信息,以便你可以自行实施解决方法。 使用这些解决方法的风险自担。
- 将“网络服务”添加到本地管理员组。
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
适用于
2018 年 7 月 .NET Framework所有适用和受支持的 Windows 版本上.NET Framework 3.5、4.0、4.5.2、4.6、4.6.1、4.6.2、4.7.1 和 4.7.2 的安全汇报