ASLR 101 - 資安
By Skylar DavisLinda
at 2020-11-10T10:48
at 2020-11-10T10:48
Table of Contents
跟朋友聊到貴單位最近出現的漏洞時 提到了 ASLR
順手筆記加分享一下
在 overflow 系列的攻擊中 有一種情境是 heap-overflow[0]
也就是程式動態申請記憶體時 存取額外空間的一種攻擊方式
在 virtual memory 架構中[1] 程式透過 OS 申請一塊記憶體空間 (e.g. 1KB)
拿到的是虛擬的記憶體位址 (e.g 0x5566) 之後透過 OS 轉換成真實記憶體位址
OS 分配的記憶體位址是可以預測的 也就是第一次與第二次申請 會拿到連續的記憶體區塊
程式每次執行 第一次申請拿到的記憶體區塊也是固定的
導致當成是出現 heap-overflow 攻擊時 就可以推測敏感資訊放在哪個記憶體區間中
像是將密碼存放在記憶體中 或者動態產生的 API Key 等等
Address Space Layout Randomization (ASLR) 則是一種將上述記憶體產生方式做一點變化
也就是程式碼每次執行、每次申請記憶體時 拿到的虛擬記憶體空間會有所不同
但需要注意 ASLR 並非解決 heap-overflow 而是緩解
代表當出現漏洞的時候 減少攻擊可被利用的程度
當 100% 可行的攻擊 透過 ASLR 的防護後
攻擊的可行程度降低為 0.1 ~ 1% 的概念 (每 100 ~ 1000 次才成功攻擊一次)
[0]: https://en.wikipedia.org/wiki/Heap_overflow
[1]: https://en.wikipedia.org/wiki/Virtual_memory
--
順手筆記加分享一下
在 overflow 系列的攻擊中 有一種情境是 heap-overflow[0]
也就是程式動態申請記憶體時 存取額外空間的一種攻擊方式
在 virtual memory 架構中[1] 程式透過 OS 申請一塊記憶體空間 (e.g. 1KB)
拿到的是虛擬的記憶體位址 (e.g 0x5566) 之後透過 OS 轉換成真實記憶體位址
OS 分配的記憶體位址是可以預測的 也就是第一次與第二次申請 會拿到連續的記憶體區塊
程式每次執行 第一次申請拿到的記憶體區塊也是固定的
導致當成是出現 heap-overflow 攻擊時 就可以推測敏感資訊放在哪個記憶體區間中
像是將密碼存放在記憶體中 或者動態產生的 API Key 等等
Address Space Layout Randomization (ASLR) 則是一種將上述記憶體產生方式做一點變化
也就是程式碼每次執行、每次申請記憶體時 拿到的虛擬記憶體空間會有所不同
但需要注意 ASLR 並非解決 heap-overflow 而是緩解
代表當出現漏洞的時候 減少攻擊可被利用的程度
當 100% 可行的攻擊 透過 ASLR 的防護後
攻擊的可行程度降低為 0.1 ~ 1% 的概念 (每 100 ~ 1000 次才成功攻擊一次)
[0]: https://en.wikipedia.org/wiki/Heap_overflow
[1]: https://en.wikipedia.org/wiki/Virtual_memory
--
Tags:
資安
All Comments
By Jacob
at 2020-11-13T00:03
at 2020-11-13T00:03
By Mason
at 2020-11-15T13:18
at 2020-11-15T13:18
By Quintina
at 2020-11-18T02:33
at 2020-11-18T02:33
By Edward Lewis
at 2020-11-20T15:48
at 2020-11-20T15:48
Related Posts
如何在微。服務中儲存敏感資訊
By Kelly
at 2020-11-09T00:04
at 2020-11-09T00:04
GPG 101 簡單、沒意義教學
By Tristan Cohan
at 2020-10-29T23:23
at 2020-10-29T23:23
網頁被DDOS如何加入身份驗證
By Edith
at 2020-10-17T14:24
at 2020-10-17T14:24
We Hacked Apple for 3 Months
By Tracy
at 2020-10-13T10:57
at 2020-10-13T10:57
分享器借別人
By Daniel
at 2020-09-14T01:19
at 2020-09-14T01:19