
Automatisiertes Framework zur Erkennung von Schwachstellen bei transienter Ausführung (IEEE S&P '26)
Wir unterstützen die folgenden Umgebungen:
Trevex wird unter Ubuntu 22.04 LTS und 24.04 LTS entwickelt und getestet.
Während andere Distributionen funktionieren könnten, setzen einige Teile des Frameworks, z. B. die Abhängigkeitsprüfung und -installation, apt als Paketmanager voraus.
Trevex zielt derzeit nur auf x86 ab. Unterstützung für weitere Architekturen wird in naher Zukunft hinzugefügt.
Wir empfehlen, den folgenden Shell-Alias in Ihre Dotfiles einzufügen:
function tvx() {<repo-root>/tvx.py $@}
Installieren Sie als Nächstes die Abhängigkeiten des Frameworks:
pip install -r ./requirements.txt
sudo apt-get update
sudo apt-get install build-essential cmake tmux cpuid linux-tools-common
Trevex wird über das Befehlszeilenprogramm tvx gesteuert.
tvx folgt dieser Syntax:
tvx <command> <subcommand>
und unterstützt die folgenden Befehle:
run-BefehlDer Befehl run wird zur Steuerung lokaler Fuzzing-Durchläufe verwendet:
# start the fuzzer
tvx run start
# clear the progress made and all results
tvx run cleanup
result-BefehlDer Befehl result dient zur Überprüfung und Verarbeitung von Fuzzing-Ergebnissen:
# 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-Befehl (wird in naher Zukunft veröffentlicht)Der Befehl setup wird verwendet, um Abhängigkeiten zu installieren und zu laden.
# install/check Trevex system dependencies (apt and python packages)
tvx setup install
# load the tvx Python environment
tvx setup load
ctrl-Befehl (wird in naher Zukunft veröffentlicht)Der Befehl ctrl wird verwendet, um Trevex-Fuzzing-Kampagnen zu orchestrieren, die aus mehreren Maschinen bestehen.
Er ermöglicht es Ihnen, Trevex auf mehreren Maschinen zu starten und die Ergebnisse auf Ihren Rechner zu ziehen.
Die Menge der Maschinen wird über eine Maschinenkonfigurationsdatei definiert.
Die Maschinendatei besteht aus einem SSH-Konfigurationsnamen pro Zeile.
Zusätzlich unterstützt das Format Kommentare, die mit # beginnen.
Trevex geht davon aus, dass Sie passwortlosen SSH-Zugriff auf diese Maschinen haben.
Dies geschieht in der Regel durch die Verwendung einer schlüsselbasierten Authentifizierung und das Speichern der Schlüssel in Ihrem lokalen SSH-Agenten, z. B. mit ssh-add.
Eine gültige Konfiguration sieht wie folgt aus:
uarch-lab01 # my server
uarch-lab03 # my dev machine
uarch-lab07 # my other dev machine
Der Befehl ctrl erfordert, dass Sie die Maschinendatei vor dem Unterbefehl angeben:
tvx ctrl -m <machine_file.cfg> <subcommand>
Eine typische Fuzzing-Kampagne sieht wie folgt aus:
# 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-BefehlDieser Befehl wird ausschließlich für Entwicklungszwecke verwendet. Daher bleibt er vorerst auch undokumentiert.
„Neu“ bezieht sich auf Erkenntnisse, die völlig neu sind oder bei denen TREVEX zusätzliche Aspekte aufgedeckt hat, wie neue Varianten oder Instanzen auf Mikroarchitekturen, von denen zuvor nicht bekannt war, dass sie betroffen sind.
Gehen Sie zum Verzeichnis ./pocs.
Der Ordner ./pocs/amd-fpdss enthält unseren PoC für Floating-Point Divider State Sampling (FP-DSS).
FP-DSS ist ein Angriff durch flüchtige Ausführung, der Status von SSE- und AVX-Gleitkomma-Divisionseinheiten preisgibt.
Es wird als CVE-2025-54505 verfolgt und von AMD in einem Security Advisory behandelt.
Es betrifft AMD Zen 1 und Zen+ CPUs.
Der Ordner ./pocs/amd-fpvi-variant enthält unseren PoC für eine Variante von FPVI, die keine denormalen Eingabewerte erfordert.
AMD diskutiert den Fund in einem Security Advisory.
Es betrifft AMD CPUs.
Der Ordner ./pocs/intel-zero-at-ret enthält unseren PoC für die Zero-at-Ret-Variante von LVI NULL.
Der Ordner ./pocs/zhaoxin-fpvi enthält einen PoC, der FPVI-Verhalten auf Zhaoxins LuJiaZui-Mikroarchitektur auslöst.
Die Arbeit ist hier verfügbar. Sie können unsere Arbeit mit folgendem BibTeX-Eintrag zitieren:
@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}
}
Wir stellen diesen Code so zur Verfügung, wie er ist. Sie sind dafür verantwortlich, sich selbst, Ihr Eigentum und Daten sowie andere vor jeglichen Risiken zu schützen, die durch diesen Code entstehen. Dieser Code kann auf Ihrem Rechner unerwartetes und unerwünschtes Verhalten verursachen.
| Schwachstelle | Status | Anmerkungen |
|---|
| FP-DSS | Neu | Gibt veraltete Daten aus der Gleitkomma-Ausführungseinheit preis |
| LVI-NULL | Neu | Auf Mikroarchitekturen entdeckt, die nicht als anfällig bekannt waren |
| FPVI | Neu | Neue Variante und FPVI auf Zhaoxin entdeckt |
| GDS (Downfall) | Reproduziert | Erster Fuzzer, der sie erkennt |
| MDS (ZombieLoad, RIDL, VRS, ...) | Reproduziert | - |
| Meltdown-US | Reproduziert | Die „ursprüngliche“ Meltdown-Schwachstelle |
| Meltdown-CPL-REG | Reproduziert | Erfordert ein System mit nofsgsbase |