Schneider IGSS 远程漏洞分析

VSole2022-04-18 12:52:11

 01、前言

近期,启明星辰ADLab在工业控制系统漏洞监测中发现Schneider发布了交互式图形SCADA系统(Interactive Graphical SCADA System,简称IGSS)的高危漏洞公告和补丁,包括有缓冲区溢出和目录穿越等,NVD的评分高达9.8。ADLab研究员第一时间对其中的高危漏洞进行了详细分析和实际验证,同时还发现了一个新的高危漏洞并协助厂商进行了修复。

 02、漏洞基本信息

根据Schneider的漏洞公告,这些漏洞的基本信息如下:

受影响的产品:V15.0.0.22020 and prior

存在漏洞

  • CVE-2022-24312,目录穿越
  • CVE-2022-24311,目录穿越
  • CVE-2022-24310,缓冲区溢出

受影响的产品:V15.0.0.22073 and prior

存在漏洞

  • CVE-2022-24324,缓冲区溢出

触发方式:网络

CVSS v3评分: 9.8

 03、漏洞分析与验证

3.1 CVE-2022-24311(24312)分析

这两个漏洞存在于IGSS V15.0.0.22020 and prior版本,其漏洞描述为:“存在对受限制目录路径名的不当限制,可导致通过在文件末尾添加或在数据服务器上下文中创建新文件来修改现有文件,当攻击者通过网络发送特定数据时,可能会导致远程代码执行”。

通过分析,我们发现这两个漏洞位于sub_49FF20函数,该函数的伪代码如下:

跟进sub_4A0C50函数,伪代码如下所示:

可以看出,该函数内部进行了一系列文件操作,但对传入该函数的参数没有做有效的安全检查,因此可以被操控来向SCADA服务器写入任意文件。

同理,跟进sub_4A0C50函数,伪代码如下所示:

可以看出,该函数的内部同样也没有对传入的参数进行安全检查,因此也可以被操控来向SCADA服务器写入任意文件。

根据上述分析我们进行了验证,成功向SCADA服务器写入任意内容的文件。

对于上述两个漏洞,Schneider官方发布了补丁,其修复方式如下:

具体来讲,“Prepend file”和“Append file”分支在进入具体功能函数前调用了额外的sub_4A16F0函数。该函数传入了参数 v6+72,此参数对应被操作文件的文件路径名。跟进该函数,其伪代码如下:

该函数对文件路径名进行了限制:(1)限制(v6+72)长度,大小要满足<=0x100;(2)限制(v6+72)内容,不能有目录穿越的特征符。通过这种限制,补丁防止了恶意数据导致的跳转目录,把文件操作限制在当前目录下。

3.2 CVE-2022-24310分析

该漏洞存在于IGSS V15.0.0.22020 and prior版本,漏洞的描述为:“存在整数溢出,当攻击者发送多条精心准备的消息时,该漏洞可能会导致基于堆的缓冲区溢出,导致拒绝服务并可能导致远程代码执行”。

通过分析,我们发现这个漏洞存在于sub_49FA30函数,该函数的伪代码如下:

从上图可以看出,该函数的主要逻辑是:首先,通过realloc给*(this+48)的堆增加*(a1+0xBA)数值的大小;然后,使用memcpy向(*(v5 +52)+*(v5 + 48))赋值*(a2+0xBA)长度的(a2+190)缓冲区内容,即填充realloc新分配出的内存空间。

经过分析,我们发现:在*(a2+ 0xBA)+*(this + 52)的加法操作中,两个操作数均为无符号类型,且*(a2+0xBA)可控。因此,通过控制*(a2+0xBA)的值,可使得*(a2 + 0xBA)+*(this + 52)产生整数上溢,从而导致realloc新申请内存的容量小于后续memcpy的参数*(a2+0xBA),后续执行memcpy内存拷贝操作时就会触发堆溢出。

根据上述分析我们进行了验证,成功触发了SCADA服务器的堆破坏。

对于该漏洞,Schneider官方发布了补丁,其修复方式如下:

