« All blog posts

绕过Windows DCOM服务器安全功能

13.06.2022


21.07.2022更新:Prosys Sentrol OPC UA & Classic SDK完成修改。

21.06.2022更新:Prosys OPC Classic客户端现已修复。

Microsoft在DCOM中发现了一个漏洞 (KB5004442, CVE-2021-26414),并决定实施强化更改,这些更改将被应用于下一次Windows更新。

这一变化影响到使用远程连接的OPC Classic应用程序,OPC基金会也发布了有关此问题的通知.。

更新的时间表如下:

2021年 6月8日 硬化更改可用,但默认情况下已禁用。
2022年6月14日 更新中默认启用强化更改。您仍然可以禁用更改。
2023年3月14日 Windows更新中将强制执行强化更改。

这些更改将影响OPC Classic客户端应用程序的使用,这些客户端连接到另一台计算机上运行的OPC Classic服务器(使用Distributed COM)。同一台计算机内的连接不受影响(使用COM)

当服务器计算机中的Windows更新后,强化将生效。因此,需要更新在其他计算机上运行的客户端应用程序。

受影响的Prosys OPC产品

硬化变化直接影响s

  • OPC UA网关版本1.5.8及更低版本
  • Prosys OPC客户端版本2.0及更低版本
  • 使用Prosys Sentrol 7.4版或更早版本构建的OPC Classic客户端应用程序

固定产品

克服自己产品中的问题

Prosys Sentrol 7.5.0及更高版本默认情况下将以所需的alPacketIntegrity安全级别来初始化COM,因此您只需使用新的Sentrol库重新编译应用程序。

如果您仍在使用Prosys Sentrol 7.4.0或更早版本,则必须在OPC Classic客户端应用程序的项目源代码中添加以下内容:

program Xxx;

uses
  PsComUtils,
  ...

begin
  PsInitComSecurity(alPacketIntegrity, ilIdentify);
  ...

在这些版本中,ComSecurity默认使用alConnect级别初始化。这在过去足以进行远程连接,但在Windows强化后,服务器将不再接受该级别的连接。

请注意,只要您的应用程序在同一台计算机上通过OPC Classic进行连接,尽管有此设置,连接仍应正常工作。

移至OPC UA

解决此问题的另一种方法是避免OPC应用程序之间的远程DCOM连接。相反,您应该考虑使用OPC UA连接,例如将OPC UA网关应用为隧道器。

或者,您应该考虑在自己的应用程序中支持OPC UA,Prosys Sentrol也可实现这类程序应用。

启用和禁用更改

可以使用以下Windows注册表项启用和禁用更改(直到2023年3月14日):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\AppCompat\
RequireIntegrityActivationAuthenticationLevel (DWORD value)

值1表示启用强化,0表示禁用强化。

请注意,您必须重新启动计算机才能使注册表项中的更改生效。

Registry Key

该功能已于2021年 6月8日推出,因此,如果您的Windows操作系统中有最新更新,您可以试用。

测试

例如,通过将Prosys OPC客户端版本2.0远程连接到Prosys OPC Simulation Server,您应该能够看到效果。(注意最新的2.1版本已经正确初始化COM,因此它也可以连接到被加固的服务器。) 如果在服务器中禁用了强化,并且已将DCOM和防火墙配置为启用连接,则应该能够查看服务器列表并连接到仿真服务器。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\AppCompat\
RequireIntegrityActivationAuthenticationLevel=0 (DWORD value)

(更改后重新启动)

Registry Key

确保已在服务器所在计算机的DCOM配置中打开对OpcEnum服务的访问权限。它还必须至少以“连接”身份验证级别运行。

在服务器中启用强化后,客户端应用程序中会出现“拒绝访问”错误。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\AppCompat\
RequireIntegrityActivationAuthenticationLevel=1 (DWORD value)

(更改后重新启动)

Registry Key

或者,您可以尝试只连接到服务器。如果客户端计算机中也安装了ProgID,则可以使用ProgID,例如’Prosys.OPC.Simulation‘;否则,您需要在服务器字段中使用CLSID,例如’{EB3A5F8E-7938-464C-AEFA-898335B1E6B5}‘。

Registry Key

在服务器中启用强化后,客户端应用程序中会出现“拒绝访问”错误。

您还可以在服务器计算机中启用DCOM错误日志记录,以验证这一点。为此,请添加以下注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\
CallFailureLoggingLevel=1 (DWORD Value)

之后,您应该在Event Viewer - Windows Logs-System中看到以下错误(您可以通过在“开始”菜单中键入’Event Viewer’来启动):

Event Viewer (单击放大)

最后,当您有一个已正确初始化COM安全属性的应用程序时,您应该能够再次连接。请继续关注,我们将很快更新Prosys OPC客户端。

Jouni Aro

Jouni Aro

Chief Technology Officer

Email: jouni.aro@prosysopc.com

Expertise and responsibility areas: OPC & OPC UA product development, project work and customer support

Tags:

comments powered by Disqus

Prosys OPC Ltd

Prosys OPC是OPC和OPC UA软件领域中拥有20年技术经验的行业佼佼者。 OPC和OPC UA(Unified Architecture)是工业和高科技公司使用的通信标准。

了解更多关于我们的信息 »

最新博客文章

SimServer How To #3: 使用OPC UA客户端模拟服务器上的数据更改

关于如何使用OPC UA客户端在OPC UA服务器上写入新数据的分步教程(分为两部分)。

如何在生产分析项目中取得成功

工业4.0分析项目将在未来几年内成为显著增长的业务。阅读如何绕过最常见的陷阱以及成功交付项目。

Prosys OPC UA Forge为什么是工业4.0工厂的重要组成部分

如今,边缘计算应用程序提供了比OPC UA聚合服务器更广泛的功能。事实上,它是工业4.0工厂的主要组成部分。"

查看所有博客文章 »

-->