导语:CVE-2020-10245漏洞存在于CODESYS Web 服务器中,它是一个基于堆的缓冲区溢出,其危险等级是最高级10级,攻击者利用它来进行非法攻击几乎不需要掌握任何技能。
CVE-2020-10245漏洞存在于CODESYS Web 服务器中,它是一个基于堆的缓冲区溢出,其危险等级是最高级10级,攻击者利用它来进行非法攻击几乎不需要掌握任何技能。
CODESYS是一个用于工程控制系统的自动化软件。目前它的Web服务器中有一个严重缺陷,这个缺陷可能导致没有经过身份验证的远程攻击者有机会破坏服务器或者做一些远程执行代码的操作。
这个漏洞在CVSS v.2的漏洞严重性等级中可以归到最高级别10级,并且,如果想利用这个漏洞的话,几乎不需要攻击者掌握任何技能。它是一个基于堆的缓冲区溢出,这种漏洞使得进程的内存区域被用来存储动态变量(堆),导致进程的内存区域不堪重负,从而使其他进程无法进行访问。
该漏洞(CVE-2020-10245)存在于CODESYS Web服务器中,该服务器用于在Web浏览器中显示CODESYS系统的可视化屏幕。
研究人员表示:
这可能会导致Web服务器的崩溃,导致其拒绝服务或被用于远程执行代码。由于Web服务器是CODESYS运行时系统的一部分,因此也有可能导致整个系统在运行的时候发生无法预料的情况。
CODESYS的官网显示,它是一种软件套件,自动化专家会将它用作编程控制器应用程序的开发环境,通常是在工业环境中使用的。它是由德国公司Smart Software Solutions(3S)开发,使得自动化解决方案的工程更加便捷。它是一个独立于平台的开发环境,与可编程逻辑控制器(PLC)硬件和许多其他公司的自动化组件都是可兼容的。
漏洞详情
有一个问题是,名为CmpWebServerHandlerV3.dll(文件版本3.5.15.20)的Web服务器库没有办法正确的把发送Web服务器URL端点的用户提供的数据来进行验证。根据Tenable本周发布的分析来看,攻击者可以通过发送到CmpWebServerHandlerV3组件的WEB_CLIENT_OPENCONNECTION消息来请求非常大的内存分配。
更具体一些来说的话,这个分析中指出来:
这个缺陷是由于MemGCGetSize函数在内存分配进行操作时,会将0x5c字节添加到所请求的分配大小中,那么多余的0x5c字节似乎是用于内存垃圾回收的。MemGCGetSize函数在SysMemAllocData函数中调用,许多CODESYS组件都是使用这个函数从堆中来进行内存的分配。
Tenable还进一步提到,“当CmpWebServerHandlerV3组件处于状态0时,如果尝试为通信缓冲区分配-1(0xffffffff)个字节,那么当你调用SysMemAllocData函数时,内存分配大小就会溢出,并且实际上会分配一个小的(0xffffffff + 0x5c = 0x5b)堆缓冲区。”
在GitHub上发布的概念验证(PoC)中,利用这个漏洞是可以终止Web服务器中的32位“CODESYSControlService.exe”进程的。
在CODESYS的第三版本中,Web服务器(CmpWebServer和CmpWebServerHandler)是CODESYS系统运行的时候可选的部分。该公司表示,包含CPU版本V3.5.15.40之前的Web服务器的CODESYS V3运行时系统的所有版本都会受到这个漏洞的影响,而这种影响与CPU类型或操作系统完全没有关系。不过目前也存在一个补丁程序,因此强烈建议用户把版本更新到最新版本也就是V3.5.15.40。
本文翻译自:https://threatpost.com/critical-codesys-bug-remote-code-execution/154213/如若转载,请注明原文地址: