去年披露預測執行漏洞的計算機安全專家再揭新型邊信道攻擊方法,可繞過現代計算機系統的安全防護。
幽靈和熔斷這樣的邊信道攻擊利用芯片設計缺陷收集特權信息,新披露的方法則與硬件無關,只涉及Windows和Linux操作系統頁緩存,一定條件下可遠程利用。
研究人員在論文中描述了通過操作系統頁緩存監視特定進程內存訪問的方法。
我們呈現了一組不需要任何計時器的本地攻擊,利用操作系統調用(Linux上的mincore和Windows上的QueryWorkingSetEx)誘出頁緩存信息。我們還證明了頁緩存元數據可向遠程攻擊者泄露信息,在惡意本地發送者進程和外部攻擊者之間形成隱秘信道。
獲取到這些本應保密的信息后,攻擊者便可用PHP口令生成腳本執行沙箱保護規避、接口修改和擊鍵計時等本地攻擊。該技術還可用于執行遠程攻擊,但需要根據具體目標和硬件做些調整,可能要加入硬件計時測量操作。研究人員認為該頁緩存邊信道攻擊的性能可與硬件緩存攻擊相媲美。
簡言之,惡意用戶和脆弱系統中的惡意軟件均可利用該邊信道攻擊篡改軟件或抽取其他應用的秘密數據,或在特定條件下遠程操作。
Windows內核已針對該攻擊做了更新,用戶很快就會收到更新推送。
操作系統的頁緩存在RAM中存儲應用程序和操作系統經常用到的大量可執行程序、庫和各種各樣的數據,省去不停從硬盤存取的開銷,能夠大幅提升計算機的作業速度。
緩存頁可被同時映射到多個進程的虛擬內存區。比如說,一個代碼庫可只載入物理內存一次,而被映射到多個應用的虛擬內存空間,省出物理RAM和加載時間。
這種內存共享和緩存的按需載入載出機制便為攻擊打開了大門:可以窺探其他進程的訪問模式,基于硬盤和緩存間復制或移動的信息抽取出數據。
本地還是遠程?
本地攻擊中,該邊信道攻擊技術假定黑客和受害者在同一個操作系統或在共享文件的不同沙箱中運行進程。確定內存中哪些頁面被調入頁緩存時,若是Linux操作系統,便用mincore系統調用;若是Windows系統,便用QueryWorkingSetEx。
遠程攻擊需測定軟頁面錯誤:應用程序訪問的內存有效但當時并未給該內存分配物理頁面,導致操作系統調入必要頁面時發生的錯誤。攻擊者在遠程服務器上執行程序測量公共文件訪問中的延遲。
研究人員表示,此項研究主要出于學術目的,已經做了負責任披露,目前至少Windows系統是打了補丁的。
本研究表明,在操作系統層面,我們遇到了硬件層面上相同的問題。
Windows 10 內部預覽版 Build 18305 已修復了該漏洞,但補丁何時公開發布尚未可知。
修復要求QueryWorkingSetEx系統調用設置PROCESS_QUERY_INFORMATION標志位而非PROCESS_QUERY_LIMITED_INFORMATION標志,讓權限較小的進程無法直接訪問頁緩存信息。另外還需隱去 Share Count (共享計數)信息,讓攻擊者無法通過頁面工作區的進程數間接觀測其他進程的變動。
Linux安全團隊據稱也注意到了該問題,但研究人員的論文中并未提到相關緩解工作。曾演示過PHP口令生成攻擊的phpMyFAQ開發人員也被告知了該新邊信道攻擊問題,正在開發修復補丁。