上周 Intel 曝出影響 2011 年以來幾乎所有芯片的漏洞 ZombieLoad,利用該漏洞,攻擊者可以對芯片發(fā)起邊信道攻擊,在同一 CPU 上執(zhí)行惡意進程,進而獲取 CPU 的微架構(gòu)緩沖器中的存儲器內(nèi)容。
攻擊者可以訪問存儲緩沖區(qū),加載端口并填充緩沖區(qū)的陳舊內(nèi)容,這些緩沖區(qū)可能包含屬于另一個進程的數(shù)據(jù)或源自不同安全上下文的數(shù)據(jù)。因此,在用戶空間進程之間、內(nèi)核與用戶空間之間、虛擬機之間或虛擬機與主機環(huán)境之間可能都會發(fā)生意外的內(nèi)存泄露。
ZombieLoad 與其它推測性執(zhí)行邊信道攻擊不同,因為攻擊者無法定位特定數(shù)據(jù)。攻擊者可以定期對緩沖區(qū)中的內(nèi)容進行采樣,但是在采集樣本時無法控制緩沖區(qū)中存在的數(shù)據(jù)。因此,需要額外的工作來將數(shù)據(jù)收集并重建為有意義的數(shù)據(jù)集。這也是 ZombieLoad 比較復雜的地方。
雖然 ZombieLoad 得到有價值數(shù)據(jù)的成本比較高,但是各大公司都十分重視這個漏洞,畢竟它影響了 2011 年以來幾乎所有芯片,打擊范圍十分廣泛。
Intel 自己已經(jīng)發(fā)布了微代碼,從架構(gòu)上緩解該問題,其它科技公司如蘋果、微軟與谷歌也都相繼發(fā)布了補丁。
但同時也有一些公司認為光有補丁并沒有什么作用,比如 Red Hat 認為在云場景上 ZombieLoad 危險很大,因為你完全無法控制相鄰虛擬機中的用戶正在運行的內(nèi)容,云安全公司 Twistlock 的首席技術官 John Morello 也指出:“這個漏洞可能對密集的、多租戶的公有云提供商產(chǎn)生最大的影響。”
另一邊,Ubuntu 目前也已經(jīng)給出了補丁,但是其在安全公告中表示,如果用戶系統(tǒng)中有不受信任或潛在的惡意代碼,則建議其禁用超線程功能。
如果您的處理器不支持超線程(也稱為對稱多線程(SMT)),則內(nèi)核和相應的 Intel 微代碼軟件包更新將完全解決 MDS(ZombieLoad)漏洞。如果您的處理器支持超線程并且啟用了超線程,則 MDS 不會完全緩解。
所以,如果想要完全緩解漏洞,你需要暫時放棄 CPU 的超線程能力。事實上,蘋果和谷歌都已經(jīng)警告 macOS 和 Chrome OS 用戶禁用超線程可獲得全面保護,并且谷歌現(xiàn)在默認從 Chrome OS 74 開始禁用超線程。
但是禁用超線程的性能代價實在有點高,結(jié)合對比一下 ZombieLoad 微代碼與補丁對系統(tǒng)性能影響的數(shù)據(jù):
Intel 發(fā)言人表示,大部分打過補丁的設備在最壞的情況下可能會受到 3% 的性能影響,而在數(shù)據(jù)中心環(huán)境中可能會是 9%。
另一邊,PostgreSQL 基準測試發(fā)現(xiàn),禁用超線程后,性能下降了近 40%;Ngnix 基準測試的性能下降了約 34%;Zombieload 的研究人員表示禁用超線程會使某些工作負載的性能下降 30% 至 40%。
安全還是性能,如何選擇呢?