2009-06-05 24 views

回答

13

它們比馮諾依曼架構有一定的免疫能力,但不是完全。每個架構都有一個轉換點,數據開始被視爲代碼。在馮諾依曼,它立即發生在CPU內部,而在哈佛,它發生在內存被保留並被聲明爲模塊之前(或有時甚至在構建系統正在準備文件之前)。這意味着在哈佛體系結構中,成功的代碼注入攻擊需要稍微複雜一點,而且不一定是不可能的。

如果可以將包含惡意代碼的文件放置在機器的存儲器中(例如文件系統),並導致緩衝區溢出,該緩衝區溢出將返回到加載此惡意文件的現有(有效的,非惡意)代碼時重定向作爲代碼,如果架構允許該文件開始執行(例如,通過自初始化例程),那麼這將是成功的代碼注入的一個例子。

5

這部分取決於您所謂的「代碼注入攻擊」。

舉一個SQL注入攻擊爲例。 SQL查詢本身永遠不需要位於內存的可執行部分,因爲數據庫引擎將其轉換爲本地代碼(或者解釋,或者您希望使用的任何術語)。但是,該SQL仍然可以廣泛地被視爲「代碼」。

如果您只包含插入本機代碼的攻擊者直接由處理器執行(例如,通過緩衝區溢出),並且如果阻止該進程將數據複製到「代碼區」中,則它提供針對這種類型的保護攻擊,是的。 (即使我想不出任何攻擊媒介,我也不願意聲稱100%的保護;它聽起來萬無一失,但安全是一個把戲。)

0

大多數哈佛體系結構機器仍然使用公用共享內存空間來存儲內核之外的數據和指令。因此,仍然可以注入代碼並將其作爲指令執行。事實上,現在大多數處理器都是內部哈佛架構,即使他們在外部看起來是馮諾依曼。

4

顯然,有some researchers誰能夠在哈佛架構上完成permanent code injection attack。所以也許沒有人們想象的那麼安全。

+0

這是它支付要小心,第一句話就是「哈佛架構的CPU設計在嵌入式領域常見的。」 如果您研究哈佛馬克I的實際設計,您很快意識到並非CPU設計很重要,它是指令和數據之間嚴格的物理分離 - 從它們各自的存儲區到執行之間,在我意識到的任何當前架構中都不存在。該論文闡述了「改進的哈佛體系結構」。「 – avgvstvs 2013-11-30 02:21:49

+2

@avgvstvs:一些DSP或微控制器真的是哈佛大學,它們具有獨立的總線用於指令存儲器和數據,它們是從ROM運行代碼,並有一些臨時RAM,即使[ARM9顯然有獨立的外部總線] //en.wikipedia.org/wiki/ARM9)(可以連接的方式創建一個修改後的哈佛,而不是哈佛)如果在數據和指令內存之間需要寫入磁盤並重新讀入另一個內存,我認爲大多數人會稱之爲哈佛,而不是修改過的哈佛(雖然修改後的哈佛不僅包括L1的分裂) – 2016-11-19 21:00:32

0

x86具有這樣的分段體系結構,並且它已被一些項目用來試圖阻止數據作爲代碼執行(現在大多數情況下都是浪費NX代碼),並且它永遠不會接近阻止新漏洞的流入。考慮一下仍然可以在野外利用的大量遠程文件包含。

相關問題