幾名安全研究人員發表了一篇論文,介紹了一種基於位翻轉漏洞 Rowhammer,並且將其威脅從記憶體完整性缺失擴充套件到記憶體資訊洩露領域的技術 RAMBleed,表明位翻轉的利用能力遠超出當前人們的想象。
RAMBleed 是一種側通道攻擊,攻擊者可以讀取其它程式中的實體記憶體。研究者介紹,這一技術利用了幾年前就出現的位翻轉漏洞 Rowhammer,這是一種故障攻擊,攻擊者使用特定的儲存器訪問序列,使得記憶體出現位翻轉,也就是 bit 值(0/1)改變。由於攻擊者不直接訪問更改的記憶體位置,因此 CPU 或作業系統一般不會察覺到問題。雖然這種位翻轉技術不太好控制,但是其能力已被應用於沙箱逃逸、對作業系統和虛擬機器管理程式的提權攻擊、DoS 與加密協議故障注入等攻擊。
過去人們認為 Rowhammer 攻擊都是隻能夠破壞記憶體的完整性,也就是說,攻擊者使用 Rowhammer 將有限的寫入原語獲取到其它無法訪問的記憶體中,然後修改該記憶體的內容,而只要通過記憶體完整性檢查就可以緩解這種攻擊,比如使用以保護記憶體完整性為目標的記憶體或者帶有糾錯碼(ECC)的記憶體。特別是糾錯碼技術,一直被認為是防止 Rowhammer 的有效手段,它可以在檢測到位翻轉時將其糾正。雖然近期有證據表明攻擊者可以繞過 ECC 機制,使得在糾錯後仍可觀察到的位翻轉,但成功糾正翻轉仍然被認為是良性的,沒有任何安全隱患。
但是研究者認為這樣的想法不可靠,於是論文提出兩個問題:
Rowhammer 構成的威脅是否僅限於記憶體完整性缺失?
糾正位翻轉的安全隱患是什麼?即使 ECC 記憶體糾正了所有翻轉位,攻擊者是否可以使用 Rowhammer 來破壞機密性?
結果表明位翻轉的利用能力遠超出當前人們的想象,位翻轉漏洞 Rowhammer 的威脅不僅僅是記憶體完整性缺失,它還可以用於獲取記憶體資訊。
研究人員研究出了一種 RAMBleed 攻擊方法,這是一種側通道攻擊,通過觀察 Rowhammer 引發的位翻轉,可以推斷出附近 DRAM 行中的值,因此可以讀出屬於其它程式的實體記憶體,論文中他們還演示了使用 RAMBleed 對 OpenSSH 的攻擊,併成功獲取了洩漏的 2048 位 RSA 金鑰。
此外,與 Rowhammer 不同,RAMBleed 不需要持久的位翻轉,因此伺服器機器常用的 ECC 記憶體對於緩解該攻擊是無效的。
研究人員將在 2020 年 5 月舉行的第 41 屆 IEEE 安全和隱私研討會上發表題為“RAMBleed:在沒有訪問它們的情況下讀取記憶體位”(RAMBleed: Reading Bits in Memory Without Accessing Them)的論文,進一步介紹該攻擊手法。
論文地址:
https://rambleed.com
來源:開源中國