【问题标题】:Limiting memory access限制内存访问
【发布时间】:2018-11-17 06:43:18
【问题描述】:

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

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

【问题讨论】:

    标签: memory virtual-machine instructions


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 哇,谢谢,我想过,但我认为它的硬件非常复杂!并且在软件中为每个 instr 运行一个 inst 非常耗费资源!不只是 vm,host 中的任何 ins 也一样!
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 2017-02-18
    相关资源
    最近更新 更多