Schneider Electric Interactive Graphical SCADA System(IGSS)是法国施耐德电气(Schneider Electric)公司的一套用于监控和控制工业过程的SCADA(数据采集与监控系统)系统。
Part1 漏洞状态
漏洞细节 | 漏洞POC | 漏洞EXP | 在野利用 |
有 | 有 | 无 | 无 |
Part2 漏洞描述
未经身份验证的远程攻击者可以通过多种途径强制 IGSSdataServer.exe 分配大量内存来存储攻击者控制的数据。攻击者可以提供少量数据来导致缓冲区过度读取情况,从而产生内存读取访问冲突,这是由 IGSSdataServer.exe 中实现的异常处理程序处理的。但是,异常处理程序不会释放攻击者分配的内存,攻击者可以反复向 IGSSdataServer.exe 发送特制消息以耗尽其内存,从而可能导致拒绝服务。
漏洞名称 | IGSS内存泄露导致的拒绝服务 |
CVE编号 | CVE-2022-24314 |
漏洞类型 | 缓冲区错误 |
漏洞等级 | 高危(7.5) |
受影响的产品 | SchneiderElectricInteractive Graphical SCADA System (IGSS) Definition <=15.0.0.22021 |
公开状态 | 公开 |
时间线 | 发布时间:2022-02-09 |
Part3 漏洞复现
1.实验环境渗透主机:kail靶机环境:win10软件版本:IGSS v15.0
2.涉及工具X64dbgPython2
3.漏洞复现1)在靶机中运行IGSS
点击开始,如下图所示:
2)POC 验证:python igss_dataserver_memleak.py -t 192.168.0.104 -p 12401 -v
3)查看结果,查看:
IGSS Master -> Runtime and Diagnostics -> 详细状态中的数据服务器内存使用情况,查看IGSSdataServer.exe服务器日志:FetchControl_RMS::appendRequest,内存不足。
停止 POC 后,内存也未释放:
Part4 漏洞分析
使用x64dbg 附加进程调试:
分析此段代码大致流程为:
1)接受攻击者发送的数据判断是否分配内存:
接收的数据和发送的数据一致:
2) 内存分配:
分配的大小结合POC 分析为:0x4000000
3)判断内存是否分配成功,成功则调用memcpy,触发异常:分配大量内存来存储攻击者控制的数据。攻击者可以提供少量数据来导致缓冲区过度读取情况,从而产生内存读取访问冲突。
4) 分配失败则调用错误处理输出日志:
FetchControl_RMS::appendRequest,内存不足。
5)结合POC 分析:
攻击者可以反复连接IGSSdataServer.exe 发送特制消息,分配内存,断开socket连接后IGSSdataServer.exe 也未进行内存释放,导致耗尽其内存,从而可能导致拒绝服务。
Part5 修复建议
更新到 IGSS 数据服务器版本 15.0.0.22021 或更高版本。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)