与 LDR 相比,像 LDTR 这样的 ARM 非特权加载存储指令的应用是啥?

Posted

技术标签:

【中文标题】与 LDR 相比,像 LDTR 这样的 ARM 非特权加载存储指令的应用是啥?【英文标题】:What is the application of the ARM unprivileged load store instructions like LDTR compared to LDR?与 LDR 相比,像 LDTR 这样的 ARM 非特权加载存储指令的应用是什么? 【发布时间】:2019-12-11 14:17:33 【问题描述】:

我今天第一次接触到 LDTR ARMv8 指令。

我在ARMv8 DB手册部分C3.2.5“加载/存储非特权”中阅读了它的描述,据我了解,它基本上允许EL1在EL0限制下进行内存访问。

这个功能的应用是什么?

这是否会使创建使用内核错误使内核将数据写入错误地址的攻击变得更加困难?

考虑到通常同时运行多个进程,LDTR 如何知道要使用哪些页表转换?还是这些限制是指与页表中指定的权限无关的其他类型的权限?

【问题讨论】:

【参考方案1】:

此链接为您提供了一个用例示例:https://developer.arm.com/documentation/102376/0100/Permissions-attributes

[...] 管理程序可以查看分配给虚拟机的所有资源。这是因为在更高的异常级别执行意味着权限级别也更高。

但是,这并不总是可取的。恶意应用程序可能会试图欺骗操作系统代表应用程序访问数据,而应用程序不应该看到这些数据。这需要操作系统检查系统调用中的指针。

Arm 架构提供了多种控件来简化此操作。首先,有 PSTATE.PAN(从不特权访问)位。当此位设置时,从 EL1(或 E2H==1 时的 EL2)加载和存储到非特权区域将产生异常(Permission Fault)[...]

有时操作系统确实需要访问非特权区域,例如,写入应用程序拥有的缓冲区。为了支持这一点,指令集提供了 LDTR 和 STTR 指令。

LDTR 和 STTR 是非特权加载和存储。即使在 EL​​1 或 EL2 由操作系统执行时,它们也会根据 EL0 权限检查进行检查。因为这些是明确的非特权访问,所以它们不会被 PAN [...]

阻止

这允许操作系统区分旨在访问特权数据的访问和预期访问非特权数据的访问。这也允许硬件使用该信息来检查访问。

【讨论】:

以上是关于与 LDR 相比,像 LDTR 这样的 ARM 非特权加载存储指令的应用是啥?的主要内容,如果未能解决你的问题,请参考以下文章

arm指令中mov和ldr有啥区别?

ARM 汇编指令 ADR 与 LDR 使用

arm汇编 ldr r0 =0x00000000 这个=号代表啥啊

arm汇编—ldr加载指令,ldr伪指令

ARM指令adr adrl ldr mov

ARM汇编中LDR伪指令和LDR指令