我们支持以下环境:
Trevex 在 Ubuntu 22.04 LTS 和 24.04 LTS 上开发和测试。
其他发行版可能也能使用,但框架的某些部分(例如依赖检查与安装)假设使用 apt 作为包管理器。
Trevex 目前仅支持 x86。 未来将增加对更多架构的支持。
建议在你的点文件中添加以下 shell 别名:
function tvx() {<repo-root>/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 <command> <subcommand>
并支持以下命令:
run 命令run 用于控制本地模糊测试运行:
# 启动模糊测试器
tvx run start
# 清除已有进度及所有结果
tvx run cleanup
result 命令result 命令用于检查和处理模糊测试结果:
# 对结果进行分类
# (通常是模糊测试后要做的第一件事)
tvx result classify
# 查看测试文件的内容
tvx result view <result-file.json>
# 将给定的测试文件导出为独立的“重现器”
# 允许你进一步检查结果
tvx result export <result-file.json>
# 在模糊测试器内重新运行测试用例
tvx result rerun
setup 命令(将在近期发布)setup 命令用于安装和加载依赖。
# 安装/检查 Trevex 系统依赖(apt 和 Python 包)
tvx setup install
# 加载 tvx Python 环境
tvx setup load
ctrl 命令(将在近期发布)ctrl 命令用于协调由多台机器组成的 Trevex 模糊测试活动。
它允许你在多台机器上启动 Trevex,并将结果拉取到本地机器。
机器集通过机器配置文件定义。
机器文件每行包含一个 SSH 配置名称。
此外,该格式支持以 # 开头的注释。
Trevex 假设你对这些机器拥有无密码 SSH 访问权限。
通常,通过使用基于密钥的身份验证并将密钥存储在本地的 SSH agent 中(例如使用 ssh-add)来实现。
一个有效的配置示例如下:
uarch-lab01 # 我的服务器
uarch-lab03 # 我的开发机
uarch-lab07 # 我的另一台开发机
ctrl 命令要求你在子命令 之前 指定机器文件:
tvx ctrl -m <machine_file.cfg> <subcommand>
一个典型的模糊测试活动如下所示:
# 为模糊测试活动准备机器
# 注意:这可能会更改运行中的内核并重启机器
# 并非总是需要,你可以直接跳过此步骤。
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 命令此命令仅用于开发目的。 因此,目前暂不提供文档。
“Novel” 指全新的发现,或 TREVEX 发现了额外方面,例如在之前未知受影响的微架构上发现新变体或实例。
进入目录 ./pocs。
文件夹 ./pocs/amd-fpdss 包含我们针对浮点除法器状态采样(FP-DSS)的概念验证。
FP-DSS 是一种瞬态执行攻击,会泄露 SSE 和 AVX 浮点除法单元的状态。
它被追踪为 CVE-2025-54505,AMD 在 安全公告 中进行了讨论。
它影响 AMD Zen 1 和 Zen+ CPU。
文件夹 ./pocs/amd-fpvi-variant 包含我们针对 FPVI 的一个变体的概念验证,该变体不需要非规格化输入值。
AMD 在 安全公告 中讨论了该发现。
它影响 AMD CPU。
文件夹 ./pocs/intel-zero-at-ret 包含我们针对 LVI NULL 的 Zero-at-Ret 变体的概念验证。
文件夹 ./pocs/zhaoxin-fpvi 包含我们在兆芯 LuJiaZui 微架构上触发 FPVI 行为的概念验证。
论文可在 此处 获取。 你可以使用以下 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}
}
我们按原样提供此代码。 你有责任保护自己、你的财产和数据以及他人免受此代码可能带来的任何风险。 此代码可能导致你的机器上出现意外和不良行为。
| Vulnerability | Status | Notes |
|---|
| FP-DSS | Novel | 泄露浮点执行单元中的陈旧数据 |
| LVI-NULL | Novel | 在之前未知易受攻击的微架构上发现 |
| FPVI | Novel | 发现新变体及兆芯上的 FPVI |
| GDS (Downfall) | Reproduced | 首个检测到它的模糊测试器 |
| MDS (ZombieLoad, RIDL, VRS, ...) | Reproduced | - |
| Meltdown-US | Reproduced | “原始” Meltdown 漏洞 |
| Meltdown-CPL-REG | Reproduced | 需要系统具有 nofsgsbase |