ARM是一个更安全的指令集吗?

时间:2010-03-02 12:26:30

标签: java x86 arm security

我已经读过'正常'ARM指令是固定长度的 - 32位。并且没有ARM指令可以跳到另一条指令的中间 - 这对于x86指令很容易。

(对于x86,谷歌的NaCl尝试通过对齐32字节边界上的指令来“修复”这个问题。)

这是否会使ARM程序更安全或更耐某些攻击?

如果是这样,这是否扩展到Thumb和Java指令?

2 个答案:

答案 0 :(得分:3)

将操作码扫描到沙箱进程时可以更安全的地方。如果要禁止或拦截某些指令,则在固定长度指令集上执行此操作会更容易。在x86架构上,指令集取决于上下文,并且指令具有可变长度,因此如果从正确的偏移量解析它,那么看起来无害的指令实际上可以嵌入另一条指令。你可以有效地“跳到指令中间”并且仍然有一个有效的指令。

ARM更容易解析,而拇指模式不会改变这一点。因此,ARM指令集本身并不是特别安全,但是更容易解析,并且像沙盒这样的NaCl需要正确的解析

这是简短且可能不准确的答案。有关更明确的答案,请查看此blog post 在优秀的matasano博客上

答案 1 :(得分:1)

您正在考虑破坏堆栈返回地址或类似的攻击,以便将其分支到有效负载中吗?字对齐不是我想象中的大帮助或后果 - 你只需要将有效负载对齐4个字节。哦,x64需要16字节的指令对齐。

这是你的意思吗?谢谢!