热门问题
时间线
聊天
视角
返回導向程式設計
来自维基百科,自由的百科全书
Remove ads
返回導向編程(英語:Return-Oriented Programming,縮寫:ROP)是計算機安全中的一種漏洞利用技術,該技術允許攻擊者在程序啟用了安全保護技術(如堆棧不可執行)的情況下控制程序執行流,執行惡意代碼[1]。其核心思想是通過棧緩衝區溢出等方式控制堆棧調用以劫持程序控制流並執行針對性的機器語言指令序列(稱為Gadgets)[2]。所謂 gadgets 就是以 ret 結尾的指令序列,通過這些指令序列,我們可以修改某些地址的內容,方便控制程序的執行流程。[3]
此條目需要擴充。 (2013年9月21日) |
分類
依據對於 gadget 利用的形式,返回導向編程主要有以下幾種類型:
- ret2text
- ret2shellcode
- ret2syscall
- ret2libc
- ret2dl_resolve
- ret2VDSO
- SROP
- BROP
背景
ROP是一種高級的堆棧溢出攻擊。這類攻擊往往利用操作堆棧調用時的程序漏洞,通常是緩衝區溢出。在緩衝區溢出中,在將數據存入內存前未能正確檢查適當範圍的函數會收到多於正常承受範圍的數據,如果數據將寫入棧,多餘的數據會溢出為函數變量分配的空間並覆蓋替換返回地址(return address)。在原本用以重定向控制流並返回給調用者的地址被覆蓋替換後,控制流將改寫到新分配的地址。
標準的緩衝區溢出攻擊,攻擊者只需要寫出針對堆棧部分的代碼(有效載荷)。直到1990年代後期,主流操作系統沒有為該類攻擊作出任何防範,微軟直到2004年才提供了緩衝區溢出保護。操作系統最終使用數據執行保護技術來修補這個漏洞,該技術標記內存數據不可執行。 啟用數據執行保護,機器將拒絕執行任何內存中user級別可寫區域的代碼。該技術的硬件支持不久用以加強該防範。
相關條目
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads