
投機的実行の脆弱性に対する自動脆弱性検出フレームワーク (IEEE S&P '26)
以下の環境をサポートしています:
TrevexはUbuntu 22.04 LTSおよび24.04 LTSで開発・テストされています。他のディストリビューションでも動作する可能性はありますが、フレームワークの一部(依存関係のチェックやインストールなど)はaptをパッケージマネージャとして前提としています。
Trevexは現在x86のみを対象としています。近い将来、他のアーキテクチャのサポートが追加される予定です。
以下のシェルエイリアスをdotfilesに追加することを推奨します:
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はローカルファジング実行を制御するために使用します:
# start the fuzzer
tvx run start
# clear the progress made and all results
tvx run cleanup
result コマンドresultコマンドはファジング結果の検査と処理に使用します:
# classify the results
# (typically the first thing you want to do after fuzzing)
tvx result classify
# view the content of a testfile
tvx result view <result-file.json>
# export a given test file into a standalone 'reproducer'
# allows you to inspect the result further
tvx result export <result-file.json>
# rerun the testcase inside the fuzzer
tvx result rerun
setup コマンド(近日公開予定)setupコマンドは依存関係のインストールとロードに使用します。
# install/check Trevex system dependencies (apt and python packages)
tvx setup install
# load the tvx Python environment
tvx setup load
ctrl コマンド(近日公開予定)ctrlコマンドは複数のマシンからなるTrevexファジングキャンペーンをオーケストレーションするために使用します。
これにより、複数のマシンでTrevexを起動し、結果を自分のマシンにプルすることができます。マシンのセットはマシン設定ファイルで定義します。
マシンファイルは1行に1つのSSH設定名で構成されます。また、#で始まるコメントをサポートします。TrevexはこれらのマシンにパスワードなしのSSHアクセスがあることを前提としています。通常、これは鍵ベースの認証を使用し、ローカルのSSHエージェント(例:ssh-add)に鍵を保存することで行われます。
A valid config looks like this
uarch-lab01 # my server
uarch-lab03 # my dev machine
uarch-lab07 # my other dev machine
ctrlコマンドでは、サブコマンドの前にマシンファイルを指定する必要があります:
tvx ctrl -m <machine_file.cfg> <subcommand>
典型的なファジングキャンペーンは以下のようになります:
# prepare the machines for the fuzzing campaign
# ATTENTION: this might change the running kernel and reboot the machine
# This is not always needed, you can just try skipping the step.
tvx ctrl -m ./my-servers.cfg setup
# Start Trevex on the remote machines and attach to their tmux sessions
# Note: If Trevex fails to start, the skipped setup step might be the reason.
tvx ctrl -m ./my-servers.cfg spawn
# Detach from all tmux sessions and let it run for a while
tvx ctrl -m ./my-servers.cfg detach
# Attach again to the tmux sessions
tvx ctrl -m ./my-servers.cfg attach
# Stop all Trevex instances once you're done
tvx ctrl -m ./my-servers.cfg stop
# Retrieve the results and store them on your local machine
# Note: While this is often useful for organization, actual
# reproduction steps should executed on the *exact same*
# CPU that was fuzzed.
tvx ctrl -m ./my-servers.cfg pull-results
# Reset the state on all machines. This cleans all progress
# made and deletes all results.
tvx ctrl -m ./my-servers.cfg cleanup
dev コマンドこのコマンドは純粋に開発目的で使用されます。そのため、現時点ではドキュメント化されていません。
「新規」とは、完全に新しい発見、またはTREVEXが追加の側面(従来影響を受けることが知られていなかったマイクロアーキテクチャにおける新たな亜種や事例など)を明らかにした発見を指します。
ディレクトリ./pocs.に移動してください。
フォルダ./pocs/amd-fpdssには、Floating-Point Divider State Sampling (FP-DSS)のPoCが含まれています。FP-DSSは、SSEおよびAVX浮動小数点除算ユニットから状態を漏洩する一時的実行攻撃です。CVE-2025-54505として追跡され、AMDのセキュリティアドバイザリで議論されています。AMD Zen 1およびZen+ CPUに影響します。
フォルダ./pocs/amd-fpvi-variantには、非正規化入力値を必要としないFPVIの亜種のPoCが含まれています。AMDはこの発見をセキュリティアドバイザリで議論しています。AMD CPUに影響します。
フォルダ./pocs/intel-zero-at-retには、LVI NULLのZero-at-Ret亜種のPoCが含まれています。
フォルダ./pocs/zhaoxin-fpviには、ZhaoxinのLuJiaZuiマイクロアーキテクチャでFPVI動作を引き起こすPoCが含まれています。
論文はこちらから入手できます。以下の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}
}
このコードは現状のまま提供されます。このコードによって生じるリスクから自分自身、自分の財産やデータ、そして他者を保護する責任はあなたにあります。このコードは、お使いのマシンで予期しない望ましくない動作を引き起こす可能性があります。
| 脆弱性 | ステータス | 備考 |
|---|
| FP-DSS | 新規 | 浮動小数点実行ユニットからの古いデータを漏洩 |
| LVI-NULL | 新規 | 脆弱性が知られていなかったマイクロアーキテクチャで発見 |
| FPVI | 新規 | Zhaoxinで新たな亜種とFPVIを発見 |
| GDS (Downfall) | 再現 | これを検出した最初のファザー |
| MDS (ZombieLoad, RIDL, VRS, ...) | 再現 | - |
| Meltdown-US | 再現 | 「オリジナル」のMeltdown脆弱性 |
| Meltdown-CPL-REG | 再現 | nofsgsbaseが必要なシステム |