當前位置:
首頁 > 新聞 > 獨家首發 | CVE-2017-11816 GDI信息泄露漏洞分析

獨家首發 | CVE-2017-11816 GDI信息泄露漏洞分析

*本文原創作者:比爾.蓋茨,本文屬於FreeBuf原創獎勵計劃,禁止轉載



我的漏洞被別人先報了,所以就把這個漏洞的細節公布一下吧。寫的不是很詳細,有poc大家可以自己調一調。


這個漏洞主要是因為GDI32種在處理metafile META_DIBSTRETCHBLT record 時候內存拷貝,越界讀,導致的信息泄露漏洞。


圖一


在GDI32中,bMetaGetDIBInfo調用SignedCJSCANto函數,並計算buffer的大小。這個buffer的大小由圖一中標有下劃線的值來確定。分別是:0x100019 0x200 0x8.


在SignedCJSCAN函數中, SignedCJSCAN調用CJSCAN函數,


在圖二中,a1初始值是0x10001c,a3是0x8(即上面所說的位置的值)


在CJSCAN函數中,經過遍歷a1(初始值是0x100019)經過UlongLongTolong ,ULongAdd函數來進行數值轉換。到最後

變數a4 的值是0x10001c,如下圖所示



圖二


經過圖二中的函數計算,得到buffer的大小,0x10001c*0x200=0x20003800,入圖3所示。(0x200即poc中藍色下滑線的值)


圖三


然後就是申請內存,內存大小就是上面的步驟計算出來的值,0x2000c000,如圖4



圖四

然後MRBDIB::vInit 函數拷貝 wmf record數據,從poc 0x11d2偏移位置開始拷貝,如圖5,由於拷貝的大小沒有經過嚴格交驗,導致拷貝的內存大小可以任意被控制,最後導致讀越界,從而造成了,堆數據泄露,等其他敏感信息泄露漏洞。



圖五


這個漏洞可以在wordpad outlook直接觸發,如果想在edge,ie中觸發需要修改一下poc中的某些數據



測試環境:win7 32bit


漏洞影響系統:win7 到win10 32 bit ,64bit


重現方式:將poc文件,拖拽到wordpad中即可觸發漏洞。


poc 地址:https://pastebin.com/G5BE5v5Q


把十六進位數據貼到010editor,然後保存成wmf文件格式即可。


*本文原創作者:比爾.蓋茨,本文屬於FreeBuf原創獎勵計劃,禁止轉載


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

TAG:FreeBuf |