Schneider IGSS 远程漏洞分析

admin 2022年4月23日03:13:27评论123 views字数 2826阅读9分25秒阅读模式

更多安全资讯和分析文章请关注启明星辰ADLab微信公众号及官方网站(adlab.venustech.com.cn)











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函数,该函数的伪代码如下:

Schneider IGSS 远程漏洞分析

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

Schneider IGSS 远程漏洞分析

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

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

Schneider IGSS 远程漏洞分析

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

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

Schneider IGSS 远程漏洞分析


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

Schneider IGSS 远程漏洞分析

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

Schneider IGSS 远程漏洞分析

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

3.2 CVE-2022-24310分析

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

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

Schneider IGSS 远程漏洞分析

从上图可以看出,该函数的主要逻辑是:首先,通过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 IGSS 远程漏洞分析

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

Schneider IGSS 远程漏洞分析

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

3.3 CVE-2022-24324分析

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

Schneider IGSS 远程漏洞分析


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






启明星辰积极防御实验室(ADLab)





ADLab成立于1999年,是中国安全行业最早成立的攻防技术研究实验室之一,微软MAPP计划核心成员,“黑雀攻击”概念首推者。截止目前,ADLab已通过CVE累计发布安全漏洞近1100个,通过 CNVD/CNNVD累计发布安全漏洞2000余个,持续保持国际网络安全领域一流水准。实验室研究方向涵盖操作系统与应用系统安全研究、移动智能终端安全研究、物联网智能设备安全研究、Web安全研究、工控系统安全研究、云安全研究。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等






Schneider IGSS 远程漏洞分析

原文始发于微信公众号(ADLab):Schneider IGSS 远程漏洞分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月23日03:13:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Schneider IGSS 远程漏洞分析http://cn-sec.com/archives/916033.html

发表评论

匿名网友 填写信息