91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

發布時間:2021-12-22 21:34:08 來源:億速云 閱讀:130 作者:柒染 欄目:安全技術

今天就跟大家聊聊有關工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

0x1 漏洞信息

CNVD-ID:CNVD-2018-00995

CVE ID:CVE-2018-7471 

某公司工業組態軟件存在整數溢出漏洞,該漏洞是由于stgopenstorage讀取失敗,返回的錯誤代碼超出int在32位系統中的范圍,攻擊者可利用該漏洞執行任意代碼。

補丁信息:http://www.kingview.com/news_info.php?num=1000656

漏洞發布:http://www.cnvd.org.cn/flaw/show/CNVD-2018-00995

0x2 OpenStorage函數說明

OpenStorage加載結構化存儲的文件,函數返回HRESULT類型變量。函數原型如下:

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析    

返回的結果為長整形:當函數讀取正常時,返回值為0,讀取失敗,返回長整型整數

函數說明參考MSDN:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa380024(v=vs.85).aspx

0x3查找漏洞函數

根據補丁對比,將漏洞組件確定為Touchvewocx.ocx。經分析,該模塊有五個函數有變化,其中三個進行了修改,逐一進行分析。

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

3.1 0x100223C0

CViewManager::LoadDocInfor(CViewManager *this,CPicDocument *pd)

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

放大來看,主要是增加0x10022780部分的判斷程序塊。  

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析    

3.1.1 補丁前

.text:100223C0 var_814         = dword ptr -814h
.text:100223C0var_810         = dword ptr -810h    -int 32
.text:100223C0 pwcsName        = dword ptr -80Ch
.text:100223C0 ppstgOpen       = dword ptr -808h    

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

var_810(v25)是一個值為負數的int32(函數調用錯誤是,返回一個負值,其高位為1)變量,系統為64位時,負數擴展高位補F。

3.1.2 補丁后

返回值為dword 類型,返回若不為S_OK,返回值轉換為Cstring(whar_t)后,進行異常處理。

.text:100223C0sc              = dword ptr -810h
.text:100223C0 lpsz            = dword ptr -80Ch
.text:100223C0 lpStorage       = dword ptr -808h

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

3.2 0x10039530

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

修復后:   

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

將字符串改為wchar    

3.3 0x10151880

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

修補前:   

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

修補后:

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

if ( StgIsStorageFile(lpsz) == 1 )
  {
    sc =StgCreateDocfile(lpsz, 0x30022u, 0, &lpStorage);
    if ( sc< 0 || !lpStorage )
      sc =StgCreateDocfile(lpsz, 0x30000u, 0, &lpStorage);
  }
  else
  {
    sc =StgOpenStorage(lpsz, 0, 0x10022u, 0, 0, &lpStorage);
    if ( sc< 0 || !lpStorage )
      sc =StgOpenStorage(lpsz, 0, 0x10000u, 0, 0, &lpStorage);
  }
  if ( sc )
  {
    sc = 1;
    v62 = 0;
   LOBYTE(v114) = 6;
   AFX_EXCEPTION_LINK::~AFX_EXCEPTION_LINK(&_afxExceptionLink);
   LOBYTE(v114) = 5;
   CPicDocument::~CPicDocument(&PicDoc);
   LOBYTE(v114) = 4;
   CFileException::~CFileException(&e);
   LOBYTE(v114) = 3;    
CString (&message);
   LOBYTE(v114) = 2;
    CString (&failSz);
   LOBYTE(v114) = 1;
    CString (&pd_picName);
   LOBYTE(v114) = 0;    
CString (&viewfilename);
v114 = -1;   
CString (&filename);
    v4 =v62;
  }

0x4 脆弱ActiveX接口確定

Touchvewocx的接口如下:    

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

函數調用路徑:   

工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析

可以基本確定漏洞ActiveX接口為SetProjectPath    

ActiveX組件Touchvewocx.ocx接口函數SetProjectPath(string*)調用OpenStorage( )讀取失敗是,異常返回長整型(32位系統32位int,64位系統,64位int),函數給返回值分配dword型變量,在32位系統中剛好滿足,64位系統中直接截斷,造成異常。    

看完上述內容,你們對工業組態軟件整數溢出漏洞CVE-2018-7471的實例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呼玛县| 彩票| 拉萨市| 红桥区| 清原| 化隆| 泾阳县| 读书| 泸州市| 富蕴县| 盐源县| 昌黎县| 疏附县| 武陟县| 庄河市| 新和县| 灵山县| 南陵县| 榆社县| 三河市| 随州市| 沁阳市| 城口县| 临西县| 平山县| 双牌县| 贵阳市| 房产| 娱乐| 白水县| 循化| 恩施市| 新干县| 天全县| 凯里市| 齐河县| 化州市| 上饶市| 闸北区| 丹凤县| 松潘县|