近日,圖像處理庫ImageMagick曝出Yahoobleed漏洞,雅虎郵箱個人郵件圖片附件與身份憑證等面臨泄露風險。漏洞曝出后,雅虎棄用了這個圖像處理庫。
ImageMagick
ImageMagick是一個廣泛使用的開源圖像處理庫,自90年代就投入使用,可以讓用戶自主調整圖像大小,縮放、裁剪,以及給圖像加水印等。ImageMagick支持PHP,Python,Ruby,Perl,C ++等多種編程語言,可融入到各種項目、操作系統和應用之中,也包括雅虎、Facebook等大型網站。
這些年ImageMagick不斷曝出漏洞。 2014年5月,安全研究人員發現ImageMagick允許“惡意構造圖像強制Web服務器執行攻擊代碼”。2016年,又曝出了名為ImageTragick的0-day漏洞。利用這個漏洞,黑客可以往Web服務器上傳惡意構造的圖像,進而執行惡意代碼。ImageMagick擁有很多“社交媒體和博客站點”用戶,因此,其漏洞造成的影響也十分廣泛。2016年10月,Facebook因為ImageMagick漏洞支付了40,000美元的獎金。
Yahoobleed
上周,安全研究員Chris Evans又發現了ImageMagick的一個漏洞,僅需發送18個字節的利用代碼,就能令雅虎服務器泄露郵箱用戶的圖片。Evans因此獲得了Yahoo高達14,000美元的獎勵,也就是每個字節獎勵778美元。
Evans將這個漏洞命名為“Yahoobleed#1”(YB1,雅虎出血?),YB1會導致存儲在服務器內存中的圖片泄露。
該漏洞實際上存在于RLE(Utah Raster Toolkit Run Length Encoded)圖像格式中。攻擊者只需創建一個惡意的RLE圖像,并將其發送到受害者的電子郵箱,然后創建空RLE協議命令循環,就能造成信息泄露。
Evans演示了該漏洞PoC,即利用該漏洞攻擊雅虎電子郵件帳戶。他創建了一個包含18字節漏洞利用代碼的惡意圖像,并將其作為電子郵件附件發送給自己。一旦附件送達雅虎的電子郵件服務器,ImageMagick就對圖像進行處理,以生成縮略圖和預覽,但是由于執行了Evans的漏洞利用代碼,Imagemagick生成的圖像附件預覽是損壞的。點擊圖像附件后,會啟動圖像預覽窗格,展示仍儲存在服務器內存中的部分圖像信息,但不顯示原始圖像。
與越界讀取的Heartbleed與Cloudbleed漏洞不同,Yahoobleed漏洞利用的是未初始化或以前釋放過的內存內容。
Evans說:“以前的*bleed漏洞通常是越界讀取,但是Yahoobleed卻利用了未初始化的圖像內容。未初始化的圖像解碼buffer是客戶端呈現圖像的基礎。這就泄漏了服務器端的內存信息。與越界讀取相比,利用未初始化內容獲取信息更加隱蔽,因為它不會造成服務器崩潰。不過這種方式能夠獲取的信息也僅限于已釋放的堆。”
此外,Evans還發現了Yahoobleed#2(YB2)漏洞。這個漏洞出現的原因是雅虎未能及時安裝ImageMagick在2015年1月發布的關鍵補丁。YB1和YB2二者結合使用,可以讓攻擊者直接獲得Yahoo Mail用戶的瀏覽器Cookie,身份驗證token和個人圖片等信息。
Yahoobleed的修復也很簡單,通過如下過程就能實現:
(void)ResetMagickMemory(pixels,0,pixel_info_length);
雅虎棄用ImageMagick
在Evans向雅虎提交了18字節的PoC之后,雅虎認為ImageMagick的bug太多,修復很麻煩,因此決定不再進行修復,而是直接棄用。
向雅虎報告這個問題后,Evans又向ImageMagick團隊報告了漏洞。事實上,兩個月前,ImageMagick已經發布了ImageMagick 7.0.5-1版本,針對YB1和YB2漏洞進行修復。由于Yahoo Mail并未及時更新,才被Evans檢測出漏洞。
現在,Linux和其他下游用戶已經可以下載ImageMagick的新版本更新修復了。去年,與ImageMagick相關但獨立的GraphicsMagick也已經修補了相同的bug。要注意的是,使用ImageMagick圖片庫的其他大型Web服務可商仍可能受漏洞影響,建議盡快進行修復,更新到最新版本。
*參考來源:THN, AngelaY編譯,轉載請注明來自FreeBuf.COM