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端点的数据。

漏洞根源

  1. 内存分配错误

    • MemGCGetSize函数在内存分配操作过程中向请求的分配大小添加了0x5c字节
    • 当处理异常大的分配请求时会导致整数溢出
  2. 触发方式

    • 攻击者可发送特制的WEB_CLIENT_OPENCONNECTION消息
    • 示例恶意请求格式:|foo|-1|true|
    • 请求中的-1(0xffffffff)会被解释为分配大小
  3. 溢出机制

    • 系统尝试分配-1(0xffffffff)字节
    • 加上额外的0x5c字节后:0xffffffff + 0x5c = 0x5b(整数溢出)
    • 实际分配了一个非常小的堆缓冲区而非预期的大缓冲区

攻击向量

  1. 攻击路径

    • 远程、未经身份验证的攻击者
    • 通过向/WebVisuV3端点发送特制请求
  2. 潜在影响

    • 导致web server崩溃(拒绝服务)
    • 可能实现远程代码执行(RCE)
    • 可能影响整个CODESYS运行时系统

漏洞验证与利用

PoC示例

安全专家已发布概念验证代码,可用于终止32位的CODESYSControlService.exe进程。

利用条件

  • 目标系统运行受影响版本的CODESYS Web Server(3.5.15.40之前版本)
  • 攻击者能够访问目标系统的web服务端口

修复方案

官方修复

CODESYS已在web server 3.5.15.40版本中修复该漏洞。

缓解措施

  1. 立即升级到CODESYS Web Server 3.5.15.40或更高版本
  2. 如无法立即升级,考虑以下临时措施:
    • 限制对CODESYS Web Server的网络访问
    • 禁用WebVisu功能(如果不需要)
    • 在网络边界实施严格的输入验证

受影响版本范围

  • 所有包含web server 3.5.15.40之前版本的CODESYS V3运行时系统

参考信息

  • CVE编号:CVE-2020-10245
  • CVSS v2评分:10.0(最高危)
  • 漏洞类型:基于堆的缓冲区溢出
  • 发现者:Tenable安全研究人员
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安全研究人员