首页 > 解决方案 > 限制内存访问

问题描述

如果软件代码具有使用直接地址位并命令 cpu 访问受限区域的指令,我们如何真正限制机器内存访问?

如果我们使用容器或虚拟或......,我们应该运行一个代码来检查原始代码的每条指令,看看它是否没有访问受限区域?

标签: memoryvirtual-machineinstructions

解决方案


权限管理通常需要 CPU 中的硬件支持。在软件仿真的情况下,仿真器需要确保执行适当的权限级别。

MMU是一个(除其他外)控制内存访问的组件。某些内存区域可以标记为可读、可写和可执行。MMU 将检查所有内存访问并在非法访问时导致某种故障。这可以防止 CPU 在任意内存位置读取/写入/执行。

许多 CPU 都在 CPU 本身中内置了特权分离。它将具有特权级别的概念(例如,x86 中的环,ARM 中的模式位)并检查正在运行的指令是否在当前特权级别内被允许。这可以防止在非特权模式下运行的代码执行特权指令。

托管容器或虚拟机主机软件的操作系统将需要确保正确实施适当的权限分离(适当地使用硬件功能)。


推荐阅读