哈佛架构计算机是否能够免受任意代码注入和执行攻击?

Mat*_*och 9 security cpu-architecture harvard-architecture

哈佛架构计算机具有单独的代码和数据存储器.这是否使它们免受代码注入攻击(因为数据不能作为代码执行)?

Rom*_*Rom 14

它们比Von Neumann架构更具免疫力,但并非完全如此.每个体系结构都有一个转换点,数据开始被视为代码.在Von Neumann中,它立即发生在CPU内部,而在Harvard中,它发生在内存保留并为模块声明之前(有时甚至在此之前,当构建系统正在准备文件时).这意味着在哈佛架构中,成功的代码注入攻击需要更复杂和更具吸引力,但不一定是不可能的.

如果可以将包含恶意代码的文件放在机器的存储器(例如文件系统)中,并导致缓冲区溢出,该缓冲区溢出会在返回到现有(有效,非恶意)代码时重定向,该代码将此恶意文件作为代码加载,如果该体系结构允许该文件开始执行(例如,通过自我初始化例程),这将成为代码注入成功的一个例子.


Jon*_*eet 5

这在一定程度上取决于你所谓的"代码注入攻击".

例如,进行SQL注入攻击.SQL查询本身永远不需要位于内存的可执行部分,因为它被数据库引擎转换为本机代码(或解释,或者您希望使用的任何术语).但是,SQL仍然可以被广泛地视为"代码".

如果你只包括一个插入本机代码的攻击者直接由处理器执行(例如通过缓冲区溢出),并且如果防止进程将数据复制到"代码区",那么它就可以防止这种攻击,是的.(即使我不能想到任何攻击媒介,我也不愿意要求100%的保护;它听起来万无一失,但安全性是一件大事.)


Kek*_*koa 5

显然,有些研究人员能够对哈佛体系结构进行永久的代码注入攻击。因此,也许没有人们想象的那么安全。

  • @avgvstvs:某些DSP或微控制器确实是哈佛大学,具有用于指令存储器和数据的单独总线。想法是它们从ROM运行代码,并具有一些暂存RAM。甚至[ARM9显然都有单独的外部总线](https://en.wikipedia.org/wiki/ARM9)(可以通过创建改良的哈佛大学而不是哈佛大学的方式进行连接)。如果在数据和指令存储器之间切换需要写入磁盘并重新读入另一个存储器,我认为大多数人会称其为哈佛,而不是修改后的哈佛。(尽管修改后的哈佛大学不仅包含拆分的L1) (2认同)