版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-返回導(dǎo)向編程

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

面向返回編程(英語:Return-Oriented Programming,縮寫:ROP)是計(jì)算機(jī)安全漏洞利用技術(shù),該技術(shù)允許攻擊者在安全防御的情況下執(zhí)行代碼,如不可執(zhí)行的內(nèi)存和代碼簽名。

簡介攻擊者控制堆棧調(diào)用以劫持程序控制流并執(zhí)行針對性的機(jī)器語言指令序列(稱為Gadgets)。 每一段gadget通常結(jié)束于return指令,并位于共享庫代碼中的子程序。系列調(diào)用這些代碼,攻擊者可以在擁有更簡單攻擊防范的程序內(nèi)執(zhí)行任意操作。

背景堆棧溢出攻擊ROP是一種高級的堆棧溢出攻擊。這類攻擊往往利用操作堆棧調(diào)用時(shí)的程序漏洞,通常是緩沖區(qū)溢出。在緩沖區(qū)溢出中,在將數(shù)據(jù)存入內(nèi)存前未能正確檢查適當(dāng)范圍的函數(shù)會收到多于正常承受范圍的數(shù)據(jù),如果數(shù)據(jù)將寫入棧,多余的數(shù)據(jù)會溢出為函數(shù)變量分配的空間并覆蓋替換返回地址(return address)。在原本用以重定向控制流并返回給調(diào)用者的地址被覆蓋替換后,控制流將改寫到新分配的地址。

標(biāo)準(zhǔn)的緩沖區(qū)溢出攻擊,攻擊者只需要寫出針對堆棧部分的代碼(有效載荷)。直到1990年代后期,主流操作系統(tǒng)沒有為該類攻擊作出任何防范,微軟直到2004年才提供了緩沖區(qū)溢出保護(hù)。操作系統(tǒng)最終使用數(shù)據(jù)執(zhí)行保護(hù)技術(shù)來修補(bǔ)這個(gè)漏洞,該技術(shù)標(biāo)記內(nèi)存數(shù)據(jù)不可執(zhí)行。 啟用數(shù)據(jù)執(zhí)行保護(hù),機(jī)器將拒絕執(zhí)行任何內(nèi)存中user級別可寫區(qū)域的代碼。該技術(shù)的硬件支持不久用以加強(qiáng)該防范。

漏洞利用漏洞利用(英語:Exploit,本意為“利用”)是計(jì)算機(jī)安全術(shù)語,指的是利用程序中的某些漏洞,來得到計(jì)算機(jī)的控制權(quán)(使自己編寫的代碼越過具有漏洞的程序的限制,從而獲得運(yùn)行權(quán)限)。在英語中,本詞也是名詞,表示為了利用漏洞而編寫的攻擊程序,即漏洞利用程序。

經(jīng)常還可以看到名為ExploitMe的程序。這樣的程序是故意編寫的具有安全漏洞的程序,通常是為了練習(xí)寫Exploit程序。

數(shù)據(jù)執(zhí)行保護(hù)數(shù)據(jù)執(zhí)行保護(hù),簡稱“DEP”,英文全稱為“Data Execution Prevention”,是一組在存儲器上運(yùn)行額外檢查的硬件和軟件技術(shù),有助于防止惡意程序碼在系統(tǒng)上運(yùn)行。

數(shù)據(jù)執(zhí)行保護(hù)(DEP)是一項(xiàng)安全性功能,可協(xié)助避免病毒與其他安全性威脅所造成的損害。

計(jì)算機(jī)程序預(yù)留了一部分計(jì)算機(jī)存儲器供數(shù)據(jù)使用,另一部分則供程序的指令使用。黑客可以嘗試以欺騙手法讓程序運(yùn)行放置在計(jì)算機(jī)存儲器中的有害數(shù)據(jù),并將其視為指令。此時(shí)黑客便可以獲取對您計(jì)算機(jī)的控制權(quán)。

DEP可透過監(jiān)視程序來協(xié)助保護(hù)計(jì)算機(jī),確保程序能夠安全地使用計(jì)算機(jī)存儲器。如果DEP發(fā)現(xiàn)有某程序正嘗試運(yùn)行數(shù)據(jù)用存儲器區(qū)塊中的指令,DEP便會關(guān)閉該程序并通知您。1

本詞條內(nèi)容貢獻(xiàn)者為:

李航 - 副教授 - 西南大學(xué)