
Framework automatizzato di rilevamento delle vulnerabilità per le vulnerabilità da esecuzione transitoria (IEEE S&P '26)
Supportiamo i seguenti ambienti:
Trevex è sviluppato e testato su Ubuntu 22.04 LTS e 24.04 LTS.
Altre distribuzioni potrebbero funzionare, ma alcune parti del framework, ad esempio il controllo e l'installazione delle dipendenze, assumono apt come gestore di pacchetti.
Trevex attualmente è mirato solo a x86. Il supporto per altre architetture arriverà in un futuro prossimo.
Consigliamo di aggiungere il seguente alias di shell nei tuoi dotfile:
function tvx() {<repo-root>/tvx.py $@}
Successivamente, installa le dipendenze del framework:
pip install -r ./requirements.txt
sudo apt-get update
sudo apt-get install build-essential cmake tmux cpuid linux-tools-common
Trevex è controllato tramite l'utilità a riga di comando tvx.
tvx segue questa sintassi:
tvx <comando> <sottocomando>
e supporta i seguenti comandi:
runrun è utilizzato per controllare le esecuzioni locali di fuzzing:
# avvia il fuzzer
tvx run start
# cancella i progressi fatti e tutti i risultati
tvx run cleanup
resultIl comando result è utilizzato per ispezionare ed elaborare i risultati del fuzzing:
# classifica i risultati
# (tipicamente la prima cosa da fare dopo il fuzzing)
tvx result classify
# visualizza il contenuto di un file di test
tvx result view <file-risultato.json>
# esporta un dato file di test in un 'riproduttore' autonomo
# ti permette di ispezionare ulteriormente il risultato
tvx result export <file-risultato.json>
# riesegue il test case all'interno del fuzzer
tvx result rerun
setup (sarà pubblicato in un futuro prossimo)Il comando setup è utilizzato per installare e caricare le dipendenze.
# installa/verifica le dipendenze di sistema di Trevex (pacchetti apt e python)
tvx setup install
# carica l'ambiente Python di tvx
tvx setup load
ctrl (sarà pubblicato in un futuro prossimo)Il comando ctrl è utilizzato per orchestrare campagne di fuzzing di Trevex che coinvolgono più macchine.
Ti permette di avviare Trevex su più macchine e di recuperare i risultati sulla tua macchina.
L'insieme di macchine è definito tramite un file di configurazione delle macchine.
Il file delle macchine consiste in 1 nome di configurazione SSH per riga.
Inoltre, il formato supporta commenti che iniziano con #.
Trevex assume che tu abbia accesso SSH senza password a queste macchine.
Tipicamente, ciò si ottiene utilizzando l'autenticazione basata su chiave e salvando le chiavi nel tuo agente SSH locale, ad esempio usando ssh-add.
Una configurazione valida si presenta così:
uarch-lab01 # il mio server
uarch-lab03 # la mia macchina di sviluppo
uarch-lab07 # la mia altra macchina di sviluppo
Il comando ctrl richiede di specificare il file delle macchine prima del sottocomando:
tvx ctrl -m <file_macchine.cfg> <sottocomando>
Una tipica campagna di fuzzing si presenta come segue:
# prepara le macchine per la campagna di fuzzing
# ATTENZIONE: questo potrebbe cambiare il kernel in esecuzione e riavviare la macchina
# Non è sempre necessario, puoi provare a saltare il passaggio.
tvx ctrl -m ./my-servers.cfg setup
# Avvia Trevex sulle macchine remote e si collega alle loro sessioni tmux
# Nota: Se Trevex non si avvia, il passaggio di setup saltato potrebbe esserne la causa.
tvx ctrl -m ./my-servers.cfg spawn
# Scollega da tutte le sessioni tmux e lascialo eseguire per un po'
tvx ctrl -m ./my-servers.cfg detach
# Ricollegati alle sessioni tmux
tvx ctrl -m ./my-servers.cfg attach
# Ferma tutte le istanze di Trevex una volta terminato
tvx ctrl -m ./my-servers.cfg stop
# Recupera i risultati e salvali sulla tua macchina locale
# Nota: Sebbene ciò sia spesso utile per l'organizzazione, le fasi di riproduzione
# effettive dovrebbero essere eseguite sulla *stessa identica*
# CPU che è stata sottoposta a fuzzing.
tvx ctrl -m ./my-servers.cfg pull-results
# Resetta lo stato su tutte le macchine. Questo cancella tutti i progressi
# fatti ed elimina tutti i risultati.
tvx ctrl -m ./my-servers.cfg cleanup
devQuesto comando è utilizzato puramente per scopi di sviluppo. Di conseguenza, rimane anche non documentato per ora.
"Novel" si riferisce a scoperte completamente nuove o dove TREVEX ha scoperto aspetti aggiuntivi, come nuove varianti o istanze su microarchitetture non precedentemente note come vulnerabili.
Vai alla directory ./pocs.
La cartella ./pocs/amd-fpdss contiene il nostro PoC per Floating-Point Divider State Sampling (FP-DSS).
FP-DSS è un attacco di esecuzione transitoria che perde stato dalle unità di divisione in virgola mobile SSE e AVX.
È tracciato come CVE-2025-54505 e discusso da AMD in un bollettino di sicurezza.
Colpisce le CPU AMD Zen 1 e Zen+.
La cartella ./pocs/amd-fpvi-variant contiene il nostro PoC per una variante di FPVI che non richiede valori di input denormalizzati.
AMD discute la scoperta in un bollettino di sicurezza.
Colpisce le CPU AMD.
La cartella ./pocs/intel-zero-at-ret contiene il nostro PoC per la variante Zero-at-Ret di LVI NULL.
La cartella ./pocs/zhaoxin-fpvi contiene un nostro PoC che innesca il comportamento FPVI sulla microarchitettura LuJiaZui di Zhaoxin.
L'articolo è disponibile qui. Puoi citare il nostro lavoro con la seguente voce 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}
}
Forniamo questo codice così com'è. Sei responsabile di proteggere te stesso, la tua proprietà e i tuoi dati, e gli altri da qualsiasi rischio causato da questo codice. Questo codice potrebbe causare comportamenti inaspettati e indesiderati sulla tua macchina.
| Vulnerabilità | Stato | Note |
|---|
| FP-DSS | Novel | Perde dati obsoleti dall'unità di esecuzione in virgola mobile |
| LVI-NULL | Novel | Scoperto su microarchitetture non note come vulnerabili |
| FPVI | Novel | Scoperta nuova variante e FPVI su Zhaoxin |
| GDS (Downfall) | Riprodotto | Primo fuzzer a rilevarlo |
| MDS (ZombieLoad, RIDL, VRS, ...) | Riprodotto | - |
| Meltdown-US | Riprodotto | La vulnerabilità Meltdown "originale" |
| Meltdown-CPL-REG | Riprodotto | Richiede un sistema con nofsgsbase |