解決方案陸續出爐
簡單地說,目前的中央處理器與作業系統為了提升資安保障,會在各程式與使用者之間築起一道「牆」,讓彼此無法存取對方的記憶體資料。然而管理這些「牆」的中央處理器,卻存在著漏洞,讓惡意程式能夠翻牆讀取其他程式專屬的資料,舉例來說,惡意程式能夠透過漏洞竊取儲存於瀏覽器內的信用卡資訊。
這個漏洞可以分為3種不同的變種,其特徵分別如下:
變種1:bounds check bypass(CVE-2017-5753)
此漏洞會影響已編譯應用程式中的特定程序,可以用於Javascript瀏覽器攻擊。
變種2:branch target injection(CVE-2017-5715)
此漏洞能繞過Hypervisor虛擬機器,對雲端虛擬主機進行攻擊,可透過更新中央處理器微碼,或以軟體方式進行防護。
變種3:rogue data cache load(CVE-2017-5754)
攻擊者能夠透過特定程式碼存取原本沒有存取權限的記憶體。
而上述第一、第二種合稱為Spectre,第三種則稱為Meltdown。
自從Spectre、Meltdown的問題揭露以後,各大作業系統、瀏覽器等軟體,以及中央處理器、主機板等硬體廠商,皆陸續釋出更新檔以修補漏洞,然而比較讓人頭痛的問題是,為了修補漏洞,可能需要犧牲許多效能做為代價。
無痛修正變種2漏洞
Google表示考量到修正問題可能會對效能帶來衝擊,所以面對第二型態的變種漏洞時,他們決定採取公司內技術基礎設施團隊(Technical Infrastructure)成員Paul Turner所研發的Retpoline技術,透過修改程式的二進位檔來防止攻擊。
Retpoline的原理是透過修改程式,確保攻擊者無法感染執行檔,如此一來不需禁止可移的執行檔,或是改變硬體功能,就可以發揮防護的效果。重要的是,使用者不需修改程式碼,只需將現有的程式碼透過對應的編譯器重新編譯即可,能夠省下相當多部署時間。
根據Google的測試,在搭配其他如軟體分支預測提示(software branch prediction hints)等最佳化技術後,Retpoline幾乎不會造成效能耗損。Goolge也表示,他們從12月開始就將Retpoline套用至所有Google雲端平台服務,在整個更新的過程中,並沒有收到使用者回報發生與更新或效能相關的問題,因此更能印證不會對效能造成明顯影響。
Google除了將這個解決方案套用至旗下的基礎設施之外,也將編譯器以開源的方式公開分享,讓這項技術能夠保護更多人,對於Retpoline有興趣的讀者,也可以進一步閱讀白皮書。
加入電腦王Facebook粉絲團