远程未经身份验证的攻击者可以利用针对工程控制系统的CODESYS自动化软件的Web服务器中基于堆的严重缓冲区溢出漏洞,使服务器崩溃或执行任意代码。
CODESYS是由德国公司Smart Software Solutions开发的软件平台,在自动化行业中用于编程控制器应用程序。
CODESYS WebVisu使用CODESYS Web服务器在服务器中显示CODESYS可视化屏幕。 普通的网页浏览器。
跟踪为CVE-2020-10245的漏洞很容易利用,在CVSS v.2上,其严重等级为10(十分之十)。堆溢出条件是缓冲区溢出的一种,其中内存的堆部分可能被超出缓冲区的内容覆盖。通常, 使用诸如malloc之类的例程分配缓冲区()。
“特定的精心设计的请求可能会导致基于堆的缓冲区溢出。此外,这可能会使Web服务器崩溃,导致拒绝服务状况,或者可能被用于远程代码执行。” CODESYS发布的建议。
“特定的精心设计的请求可能会导致基于堆的缓冲区溢出。此外,这可能会使Web服务器崩溃,导致拒绝服务状况,或者可能被用于远程代码执行。作为网络服务器是CODESYS运行时系统的一部分,这可能会导致整个运行时系统发生无法预料的行为。”
问题出在CmpWebServerHandlerV3.dll(文件版本3.5.15.20)库中,该库无法正确验证发送到Web服务器URL端点的用户提供的数据。
“由于对发送到CODESYS V3 Web服务器URL端点/ WebVisuV3的用户提供的数据进行了不正确的验证,因此CmpWebServerHandlerV3.dll(文件版本3.5.15.20)中存在堆溢出漏洞。” Tenable发布的分析。
“缺陷是由于在内存分配操作过程中,MemGCGetSize函数将0x5c字节添加到请求的分配大小这一事实,”
攻击者可以通过发送到CmpWebServerHandlerV3组件的WEB_CLIENT_OPENCONNECTION消息请求很大的内存分配大小来利用此漏洞。
“一个 未经认证,远程攻击者可以通过发送到CmpWebServerHandlerV3组件的WEB_CLIENT_OPENCONNECTION消息来请求非常大的内存分配大小(即0xffffffff):| foo | -1 | true |” 继续分析。
“ CmpWebServerHandlerV3组件(处于状态0时)尝试为通信缓冲区分配-1(0xffffffff)个字节。调用SysMemAllocData函数时,内存分配大小会溢出,并且实际上会分配一个小的(0xffffffff + 0x5c = 0x5b)堆缓冲区。”
专家还发布了PoC漏洞利用代码,该代码可用于终止32位CODESYSControlService.exe。
该漏洞影响包含V3.5.15.40之前版本的Web服务器的CODESYS V3运行时系统的所有版本,V3.5.15.40版本中包含一个修复程序。
*编译:Domino
*来自:securityaffairs