CODESYS超危缓冲区溢出漏洞可致远程代码执行
字数 1191 2025-08-18 11:39:30
CODESYS Web Server 缓冲区溢出漏洞(CVE-2020-10245)技术分析文档
漏洞概述
CVE-2020-10245是CODESYS Web Server中存在的一个高危基于堆的缓冲区溢出漏洞,CVSS v2评分为10分(最高危级别)。该漏洞允许远程、未经身份认证的攻击者造成服务器崩溃或执行任意代码。
受影响组件
- 受影响软件:CODESYS V3运行时系统
- 具体组件:CmpWebServerHandlerV3.dll(文件版本3.5.15.20)
- WebVisu功能:用于在通用web浏览器中显示CODESYS可视化界面
漏洞技术细节
漏洞位置
漏洞存在于CmpWebServerHandlerV3.dll库中,该库未能正确验证用户提交到web server URL端点的数据。
漏洞根源
-
内存分配错误:
MemGCGetSize函数在内存分配操作过程中向请求的分配大小添加了0x5c字节- 当处理异常大的分配请求时会导致整数溢出
-
触发方式:
- 攻击者可发送特制的
WEB_CLIENT_OPENCONNECTION消息 - 示例恶意请求格式:
|foo|-1|true| - 请求中的
-1(0xffffffff)会被解释为分配大小
- 攻击者可发送特制的
-
溢出机制:
- 系统尝试分配
-1(0xffffffff)字节 - 加上额外的0x5c字节后:0xffffffff + 0x5c = 0x5b(整数溢出)
- 实际分配了一个非常小的堆缓冲区而非预期的大缓冲区
- 系统尝试分配
攻击向量
-
攻击路径:
- 远程、未经身份验证的攻击者
- 通过向
/WebVisuV3端点发送特制请求
-
潜在影响:
- 导致web server崩溃(拒绝服务)
- 可能实现远程代码执行(RCE)
- 可能影响整个CODESYS运行时系统
漏洞验证与利用
PoC示例
安全专家已发布概念验证代码,可用于终止32位的CODESYSControlService.exe进程。
利用条件
- 目标系统运行受影响版本的CODESYS Web Server(3.5.15.40之前版本)
- 攻击者能够访问目标系统的web服务端口
修复方案
官方修复
CODESYS已在web server 3.5.15.40版本中修复该漏洞。
缓解措施
- 立即升级到CODESYS Web Server 3.5.15.40或更高版本
- 如无法立即升级,考虑以下临时措施:
- 限制对CODESYS Web Server的网络访问
- 禁用WebVisu功能(如果不需要)
- 在网络边界实施严格的输入验证
受影响版本范围
- 所有包含web server 3.5.15.40之前版本的CODESYS V3运行时系统
参考信息
- CVE编号:CVE-2020-10245
- CVSS v2评分:10.0(最高危)
- 漏洞类型:基于堆的缓冲区溢出
- 发现者:Tenable安全研究人员