Schneider IGSS 遠程漏洞分析

發布時間 2022-04-15

一、前言


近期,啟明星辰ADLab在工業控制系統漏洞監測中發現Schneider發布了交互式圖形SCADA系統(Interactive Graphical SCADA System,簡稱IGSS)的高危漏洞公告和補丁,包括有緩沖區溢出和目錄穿越等,NVD的評分高達9.8。ADLab研究員第一時間對其中的高危漏洞進行了詳細分析和實際驗證,同時還發現了一個新的高危漏洞并協助廠商進行了修復。


二、漏洞基本信息



根據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

三、漏洞分析與驗證


3.1 CVE-2022-24311(24312)分析


這兩個漏洞存在于IGSS V15.0.0.22020 and prior版本,其漏洞描述為:“存在對受限制目錄路徑名的不當限制,可導致通過在文件末尾添加或在數據服務器上下文中創建新文件來修改現有文件,當攻擊者通過網絡發送特定數據時,可能會導致遠程代碼執行”。


通過分析,我們發現這兩個漏洞位于sub_49FF20函數,該函數的偽代碼如下:


圖片1.png


跟進sub_4A0C50函數,偽代碼如下所示:


圖片2.png



可以看出,該函數內部進行了一系列文件操作,但對傳入該函數的參數沒有做有效的安全檢查,因此可以被操控來向SCADA服務器寫入任意文件。


同理,跟進sub_4A0C50函數,偽代碼如下所示:


圖片3.png



可以看出,該函數的內部同樣也沒有對傳入的參數進行安全檢查,因此也可以被操控來向SCADA服務器寫入任意文件。


根據上述分析我們進行了驗證,成功向SCADA服務器寫入任意內容的文件。


圖片4.png


對于上述兩個漏洞,Schneider官方發布了補丁,其修復方式如下:


圖片5.png


具體來講,“Prepend file”和“Append file”分支在進入具體功能函數前調用了額外的sub_4A16F0函數。該函數傳入了參數 v6+72,此參數對應被操作文件的文件路徑名。跟進該函數,其偽代碼如下:


圖片6.png


該函數對文件路徑名進行了限制:(1)限制(v6+72)長度,大小要滿足<=0x100;(2)限制(v6+72)內容,不能有目錄穿越的特征符。通過這種限制,補丁防止了惡意數據導致的跳轉目錄,把文件操作限制在當前目錄下。


3.2 CVE-2022-24310分析


該漏洞存在于IGSS V15.0.0.22020 and prior版本,漏洞的描述為:“存在整數溢出,當攻擊者發送多條精心準備的消息時,該漏洞可能會導致基于堆的緩沖區溢出,導致拒絕服務并可能導致遠程代碼執行”。

通過分析,我們發現這個漏洞存在于sub_49FA30函數,該函數的偽代碼如下:


圖片7.png


從上圖可以看出,該函數的主要邏輯是:首先,通過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服務器的堆破壞。


圖片8.png

對于該漏洞,Schneider官方發布了補丁,其修復方式如下:


圖片9.png


具體來講,在進行realloc操作執行前,先判斷*(a2+0xBA)的值是否在[0,0xF42]的區間范圍內,從而避免整數溢出。


3.3 CVE-2022-24324分析


在對IGSS V15.0.0.22073 and prior的補丁分析中,ADLab研究員還發現了一個新的緩存區溢出漏洞。該漏洞可以遠程無條件觸發,ADLab及時報告了廠商并協助廠商進行了修復,廠商對該漏洞的CVSS3評分為嚴重。


圖片11.png


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


四、修復建議


經過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