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架构, 依赖管理, 安全测试, 客户端加密, 开发环境搭建, 开源安全工具, 执行漏洞, 攻击性安全, 无后门, 瞬态执行漏洞, 系统依赖安装, 结构化查询, 结果分类, 自动化安全, 逆向工具, 逆向工程平台, 重放测试