具体来讲,在进行realloc操作执行前,先判断*(a2+0xBA)的值是否在[0,0xF42]的区间范围内,从而避免整数溢出。

3.3 CVE-2022-24324分析

在对IGSS V15.0.0.22073 and prior的补丁分析中,ADLab研究员还发现了一个新的缓存区溢出漏洞。该漏洞可以远程无条件触发,ADLab及时报告了厂商并协助厂商进行了修复,厂商对该漏洞的CVSS3评分为严重。

Schneider已经发布了新补丁来修复这个高危漏洞。相关补丁和更多的内容可在官方提供的公告中查询:

https://download.schneider-electric.com/files?p_enDocType=Security+and+Safety+Notice&p_File_Name=SEVD-2022-102-01_IGSS_Security_Notification.pdf&p_Doc_Ref=SEVD-2022-102-01

 04、修复建议

经过ADLab研究员的分析和验证,上述高危漏洞都可以通过网络进行无条件的远程触发,具有很大的危害性。目前官方已经发布了补丁,强烈建议使用IGGS的工业用户立即升级到最新版本:15.0.0.22074。

针对工业控制系统,CISA提供了如下的通用建议:

  • 尽量减少在公网暴露工控设备或者系统;
  • 将控制系统网络和远程设备置于防火墙之后,并和办公网络隔离;
  • 当需要远程访问时,采用类似VPN的安全访问方式。

参考链接:

[1] SEVD-2022-102-01, IGSS Data Server (V15.0.0.22073 and prior)

https://download.schneider-electric.com/files?p_Doc_Ref=SEVD-2022-102-01 

[2] SEVD-2022-039-01, IGSS Data Server (V15.0.0.22020 and prior)

https://download.schneider-electric.com/files?p_Doc_Ref=SEVD-2022-039-01

漏洞缓冲区溢出
本作品采用《CC 协议》,转载必须注明作者和本文链接
Android是美国谷歌(Google)公司和开放手持设备联盟(简称OHA)共同开发的一套以Linux为基础的开源操作系统。WLAN是使用在其中的一个无线连接模块。 Android中的WLAN存在缓冲区溢出漏洞。攻击者可利用该漏洞执行代码或造成拒绝服务。
漏洞分析 CVE-2010-0249
2023-11-25 17:50:17
漏洞分析 CVE-2010-0249
开源软件Dnsmasq的七个缺陷可能会导致DNS缓存中毒攻击和远程执行代码。研究人员发现了dnsmasq中存在的一系列缺陷,该软件用于缓存家用和商用路由器和服务器的域名系统响应。如果加以利用,则这些缺陷可以链接在一起,以允许远程执行代码,拒绝服务和其他攻击。研究人员将这组漏洞标记为“ DNSpooq”,这是DNS欺骗,“网络流量的诡异间谍”概念和dnsmasq末尾的“ q”的组合。
近日,安识科技A-Team团队监测到一则 Apache 官方发布安全补丁的通告,共修复了2个安全漏洞,其中包含1个高危漏洞的信息。 对此,安识科技建议广大用户及时升级到安全版本,并做好资产自查以及预防工作,以免遭受黑客攻击。
360漏洞云监测到Pulse Connect Secure存在多个严重或高危漏洞
360漏洞云监测到WebKit2GTK存在多个高危漏洞
未经身份验证的攻击者可通过构造恶意的请求利用CVE-2021-22986漏洞入侵受影响的F5系统,建议尽快安装安全更新补丁或采取临时缓解措施加固系统。处置: 1、及时升级F5 BIG-IP / BIG-IQ 升级至安全版本 2、配置访问控制策略,仅允许白名的IP访问F5管理界面。
2022年1月6日,360漏洞云团队监测到 SonicWall发布安全公告,修复了两个存在于 SonicWall SonicOS中的中危漏洞
漏洞名称:“永恒之蓝”漏洞
‍新漏洞突破了苹果 M1 芯片的最后一道安全线。
VSole
网络安全专家