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