Stack Clash(編號(hào):CVE-2017-1000364),是Linux、BSD、Solaris和其他開(kāi)源系統(tǒng)中提升本地權(quán)限的漏洞。攻擊者可利用Stack Clash破壞這些操作系統(tǒng)的內(nèi)存管理,攻擊者可利用它破壞內(nèi)存并執(zhí)行任意代碼。這種本地權(quán)限升級(jí)安全漏洞還會(huì)給服務(wù)器主機(jī)提供商構(gòu)成嚴(yán)重的威脅,原因在于只要一個(gè)客戶能鉆這個(gè)漏洞的空子,就可以控制在同一臺(tái)服務(wù)器上運(yùn)行的其他客戶進(jìn)程。
本地權(quán)限提升影響多個(gè)系統(tǒng)目前,已有針對(duì)Linux和開(kāi)源distros的安全補(bǔ)丁,在i386或amd64上運(yùn)行Linux,OpenBSD,NetBSD,F(xiàn)reeBSD或Solaris的系統(tǒng)應(yīng)立即更新。
專(zhuān)家警告稱(chēng)攻擊者可能以這個(gè)漏洞來(lái)尋找其他漏洞,以便獲得最高權(quán)限執(zhí)行任意代碼。
該漏洞由Qualys研究者發(fā)現(xiàn),他們找到了七種利用該漏洞的可能,并給出了理論依據(jù)。并將這一研究過(guò)程稱(chēng)為‘本地權(quán)限提升’:
通過(guò)其中任意一種方式進(jìn)入到受破壞系統(tǒng)的攻擊者都可以利用Stack Clash漏洞,并獲得最高權(quán)限。該堆棧是程序運(yùn)行時(shí)的內(nèi)存區(qū)域,當(dāng)程序需要更多堆棧內(nèi)存時(shí),它就會(huì)自動(dòng)增加。如果這個(gè)區(qū)域增加過(guò)多,就會(huì)干擾到其他進(jìn)程的堆棧,也就是說(shuō),攻擊者可以人為操控該區(qū)域的內(nèi)存增長(zhǎng)以覆蓋其他內(nèi)存區(qū)域。
為什么叫做Stack Clash?”利用該漏洞的第一個(gè)步驟就是通過(guò)另一個(gè)內(nèi)存區(qū)域來(lái)造成內(nèi)存沖突。所以才有了這個(gè)名稱(chēng)。”分析指出,攻擊者會(huì)繞過(guò)Linux在2010年部署的堆棧保護(hù)。
利用該漏洞的理論依據(jù)如下:
用另一個(gè)內(nèi)存區(qū)域造成堆棧沖突:我們?cè)趯?shí)驗(yàn)堆棧到達(dá)另一個(gè)堆棧區(qū)域前或另一個(gè)內(nèi)存區(qū)域到達(dá)實(shí)驗(yàn)堆棧前進(jìn)行了內(nèi)存配置。
跳過(guò)堆棧保護(hù):將堆棧指示器從實(shí)驗(yàn)堆棧移動(dòng)到了另一個(gè)內(nèi)存區(qū)域,期間無(wú)需訪問(wèn)堆棧保護(hù)。
破壞堆?;蛄硪粋€(gè)堆棧:用另一個(gè)內(nèi)存區(qū)域覆蓋了實(shí)驗(yàn)堆棧,反之亦然。
可遠(yuǎn)程利用漏洞嗎?研究者們尚不知曉任何可遠(yuǎn)程利用該漏洞的應(yīng)用,不過(guò),他們不排除可遠(yuǎn)程利用Stack Clash漏洞的可能。
E安全建議為避免攻擊,E安全推薦將堆棧保護(hù)的容量至少擴(kuò)充到1M,以做緊急防護(hù)。建議用fstack-check選項(xiàng)將所有用戶區(qū)間的代碼重新編譯,以防止堆棧指示器被移至另一個(gè)內(nèi)存區(qū)域。