返回導向編程

面向返回編程(英語:Return-Oriented Programming,縮寫:ROP)是計算機安全漏洞利用技術,該技術允許攻擊者在安全防禦的情況下執行代碼,如不可執行的記憶體和代碼簽名。

基本介紹

  • 中文名:返回導向編程
  • 外文名:Return-Oriented Programming
  • 縮寫:ROP
簡介,背景,堆疊溢出攻擊,漏洞利用,數據執行保護,

簡介

攻擊者控制堆疊調用以劫持程式控制流並執行針對性的機器語言指令序列(稱為Gadgets)。 每一段gadget通常結束於return指令,並位於共享庫代碼中的子程式。系列調用這些代碼,攻擊者可以在擁有更簡單攻擊防範的程式內執行任意操作。

背景

堆疊溢出攻擊

ROP是一種高級的堆疊溢出攻擊。這類攻擊往往利用操作堆疊調用時的程式漏洞,通常是緩衝區溢出。在緩衝區溢出中,在將數據存入記憶體前未能正確檢查適當範圍的函式會收到多於正常承受範圍的數據,如果數據將寫入棧,多餘的數據會溢出為函式變數分配的空間並覆蓋替換返回地址(return address)。在原本用以重定向控制流並返回給調用者的地址被覆蓋替換後,控制流將改寫到新分配的地址。
標準的緩衝區溢出攻擊,攻擊者只需要寫出針對堆疊部分的代碼(有效載荷)。直到1990年代後期,主流作業系統沒有為該類攻擊作出任何防範,微軟直到2004年才提供了緩衝區溢出保護。作業系統最終使用數據執行保護技術來修補這個漏洞,該技術標記記憶體數據不可執行。 啟用數據執行保護,機器將拒絕執行任何記憶體中user級別可寫區域的代碼。該技術的硬體支持不久用以加強該防範。

漏洞利用

漏洞利用(英語:Exploit,本意為“利用”)是計算機安全術語,指的是利用程式中的某些漏洞,來得到計算機的控制權(使自己編寫的代碼越過具有漏洞的程式的限制,從而獲得運行許可權)。在英語中,本詞也是名詞,表示為了利用漏洞而編寫的攻擊程式,即漏洞利用程式。
經常還可以看到名為ExploitMe的程式。這樣的程式是故意編寫的具有安全漏洞的程式,通常是為了練習寫Exploit程式。

數據執行保護

數據執行保護,簡稱“DEP”,英文全稱為“Data Execution Prevention”,是一組在存儲器上運行額外檢查的硬體軟體技術,有助於防止惡意程式碼在系統上運行。
數據執行保護(DEP)是一項安全性功能,可協助避免病毒與其他安全性威脅所造成的損害。
電腦程式預留了一部分計算機存儲器供數據使用,另一部分則供程式的指令使用。黑客可以嘗試以欺騙手法讓程式運行放置在計算機存儲器中的有害數據,並將其視為指令。此時黑客便可以獲取對您計算機的控制權。
DEP可透過監視程式來協助保護計算機,確保程式能夠安全地使用計算機存儲器。如果DEP發現有某程式正嘗試運行數據用存儲器區塊中的指令,DEP便會關閉該程式並通知您。

相關詞條

熱門詞條

聯絡我們