
Cadre de détection automatisée des vulnérabilités pour les vulnérabilités d'exécution transitoire (IEEE S&P '26)
Nous prenons en charge les environnements suivants :
Trevex est développé et testé sur Ubuntu 22.04 LTS et 24.04 LTS.
Bien que d'autres distributions puissent fonctionner, certaines parties du framework, par exemple la vérification et l'installation des dépendances, supposent apt comme gestionnaire de paquets.
Trevex ne cible actuellement que l'architecture x86. La prise en charge d'autres architectures viendra dans un avenir proche.
Nous recommandons d'ajouter l'alias shell suivant dans vos dotfiles :
function tvx() {<repo-root>/tvx.py $@}
Ensuite, installez les dépendances du framework :
pip install -r ./requirements.txt
sudo apt-get update
sudo apt-get install build-essential cmake tmux cpuid linux-tools-common
Trevex est contrôlé via l'utilitaire en ligne de commande tvx.
tvx suit cette syntaxe :
tvx <command> <subcommand>
et prend en charge les commandes suivantes :
runLa commande run est utilisée pour contrôler les exécutions locales de fuzzing :
# start the fuzzer
tvx run start
# clear the progress made and all results
tvx run cleanup
resultLa commande result est utilisée pour inspecter et traiter les résultats de fuzzing :
# 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 (sera publiée prochainement)La commande setup est utilisée pour installer et charger les dépendances.
# install/check Trevex system dependencies (apt and python packages)
tvx setup install
# load the tvx Python environment
tvx setup load
ctrl (sera publiée prochainement)La commande ctrl est utilisée pour orchestrer des campagnes de fuzzing Trevex composées de plusieurs machines.
Elle vous permet de lancer Trevex sur plusieurs machines et de récupérer les résultats sur votre machine.
L'ensemble des machines est défini via un fichier de configuration des machines.
Le fichier machine contient un nom de configuration SSH par ligne.
De plus, le format prend en charge les commentaires commençant par #.
Trevex suppose que vous avez un accès SSH sans mot de passe à ces machines.
Généralement, cela se fait en utilisant une authentification par clé et en stockant les clés dans votre agent SSH local, par exemple en utilisant ssh-add.
Une configuration valide ressemble à ceci
uarch-lab01 # my server
uarch-lab03 # my dev machine
uarch-lab07 # my other dev machine
La commande ctrl nécessite que vous spécifiiez le fichier machine avant la sous-commande :
tvx ctrl -m <machine_file.cfg> <subcommand>
Une campagne de fuzzing typique se présente comme suit :
# 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
devCette commande est purement utilisée à des fins de développement. Par conséquent, elle reste non documentée pour le moment.
« Nouveau » fait référence à des découvertes entièrement nouvelles ou pour lesquelles TREVEX a révélé des aspects supplémentaires, comme de nouvelles variantes ou instances sur des microarchitectures auparavant non connues comme étant affectées.
Allez dans le répertoire ./pocs.
Le dossier ./pocs/amd-fpdss contient notre PoC pour Floating-Point Divider State Sampling (FP-DSS).
FP-DSS est une attaque par exécution transitoire qui divulgue l'état des unités de division en virgule flottante SSE et AVX.
Elle est suivie sous le numéro CVE-2025-54505 et discutée par AMD dans un Avis de sécurité.
Elle affecte les CPU AMD Zen 1 et Zen+.
Le dossier ./pocs/amd-fpvi-variant contient notre PoC pour une variante de FPVI qui ne nécessite pas de valeurs d'entrée dénormalisées.
AMD discute de cette découverte dans un Avis de sécurité.
Elle affecte les CPU AMD.
Le dossier ./pocs/intel-zero-at-ret contient notre PoC pour la variante Zero-at-Ret de LVI NULL.
Le dossier ./pocs/zhaoxin-fpvi contient notre PoC déclenchant le comportement FPVI sur la microarchitecture LuJiaZui de Zhaoxin.
L'article est disponible ici. Vous pouvez citer notre travail avec l'entrée BibTeX suivante :
@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}
}
Nous fournissons ce code en l'état. Vous êtes responsable de la protection de vous-même, de vos biens et données, et des autres contre tout risque causé par ce code. Ce code peut provoquer un comportement inattendu et indésirable sur votre machine.
| Vulnérabilité | Statut | Notes |
|---|
| FP-DSS | Nouveau | Fuit des données obsolètes de l'unité d'exécution en virgule flottante |
| LVI-NULL | Nouveau | Découvert sur des microarchitectures non connues comme vulnérables |
| FPVI | Nouveau | Découverte d'une nouvelle variante et de FPVI sur Zhaoxin |
| GDS (Downfall) | Reproduit | Premier fuzzer à le détecter |
| MDS (ZombieLoad, RIDL, VRS, ...) | Reproduit | - |
| Meltdown-US | Reproduit | La vulnérabilité Meltdown « originale » |
| Meltdown-CPL-REG | Reproduit | Nécessite un système avec nofsgsbase |