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

与LDR相比,像LDTR这样的ARM非特权加载存储指令的应用是什么?,arm,armv8,Arm,Armv8,今天我第一次看到LDTR ARMv8指令 我在手册第C3.2.5节“加载/存储非特权”中阅读了它的描述,据我所知,它基本上允许EL1使用EL0限制进行内存访问 此功能的应用程序是什么 这是否意味着更难创建使用内核bug使内核将数据写入错误地址的攻击 考虑到通常有多个进程同时运行,LDTR如何知道要使用哪些页表转换?或者这些限制是指与页表中指定的权限无关的其他类型的权限吗?此链接提供了一个用例示例: […]虚拟机监控程序可以查看分配给虚拟机的所有资源。这是因为在更高的异常级别执行意味着特权级别也更

今天我第一次看到LDTR ARMv8指令

我在手册第C3.2.5节“加载/存储非特权”中阅读了它的描述,据我所知,它基本上允许EL1使用EL0限制进行内存访问

此功能的应用程序是什么

这是否意味着更难创建使用内核bug使内核将数据写入错误地址的攻击


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

此链接提供了一个用例示例:

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

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

Arm体系结构提供了几个控件,使之更简单。首先是PSTATE.PAN(privilegedaccessnever)位。设置此位时,从EL1(或E2H==1时的EL2)加载并存储到非特权区域将生成异常(权限错误)[……]

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

LDTR和STTR是非特权装载和存储。即使操作系统在EL1或EL2上执行,它们也会根据EL0权限检查进行检查。因为这些是显式的非特权访问,所以它们不会被PAN[…]阻止

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