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