修復黑客用來(lái)攻擊系統的漏洞背后的各個(gè)漏洞是很重要的,但阻止攻擊者利用這些漏洞和刪除整個(gè)漏洞的技術(shù)更有效,或者至少使它們更昂貴和更耗時(shí)的創(chuàng )建。

面向返回的編程(ROP)是一種非常常見(jiàn)的技術(shù),尤其難以阻止,因為攻擊者不是試圖將自己的代碼注入正在運行的進(jìn)程(某些操作系統和瀏覽器已經(jīng)添加了防御),而是尋找內存中已經(jīng)包含“返回”的合法代碼的小塊,其中代碼跳轉到新的例程或返回主線(xiàn)程。

微軟操作系統安全總監戴夫·韋斯頓告訴Tech Republic說(shuō):“有了ROP,我就無(wú)法創(chuàng )建新的代碼;我只能跳轉到不同的代碼片段,并試圖將它們串成有效負載。” 如果合法代碼像緩沖區溢出一樣存在內存安全錯誤,損壞內存中的指針意味著(zhù)系統開(kāi)始運行攻擊者自己的代碼,而不是返回程序調用堆棧中的地址。
自2012年以來(lái),微軟一直在研究如何阻止攻擊者劫持像這樣的程序中的控制流程。 Windows增加了多個(gè)級別的保護,從簽署重要代碼(代碼完整性保護,或CIG)開(kāi)始,首先在瀏覽器中阻止運行時(shí)代碼生成,然后在VM和內核中(任意代碼保護,或ACG)。

韋斯頓解釋說(shuō):“目標是防止攻擊者加載微軟或我們的第三方之一沒(méi)有簽署的二進(jìn)制文件;即使他們能夠利用進(jìn)程并在進(jìn)程中獲得內存損壞,他們也不能注入shell code或其他構造。”
