介绍
应用程序依赖于.NET Framework 初始化 COM 组件和使用受限权限运行可能无法启动或正常运行后安装 7 月 2018年的.NET Framework 的安全性和质量汇总更新。
Microsoft.NET Framework 运行时使用进程令牌来确定进程是否在升高的上下文中运行。 如果不存在所需的过程检查权限,则这些系统调用可能会失败。 这会导致出现"访问被拒绝"错误。
症状
之后7 月 2018年.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> A component required for crawling this type of content is not registered with this application server. View the event logs for more information. (SearchID = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
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
与传统的 ASP 的 IIS
-
承载传统的 ASP.NET COM 对象调用无论可能会生成类似于以下内容的错误消息: ActiveX component can't create object
使用模拟的.NET 应用程序
-
.NET 应用程序创建实例的.NET COM 应用程序中模拟上下文可能会生成错误消息,如下所示: 0x80040154 (REGDB_E_CLASSNOTREG)
解决方案
要解决这些问题,请应用适用于您的操作系统和安装的.NET Framework 2018年的安全和质量汇总或安全仅 8 月更新。有关详细信息,请转到CVE-2018年-8356 |.NET Framework 安全功能绕过漏洞。
解决方法
要变通解决此问题,请尝试下列方法之一。
注意:根据受影响的应用程序和它的代码,下面的解决方法不可能有效。
-
如果您有关于如何启动流程的高级知识,通过运行过程PROCESS_QUERY_INFORMATION权限。
-
IIS 承载传统的 ASP 调用无论对于.NET COM 对象可能会收到"ActiveX 组件不能创建对象"错误:
-
如果您的 web 站点使用匿名身份验证:
-
更改 Web 站点的匿名身份验证凭据,才能使用"应用程序池标识"。
-
-
如果您的站点使用基本身份验证或 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 产品存在的问题。
适用范围
7 月 2018年.NET Framework 安全更新对于.NET Framework 3.5、 4.0、 4.5.2、 4.6、 4.6.1、 4.6.2、 4.7、 4.7.1 和 4.7.2 所有适用的受支持版本的 Windows 上