Mat*_*och 9 security cpu-architecture harvard-architecture
哈佛架构计算机具有单独的代码和数据存储器.这是否使它们免受代码注入攻击(因为数据不能作为代码执行)?
Rom*_*Rom 14
它们比Von Neumann架构更具免疫力,但并非完全如此.每个体系结构都有一个转换点,数据开始被视为代码.在Von Neumann中,它立即发生在CPU内部,而在Harvard中,它发生在内存保留并为模块声明之前(有时甚至在此之前,当构建系统正在准备文件时).这意味着在哈佛架构中,成功的代码注入攻击需要更复杂和更具吸引力,但不一定是不可能的.
如果可以将包含恶意代码的文件放在机器的存储器(例如文件系统)中,并导致缓冲区溢出,该缓冲区溢出会在返回到现有(有效,非恶意)代码时重定向,该代码将此恶意文件作为代码加载,如果该体系结构允许该文件开始执行(例如,通过自我初始化例程),这将成为代码注入成功的一个例子.
这在一定程度上取决于你所谓的"代码注入攻击".
例如,进行SQL注入攻击.SQL查询本身永远不需要位于内存的可执行部分,因为它被数据库引擎转换为本机代码(或解释,或者您希望使用的任何术语).但是,SQL仍然可以被广泛地视为"代码".
如果你只包括一个插入本机代码的攻击者直接由处理器执行(例如通过缓冲区溢出),并且如果防止进程将数据复制到"代码区",那么它就可以防止这种攻击,是的.(即使我不能想到任何攻击媒介,我也不愿意要求100%的保护;它听起来万无一失,但安全性是一件大事.)