【漏洞情报】GhostWrite CPU 漏洞 | 工具和论文

2024-08-09 08:03   重庆  

核心概念

GhostWrite 的核心在于利用C910处理器上单个行为不当的存储指令,该指令非法使用物理地址而不是虚拟地址作为目标。此概念验证(PoC)使用 vse128.v 指令,但其他编码也可以使用。由于编译器尚不支持该指令,因此该指令以汇编形式嵌入到代码中。在易受攻击的指令之前,需要设置矢量扩展并正确配置寄存器。

工作原理

PoC 的工作原理是通过解析虚拟地址的物理地址,然后写入该物理地址来测试 GhostWrite 是否在机器上工作。之后,需要刷新缓存,以便新值在虚拟内存中可见。

构建与运行步骤

构建
  1. 准备环境:

    在机器本身上运行以下命令:

    gcc -march="rv64gvzve64x" ghostwrite.c -o ghostwrite
  2. Makefile 配置:

    配置 Makefile 以生成静态链接的二进制文件(使用交叉编译器)。只需执行 make 即可:

    make
运行
  1. root权限运行 PoC

    使用 root 权限运行 PoC,以便它可以设置到物理内存的映射,以观察使用 GhostWrite 进行的写入:

    sudo ./ghostwrite
  2. 预期输出:运行后,预期输出如下:

    Virtual address:        3fbd3e8000
    Physical address:       89f46000

    Value before:           caaa
    Value after:            cafe

    输出应包含有效的虚拟地址和物理地址。此外,以物理地址为目标执行 GhostWrite 后的值应发生变化。如果值保持不变(即您看到两次“caaa”),或者应用程序崩溃,则 CPU 不会受到影响。

基于 Nix 的构建环境

我们进一步提供了基于 Nix flakes 的构建环境。请在您的系统上安装 Nix 并启用 flakes。然后只需获取开发 shell并构建PoC

  1. 进入开发 shell

    nix develop
  2. 构建 PoC

    make

总结

GhostWrite 利用的是处理器在特定情况下错误使用物理地址而不是虚拟地址的漏洞。通过上述步骤,可以验证您的 CPU 是否易受该漏洞影响。确保在测试和使用过程中注意安全,并及时应用相关补丁以防止潜在的安全威胁。

后台回复:0030 获得工具地址和相关论文

安全视安
欢迎关注我的公众号!在这里,我们汇集了三大主题:文学、情感与网络安全。
 最新文章