哈佛架构的计算机有独立的代码和数据存储器。这是否使它们对代码注入攻击具有免疫力(因为数据不能作为代码执行)?
发布于 2009-06-05 07:06:23
他们比Von Neumann架构更有免疫力,但不是完全免疫。每种架构都有一个转换点,在那里数据开始被视为代码。在Von Neumann中,它直接发生在CPU内部,而在哈佛,它发生在为模块保留和声明内存之前(有时甚至在此之前,当构建系统正在准备文件时)。这意味着在哈佛架构中,成功的代码注入攻击需要更加复杂和牵强,但不一定是不可能的。
如果有人可以将包含恶意代码的文件放在机器的存储(例如文件系统)中,并导致缓冲区溢出,这将在返回时重定向到将该恶意文件作为代码加载的现有(有效,非恶意)代码,并且如果体系结构允许该文件开始执行(例如,通过自初始化例程),这将是成功的代码注入的一个例子。
发布于 2009-06-05 06:53:35
这在一定程度上取决于你认为的“代码注入攻击”。
以SQL注入攻击为例。SQL查询本身永远不需要在内存的可执行部分中,因为数据库引擎会将其转换为本机代码(或解释,或您希望使用的任何术语)。然而,SQL仍然可以被广泛地看作是“代码”。
如果您仅包括攻击者插入本机代码以由处理器直接执行(例如,通过缓冲区溢出),并且如果阻止进程将数据复制到“代码区”,则它提供了针对此类攻击的保护,是的。(我不愿意声称100%的保护,即使我不能想到任何攻击载体;这听起来很简单,但安全是一件棘手的事情。)
发布于 2009-06-05 07:40:05
显然,有一些some researchers能够在哈佛架构上完成permanent code injection attack。所以也许并不像人们想象的那样安全。
https://stackoverflow.com/questions/954556
复制相似问题