自动定位真实设备与 CPU 模拟器间 ARM 指令偏差
密码学与安全
2021-08-13 v2
摘要
模拟器因其细粒度追踪能力、全系统监控功能以及在不同操作系统和架构上运行的可扩展性,被广泛用于构建动态分析框架。然而,模拟器是否与真实设备一致尚属未知。为理解此问题,我们旨在自动定位在模拟器与真实设备间行为不一致的指令。我们以 ARM 架构为目标,其提供机器可读规范。基于该规范,我们通过设计并实现对 ARM 架构规范语言(ASL)的首个符号执行引擎,提出了一种测试用例生成器。我们生成了 2,774,649 条代表性指令流,并在四种不同架构版本(即 ARMv5、ARMv6、ARMv7-a 和 ARMv8-a)的 ARM 真实设备与最先进模拟器(即 QEMU)之间使用这些指令流进行差分测试。我们定位了 155,642 条不一致指令流,覆盖了全部指令编码的 30% 和指令的 47.8%。我们发现 ARM 手册中的未定义实现以及 QEMU 的实现缺陷是不一致的主要原因。此外,我们发现了四个 QEMU 缺陷,已被开发者确认并修补,覆盖 13 种指令编码,包括最常用的那些(如 STR、BLX)。利用这些不一致指令,我们构建了三个安全应用,并展示了这些指令在检测模拟器、反模拟和反模糊测试方面的能力。
引用
@article{arxiv.2105.14273,
title = {Automatically Locating ARM Instructions Deviation between Real Devices and CPU Emulators},
author = {Muhui Jiang and Tianyi Xu and Yajin Zhou and Yufeng Hu and Ming Zhong and Lei Wu and Xiapu Luo and Kui Ren},
journal= {arXiv preprint arXiv:2105.14273},
year = {2021}
}