修复了由 MS 的最新安全更新引起的问题 (Win 10 KB4056892)
Posted
技术标签:
【中文标题】修复了由 MS 的最新安全更新引起的问题 (Win 10 KB4056892)【英文标题】:Fix for issues caused by latest security update from MS (Win 10 KB4056892) 【发布时间】:2018-01-16 22:23:23 【问题描述】:我有一个使用 Activex 服务器的应用程序(用 VB6 编写 - 请不要起火)。
有一个工作站组件和两个 activex 服务器组件。机器上的全局 DCOM 权限设置为“Connect”和“Identify”,服务器组件上的身份验证设置为“None”,与 DCOM 中的 activex 服务器关联的身份在相关机器上具有完全的管理员权限.
global dcom 中还有一些条目授予匿名登录本地和远程访问权限,以便客户端 exe 和 activex 服务器之间的回调正常运行。
为了让它与客户端一起工作,VB6 必须对 CoInitialize 进行显式调用:
Dim lngHr As Long
Dim lngAuthn As Long
lngAuthn = RPC_C_AUTHN_DEFAULT
blnSecurityCalled = True
lngHr = CoInitializeSecurity(ByVal API_NULL, -1, _
lngAuthn, ByVal API_NULL, _
RPC_C_AUTHN_LEVEL_NONE, RPC_C_IMP_LEVEL_ANONYMOUS, _
API_NULL, EOAC_NONE, ByVal API_NULL)
If (S_OK <> lngHr) Then
MsgBox "CoInitializeSecurity failed with error code: 0x" _
& Trim$(Str$(Hex(lngHr))), vbCritical, _
"Application Initialization Failure"
Exit Sub
在最新的 Windows 更新引入了 MS 记录的问题之前,这工作得很好。 MS 建议将 RPC_C_AUTHN_LEVEL_NONE 替换为 RPC_C_AUTHN_LEVEL_CALL,但这还不够。
Coinitialize 调用没有返回错误代码,因为在这种情况下我应该看到“CoinitializeSecurity Failed”消息。
相反,当必须创建对服务器组件的引用时,需要几个步骤:
ErrSubject = "Calling ClsServer "
Set Server = CreateObject("ASIServer.clsServer")
此语句失败。它返回“需要对象”消息。如果我通过 VB6 IDE(不运行 Coinitialize)运行完全相同的代码,则应用程序运行时不会出现错误。
这只发生在安装了 Windows 10 更新的情况下。如果我卸载它,一切都会恢复正常。
只是想知道是否有人对如何通过此补丁继续使用该应用程序有任何想法,因为谁知道 MS 何时会正式修复他们在 1 月 3 日创建的问题。
【问题讨论】:
【参考方案1】:感谢您的所有建议。
我已确认,当 Microsoft 发布带有修复程序的更新时,它将解决问题。
他们正在推出它——只是目前还没有适用于所有版本的 Windows。任何早于 Windows 8 的系统都不会出现此问题。
【讨论】:
【参考方案2】:试试RPC_C_AUTHN_LEVEL_CONNECT
和RPC_C_IMP_LEVEL_IDENTIFY
(而不是RPC_C_IMP_LEVEL_ANONYMOUS
)看看是否有帮助。
【讨论】:
以上是关于修复了由 MS 的最新安全更新引起的问题 (Win 10 KB4056892)的主要内容,如果未能解决你的问题,请参考以下文章
漏洞预警IBM WebSphere XXE 漏洞 (CVE-2020-4949)