cispa/trevex
GitHub: cispa/trevex
Trevex 是一个用于自动检测瞬态执行漏洞的黑盒模糊测试框架。
Stars: 9 | Forks: 0
# Trevex - 瞬态执行漏洞探索器
## 支持的平台
我们支持以下环境:
### 操作系统 / 发行版
Trevex 在 Ubuntu 22.04 LTS 和 24.04 LTS 上开发并测试。
虽然其他发行版可能也能工作,但框架的某些部分,例如依赖项检查和安装,假设使用 `apt` 作为包管理器。
### 架构
Trevex 目前仅针对 x86 架构。
对更多架构的支持将在不久的将来提供。
## 安装
我们建议在您的 dotfiles 中添加以下 shell 别名:
```
function tvx() {/tvx.py $@}
```
接下来,安装框架的依赖项:
```
pip install -r ./requirements.txt
sudo apt-get update
sudo apt-get install build-essential cmake tmux cpuid linux-tools-common
```
## 用法
Trevex 通过 `tvx` 命令行工具进行控制。
`tvx` 遵循以下语法:
```
tvx
```
并支持以下命令:
### `run` 命令
`run` 用于控制本地模糊测试运行:
```
# 启动模糊器
tvx run start
# 清除已取得的进展和所有结果
tvx run cleanup
```
### `result` 命令
`result` 命令用于检查和处理模糊测试结果:
```
# 对结果进行分类
# (通常是模糊测试后你想要做的第一件事)
tvx result classify
# 查看测试文件内容
tvx result view
# 将给定测试文件导出为独立的“reproducer”
# 允许你进一步检查结果
tvx result export
# 在模糊器内重新运行测试用例
tvx result rerun
```
### `setup` 命令(即将发布)
`setup` 命令用于安装和加载依赖项。
```
# 安装/检查 Trevex 系统依赖(apt 和 Python 包)
tvx setup install
# 加载 Trevex Python 环境
tvx setup load
```
### `ctrl` 命令(即将发布)
`ctrl` 命令用于协调包含多台机器的 Trevex 模糊测试活动。
它允许您在多台机器上启动 Trevex 并将结果拉取到您的机器。
机器集合通过机器配置文件定义。
#### 机器文件
机器文件由每行一个 SSH 配置名称组成。
此外,该格式支持以 `#` 开头的注释。
Trevex 假设您已对这些机器拥有无密码 SSH 访问权限。
通常,这是通过基于密钥的身份验证并将密钥存储在本地 SSH 代理中实现的,例如使用 `ssh-add`。
一个有效的配置文件如下所示:
```
uarch-lab01 # my server
uarch-lab03 # my dev machine
uarch-lab07 # my other dev machine
```
#### 用法
`ctrl` 命令要求您在子命令**之前**指定机器文件:
```
tvx ctrl -m
```
典型的模糊测试活动如下所示:
```
# 为模糊活动准备机器
# 注意:这可能会更改正在运行的内核并重启机器
# 并非总是需要,你可以尝试跳过此步骤
tvx ctrl -m ./my-servers.cfg setup
# 在远程机器上启动 Trevex 并附加到它们的 tmux 会话
# 注意:如果 Trevex 启动失败,跳过的设置步骤可能是原因
tvx ctrl -m ./my-servers.cfg spawn
# 从所有 tmux 会话中分离并让其运行一段时间
tvx ctrl -m ./my-servers.cfg detach
# 再次附加到 tmux 会话
tvx ctrl -m ./my-servers.cfg attach
# 完成操作后停止所有 Trevex 实例
tvx ctrl -m ./my-servers.cfg stop
# 检索结果并将其存储在本地机器上
# 注意:虽然这通常对组织有用,但实际的
# 重现步骤应在 *完全相同*
# 执行模糊测试的 CPU 上执行。
tvx ctrl -m ./my-servers.cfg pull-results
# 重置所有机器上的状态。这将清除所有已取得的进展
# 并删除所有结果。
tvx ctrl -m ./my-servers.cfg cleanup
```
### `dev` 命令
此命令纯粹用于开发目的。
因此,目前仍处于未记录状态。
## 已发现 / 复现的漏洞
“新颖”指的是完全新的发现,或 TREVEX 揭露了额外方面的发现,例如以前未知的微架构上的新变体或实例。
| 漏洞 | 状态 | 备注 |
|----------|-----------|---------------------------------------------------------|
| FP-DSS | **新颖** | 从浮点执行单元泄露陈旧数据 |
| LVI-NULL | **新颖** | 在未知易受攻击的微架构上发现 |
| FPVI | **新颖** | 在 Zhaoxin 上发现新变体和 FPVI |
| GDS (Downfall) | 复现 | 首个检测到它的模糊测试器 |
| MDS (ZombieLoad, RIDL, VRS, ...) | 复现 | - |
| Meltdown-US | 复现 | “原始” Meltdown 漏洞 |
| Meltdown-CPL-REG | 复现 | 需要启用 `nofsgsbase` 的系统 |
### 漏洞验证示例(PoC)
请前往 `./pocs` 目录。
#### FP-DSS
文件夹 `./pocs/amd-fpdss` 包含我们针对浮点除法器状态采样(FP-DSS)的 PoC。
FP-DSS 是一种瞬态执行攻击,可泄露 SSE 和 AVX 浮点除法单元的状态。
它被跟踪为 CVE-2025-54505,并由 AMD 在 [安全公告](https://www.amd.com/en/resources/product-security/bulletin/amd-sb-7053.html) 中讨论。
它影响 AMD Zen 1 和 Zen+ CPU。
#### FPVI 变体
文件夹 `./pocs/amd-fpvi-variant` 包含我们针对不需要非正规输入值的 FPVI 变体的 PoC。
AMD 在 [安全公告](https://www.amd.com/en/resources/product-security/bulletin/amd-sb-7050.html) 中讨论了这一发现。
它影响 AMD CPU。
#### Zero-At-Ret
文件夹 `./pocs/intel-zero-at-ret` 包含我们针对 LVI NULL 的 Zero-at-Ret 变体的 PoC。
#### FPVI-Zhaoxin
文件夹 `./pocs/zhaoxin-fpvi` 包含我们触发 Zhaoxin LuJiaZui 微架构上 FPVI 行为的 PoC。
## 研究论文
论文可在此处获取:[这里](https://d-we.me/papers/trevex_sp26.pdf)。
您可以使用以下 BibTeX 条目引用我们的工作:
```
@inproceedings{Weber2026Trevex,
author = {Weber, Daniel and Thomas, Fabian and Trampert, Leon and Zhang, Ruiyi and Schwarz, Michael},
booktitle = {{IEEE S\&P}},
title = {{Trevex: A Black-Box Detection Framework For Data-Flow Transient Execution Vulnerabilities}},
year = {2026}
}
```
## 免责声明
我们按原样提供此代码。
您有责任保护您自己、您的财产和数据,以及他人免受此代码造成的任何风险。
此代码可能会导致您的机器发生意外且不希望的行为。
标签:APT包管理, Fuzzing, IEEE S&P, Python, Trevex, TVX, x86架构, 依赖管理, 安全测试, 客户端加密, 开发环境搭建, 开源安全工具, 执行漏洞, 攻击性安全, 无后门, 瞬态执行漏洞, 系统依赖安装, 结构化查询, 结果分类, 自动化安全, 逆向工具, 逆向工程平台, 重放测试