ASLR保護失效 大規模網路攻擊即將來襲
ASLR是一種針對緩衝區溢出的安全保護技術,通過對堆、棧、共享庫映射等線性區布局的隨機化,通過增加攻擊者預測目的地址的難度,防止攻擊者直接定位攻擊代碼位置,達到阻止溢出攻擊的目的,讓系統免受普通攻擊,例如緩衝區溢出、返回導向編程技術(Return-oriented programming,ROP)攻擊等。ASLR是大多操作系統長期使用的系統防禦機制,如今Windows、Linux、macOS、iOS和Andriod等主流操作系統都已採用了該技術。
現在,阿姆斯特丹自由大學的研究員Ben Gras和他的同事Kaveh Razavi,發現了能破解ASLR的技術,這意味著:軟體應用中發現的任何常見的內存漏洞,都可能導致我們的PC或智能手機被更深層次的控制。而且,由於這種攻擊利用的是晶元而不是某一款軟體,所以,通過軟體更新來修復該漏洞是根本不可能的,這也意味著無論我們的設備裝的什麼操作系統,都將被攻擊。
ASLR保護失效的危險到底有大?攻擊者僅用JavaScript就能攻擊你的設備,也就是說,我們每訪問一次惡意網站都會觸發一次網路攻擊。網路安全團隊VUSec就發布了一段關於如何在火狐瀏覽器中運行JavaScript注入攻擊的視頻。
傳統上,黑客們只能通過猜測來進行不斷試錯的攻擊,得到被攻擊者的內存布局信息,這樣就可以知道代碼或者數據放在哪裡,來定位並進行攻擊。比如可以找到ROP裡面的gadget,如下圖所示。
而ASLR保護的失效,讓某些漏洞,比如內存信息泄露的情況下,攻擊者會得到部分內存信息,比如某些代碼指針。傳統的ASLR只能隨機化整個segment,比如棧、堆、或者代碼區。這時攻擊者可以通過泄露的地址信息來推導別的信息,如另外一個函數的地址等。這樣整個segment的地址都可以推導出來,進而得到更多信息,VUSec就是利用了計算機硬體最深層次的核心——英特爾、AMD、Nvidia和三星等公司製造的晶元。
VUSec進行ASLR攻擊的原理
VUSec所展示的這次攻擊,就是利用了晶元與內存交互方式的漏洞,晶元有一個名為內存管理單元(MMU)的部件,專門負責映射計算機在內存中存儲程序的地址。為了跟蹤那些地址,MMU會不斷地檢查一個名為頁表(page table)的目錄。
VUSec此次在網頁攻擊中利用的頁表目錄的漏洞,通常設備會將頁表存儲在處理器緩存中,讓最常訪問的信息隨時可被計算核調用的一小塊內存。這種做法可以提升晶元處理速度和效率。
但是,網頁上運行的一段惡意JavaScript代碼,同樣可以寫入那塊緩存。最關鍵的是,它還能同時查看MMU的工作速度,通過密切監視MMU,JavaScript代碼可以找出其自身地址—。
VUSec研究人員的攻擊就是將MMU的速度變成了一條暴露行蹤的線索。攻擊代碼覆蓋緩存,每次覆蓋一個內存單元,直到它看到MMU的速度慢下來。這個跡象表明,無論緩存的哪個部分被覆蓋,它都是MMU在尋找的頁表的一塊――MMU的速度之所以慢下來,是因為它要回過去頭找隨機存取存儲器(RAM)中的頁表副本,而不是找處理器緩存中的頁表。
MMU要執行四次單獨的頁表查詢,才能找到任給代碼段的物理地址。因此,攻擊會覆蓋緩存四次,找出緩存中有一部分頁表的四個地方。每次,惡意程序都會留意MMU速度慢下來的那一刻。MMU多久以後出現速度慢下來這個現象,這實際上給了黑客線索,當設備將攻擊代碼從緩存拷貝到內存時,就能清楚惡意代碼自己在緩存中的地址,因而清楚其在RAM中的位置――這正是ASLR竭力隱藏起來、不讓黑客看到的那種信息。
這種攻擊好比是老式的撬竊保險箱的盜賊,他們邊慢慢轉動保險箱的撥盤,邊用聽診器留意動靜。
Ben Gras說:「緩存就像是保險箱的齒輪,它會發出讓罪犯得以破解的密碼的微小聲音線索。」
所以想讓ASLR再度恢復其以前的保護效果,恐怕不是操作系統或瀏覽器升級能做到的,對這些晶元地功能重新進行設計才是根本解決之道。
演示視頻
fast verson - 騰訊視頻 https://v.qq.com/x/page/p0375efw3yy.html
Cache 演示視頻 - 騰訊視頻 https://v.qq.com/x/page/v03756vfj33.html
晶元漏洞的應對之策
就在三個多月前,VUSec就已聯繫了荷蘭國家網路安全中心,該中心隨即又聯繫了所有受影響的晶元製造商和軟體公司,包括英特爾、AMD、三星、NVIDIA、微軟、蘋果、谷歌和Mozilla,但是為了保護用戶,研究人員給了這些公司足夠的時間來解決該問題,而不是一發現就公之於眾,另外研究人員也沒有發布演示攻擊的任何代碼。不過他們警告,經驗老到的黑客可以在短短几周內通過逆向工程,破解他們披露的那種攻擊技術。
蘋果已經開始著手緩解該威脅並且發布了旨在強化Safari的軟體更新,但並未揭示該更新到底做了什麼。蘋果發言人表示,他們還向使用其晶元的那些公司建議聯合起來共同應對這個威脅。
徹底的修復版最終需要更換硬體,而不是更換軟體。眾多設備需要採用新架構的新晶元,以便將MMU及其頁表與處理器的緩存分開來。
Ben Gras說:「由於這是個底層問題,上面的軟體層可以讓這個缺陷更難被人鑽空子,但是無法消除它。」
而英特爾、微軟和Mozilla對這個問題卻反應冷漠。
在微軟發給《連線》雜誌的一份聲明稱:「我們已查明,它不是一個安全問題。」英特爾也表示:「這個問題並不代表基於英特爾架構的系統的安全性出現了重大變化。」
來自這三家公司的發言人都同時指出,這個漏洞只有結合其他攻擊才會帶來真正的威脅。而三星、NVIDIA、AMD和Google更是對這個問題沒有任何的回復。
Yossi Oren表示:「如果科技公司不認真重視ASLR攻擊,那很快黑客就可以利用最常見的方法來對我們的操作系統就行大規模攻擊,到時我們將毫無還手之力。」
為了應對這個威脅,Ben Gras建議了一些緩解之計,比如你可以安裝插件,像是火狐的NoScript,或者Chrome的ScriptSafe,來封鎖網頁上的JavaScript,另外瀏覽器開發商應該可以調低它們允許腳本在時間度量方面的精準性,阻止腳本監視MMU的速度。
不過要徹底的防範ASLR攻擊,最終還是需要更換晶元,而不是在軟體上浪費時間。生產晶元的公司需要重新設計新的晶元,以便將MMU及其頁表與處理器的緩存分開來。
本文參考來源於wired,如若轉載,請註明來源於嘶吼: http://www.4hou.com/technology/3397.html 更多內容請關注「嘶吼專業版——Pro4hou」
推薦閱讀: