#apple-silicon #apple #hypervisor #fuzzing #security #security-testing #aarch64

nightly hyperpom

基于Apple Silicon虚拟机的高效AArch64模糊测试库

3个版本

0.1.2 2022年11月15日
0.1.1 2022年11月14日
0.1.0 2022年11月14日

#387 in 硬件支持

26 每月下载量

GPL-3.0-or-later

475KB
6K SLoC

hyperpom logo

HYPERPOM
基于Apple Silicon虚拟机的高效AArch64模糊测试库


shields.io license shields.io version shields.io platform
shields.io rust version shields.io crates.io shields.io crates.io


目录

Hyperpom 是一个基于 Apple Silicon 虚拟机的高效模糊测试框架,它能够轻松地对 AArch64 用户空间二进制文件进行测试。

⚠️ 免责声明

这个项目的初衷是创建一个高效、快速的模糊测试器,以利用 Apple Silicon 的特性。然而,在这个阶段,虽然模糊测试器可以工作,但它仍然主要是一个概念验证,需要大量的改进来提供更好的功能、可用性和性能。

它可能足够满足您的需求,但请记住,您可能会遇到在项目设计时没有考虑到的限制。无论如何,欢迎您提出问题,我们会尽力解决您的问题。

入门

先决条件

  1. 使用官方指南安装 Rust 和 rustup
  2. 安装 nightly频道
rustup toolchain install nightly
  1. 在编译时使用此频道,您可以选择以下任一方式

    • 使用 rustup default nightly 设置为默认频道;
    • 或者在每次使用 cargo 编译二进制文件时添加 +nightly
  2. 使用例如 brew 安装 Cmake。

brew install cmake

自签名二进制文件和虚拟机授权

要访问虚拟机框架,必须授予二进制可执行文件 虚拟机授权

证书链

要将此权限添加到您的项目,您首先需要一个证书链来签名您的二进制文件,这可以通过以下说明创建。

  • 打开钥匙串访问应用程序。
  • 转到钥匙串访问 > 证书助理 > 创建证书
  • 填写名称字段,此值将在以后用于识别我们要签名的证书,并将被称为${CERT_NAME}
  • 身份类型设置为Self-Signed Root
  • 证书类型设置为Code Signing
  • 点击创建

您现在可以使用以下命令签名二进制文件并添加权限

codesign --entitlements entitlements.xml -s ${CERT_NAME} /path/to/binary

注意: entitlements.xml文件在Hyperpom存储库的根目录下可用。

编译流程

创建一个Rust项目,并在Cargo.toml中将Hyperpom作为依赖项添加。您可以从crates.io ...

# Check which version is the latest, this part of the README might not be updated
# in future releases.
hyperpom = "0.1.0"

... 或直接从GitHub存储库

hyperpom = { git="https://github.com/impalabs/hyperpom", branch="master" }

在项目的根目录下创建一个名为entitlements.txt的文件,并添加以下内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.hypervisor</key>
    <true/>
</dict>
</plist>

编写代码然后构建项目。

cargo build --release

签名二进制文件并授予虚拟机权限。

codesign --entitlements entitlements.xml -s ${CERT_NAME} target/release/${PROJECT_NAME}

运行二进制文件。

target/release/${PROJECT_NAME}

文档

文档可在以下地址在线查看:https://docs.rs/hyperpom

或者,您可以使用cargo生成它

cargo doc --open

文档包含有关使用框架及其内部信息。对于深入指南,请参阅Loader章节,它提供了如何使用模糊器和利用目标的示例。

示例

提供了四个示例,以便您更好地了解框架的工作方式并开始使用

您还可以查看测试

运行测试

要使用项目提供的Makefile运行测试,您首先需要安装jq。您可以使用brew进行安装

brew install jq

然后,您可以使用提供的Makefile使用以下命令运行测试

CERT_KEYCHAIN=${CERT_NAME} make tests

作者

依赖项

~58MB
~1.5M SLoC