Poking holes in information hiding · Week 10
在軟體安全領域,即使地址空間隨機化ASLR技術已經不再是一個強力的防禦措施,信息泄露攻擊的出現使得單純的ASLR並不能有效地阻止攻擊者,但其仍然是很多使用偽隔離(pseudo-isolation)的防禦方式能夠有效工作的保障。這些防禦方式會將一些自身的元數據放置在一個地址隨機的內存區域,且在程序自身的代碼與數據中沒有此區域的指針引用,使得攻擊者無法通過信息泄露漏洞獲取其地址,從而保證自身的安全性。
而本文提出了一種全新的基於內存分配的方法Memory Allocation Oracle,本質上是一種Side-channel的做法,通過控制系統內存分配的大小值,觀察其是否能夠分配成功。在64-bit Linux上,glibc會使用mmap來直接分配較大的內存塊,而若在進程的虛擬地址空間中找不到連續的足夠大的空洞(holes),則會返回失敗。這樣一來,通過估計進程地址空間中holes的大小,再通過任意大小的內存分配,結合二分查找的方法,即可根據是否成功返回探測出程序中最大的hole。本文中定義了攻擊者的兩種Primitives,EAP(ephemeral allocation primitive)與PAP(persistent allocation primitive),分別對應分配後很快釋放以及分配後一直保持的2種能力。
本文隨後闡述了使用EAP與PAP完成信息泄露的流程,在僅有EAP的情況下,直接找到程序中最大的hole,並計算隱藏信息的位置;而在有EAP+PAP的情況下,程序能夠逐步地將所有的Holes全部佔用,從而探測出所有隱藏信息的位置;在僅有PAP的情況下,探測過程會比較複雜,本文開發了一種新的演算法來跟蹤每種情況對應的內存布局。
在實驗環節,本文使用污點分析的方式,尋找在攻擊者能夠任意內存讀寫的情況下,控制內存分配的Primitives。結果發現在測試的4種軟體Bind, lighttpd, nginx和mysql中,攻擊者都能夠獲得EAP和PAP的Primitives,進而完成信息泄露的目的,從而繞過現有的防禦措施,完成漏洞利用的過程。
推薦閱讀:
※獨立觀點:小米科技物流訂單數據」泄露」究竟誰之過
※這個小伙因WannaCry勒索軟體一夜成名,獲得一年免費披薩
※曾入侵CIA和FBI的黑客組織「Crackas With Attitude」成員獲刑5年
※國外知名評論系統Disqus 2012年被黑,官方現在才發現用戶數據泄漏了
TAG:信息安全 |