SDL(Simple DirectMedia Layer)是一套開放源代碼的跨平臺(tái)多媒體開發(fā)庫,提供了數(shù)種控制圖像、聲音、輸出入的函數(shù),讓開發(fā)者只要用相同或是相似的代碼就可以開發(fā)出跨多個(gè)平臺(tái)(Linux、Windows、Mac OS X等)的應(yīng)用軟件。
目前,SDL多用于開發(fā)游戲、模擬器、媒體播放器等多媒體應(yīng)用領(lǐng)域。SDL已被用于開發(fā)了數(shù)百種游戲,包括由Valve制作的游戲以及VLC媒體播放器。
最近,思科Talos團(tuán)隊(duì)的研究人員在SDL中發(fā)現(xiàn)了兩個(gè)高危的遠(yuǎn)程代碼執(zhí)行漏洞。
研究員Yves Younan發(fā)現(xiàn),SDL受到內(nèi)存損壞漏洞的影響,可以通過使用庫來處理特制文件,之后就能在目標(biāo)機(jī)器上遠(yuǎn)程執(zhí)行任意代碼。
Talos團(tuán)隊(duì)表示,攻擊中會(huì)用到一個(gè)可以觸發(fā)漏洞的XCF文件。 XCF是流行的圖像編輯工具GIMP所使用的格式。
第一個(gè)漏洞是一個(gè)整數(shù)溢出(CVE-2017-2888)漏洞,可以通過調(diào)用“CreateRGBSurface”函數(shù)創(chuàng)建新的RGB曲線時(shí)觸發(fā)。
思科在其咨詢中表示:“傳遞給該函數(shù)的足夠大的寬度和高度值可能會(huì)導(dǎo)致乘法運(yùn)算溢出,從而導(dǎo)致分配的內(nèi)存太少,隨后的內(nèi)存寫入就會(huì)超出范圍。”
第二個(gè)漏洞是SDL_image映像文件加載庫的XCF屬性處理功能中的一個(gè)緩沖區(qū)溢出漏洞(CVE-2017-2887)。
思科說:“這個(gè)漏洞是由于從文件中讀取的數(shù)據(jù)和隨后使用的數(shù)據(jù)之間的驗(yàn)證不足造成。在這種情況下,從XCF鏡像文件中讀取的“id”和“length”屬性值無需驗(yàn)證就直接被使用,這可能會(huì)導(dǎo)致基于堆棧的緩沖區(qū)溢出。”
這些漏洞影響的產(chǎn)品包括SDL 2.0.5和SDL_image 2.0.1。思科表示,在SDL 2.0.6中這兩個(gè)漏洞似乎被修復(fù)了,但在該版本的發(fā)行說明中并未提及任何安全修復(fù)。