CVE-2025-11786CVE-2025-11786是Circutor SGE-PLC1000和SGE-PLC50设备中发现的一个严重安全漏洞,CVSS评分高达9.8分(满分10分)。该漏洞存在于设备的SetUserPassword()函数中,是一个基于栈的缓冲区溢出漏洞。攻击者可以通过构造特定的newPassword参数值,绕过安全验证,直接将恶意Shell命令注入到系统调用中并执行。由于该漏洞无需认证即可利用,且攻击复杂度低,攻击者可以在不需要任何用户交互的情况下远程执行任意代码。SGE-PLC系列设备是广泛应用于工业控制系统和智能电网管理的重要设备,此漏洞的存在可能导致整个工业网络被攻击者完全控制,造成严重的生产安全风险和数据泄露风险。INCIBE-CERT协调披露了此漏洞,建议受影响用户立即采取防护措施。
该漏洞的根本原因在于SetUserPassword()函数对用户输入的newPassword参数缺乏安全处理。函数使用sprintf()函数将newPassword参数直接拼接到Shell命令字符串中,而没有对输入进行任何长度检查、特殊字符转义或输入验证。随后,该命令字符串被直接传递给system()函数执行。由于sprintf()函数不进行边界检查,当newPassword参数长度超过目标缓冲区大小时,就会发生栈缓冲区溢出,覆盖相邻的栈内存区域。攻击者可以利用这一特性,通过在newPassword中嵌入Shell元字符和命令(如分号、管道符、反引号等),构造恶意的命令序列。当system()执行该命令时,注入的命令将以与应用程序相同的权限运行,通常是root权限。这使得攻击者能够完全控制设备,执行任意操作,包括读取敏感配置、修改系统参数、安装后门或进行横向移动攻击整个工业网络。