
Framework Automatizado de Detecção de Vulnerabilidades para Vulnerabilidades de Execução Transiente (IEEE S&P '26)
Suportamos os seguintes ambientes:
Trevex é desenvolvido e testado no Ubuntu 22.04 LTS e 24.04 LTS.
Embora outras distribuições possam funcionar, algumas partes do framework, por exemplo, a verificação e instalação de dependências, assume apt como gerenciador de pacotes.
Trevex atualmente tem como alvo apenas x86. O suporte para outras arquiteturas virá em um futuro próximo.
Recomendamos adicionar o seguinte alias de shell nos seus dotfiles:
function tvx() {<repo-root>/tvx.py $@}
Em seguida, instale as dependências do framework:
pip install -r ./requirements.txt
sudo apt-get update
sudo apt-get install build-essential cmake tmux cpuid linux-tools-common
Trevex é controlado através do utilitário de linha de comando tvx.
tvx segue esta sintaxe:
tvx <command> <subcommand>
e suporta os seguintes comandos:
runO run é usado para controlar execuções locais de fuzzing:
# start the fuzzer
tvx run start
# clear the progress made and all results
tvx run cleanup
resultO comando result é usado para inspecionar e processar resultados 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 (será publicado em breve)O comando setup é usado para instalar e carregar dependências.
# install/check Trevex system dependencies (apt and python packages)
tvx setup install
# load the tvx Python environment
tvx setup load
ctrl (será publicado em breve)O comando ctrl é usado para orquestrar campanhas de fuzzing do Trevex que consistem em múltiplas máquinas.
Ele permite que você inicie o Trevex em várias máquinas e puxe os resultados para a sua máquina.
O conjunto de máquinas é definido através de um arquivo de configuração de máquinas.
O arquivo de máquina consiste em 1 nome de configuração SSH por linha.
Além disso, o formato suporta comentários começando com #.
Trevex assume que você tem acesso SSH sem senha a essas máquinas.
Normalmente, isso é feito usando autenticação baseada em chave e armazenando as chaves no seu agente SSH local, por exemplo, usando ssh-add.
Uma configuração válida se parece com isso
uarch-lab01 # my server
uarch-lab03 # my dev machine
uarch-lab07 # my other dev machine
O comando ctrl exige que você especifique o arquivo de máquina antes do subcomando:
tvx ctrl -m <machine_file.cfg> <subcommand>
Uma campanha típica de fuzzing se parece com o seguinte:
# 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
devEste comando é usado puramente para fins de desenvolvimento. Portanto, permanece não documentado por enquanto.
"Novel" refere-se a descobertas que são totalmente novas ou onde TREVEX descobriu aspectos adicionais, como novas variantes ou instâncias em microarquiteturas não conhecidas anteriormente como afetadas.
Vá para o diretório ./pocs.
A pasta ./pocs/amd-fpdss contém nosso PoC para Floating-Point Divider State Sampling (FP-DSS).
FP-DSS é um ataque de execução transiente que vaza estado das unidades de divisão de ponto flutuante SSE e AVX.
Ele é rastreado como CVE-2025-54505 e discutido pela AMD em um Security Advisory.
Afeta CPUs AMD Zen 1 e Zen+.
A pasta ./pocs/amd-fpvi-variant contém nosso PoC para uma variante do FPVI que não requer valores de entrada denormalizados.
A AMD discute a descoberta em um Security Advisory.
Afeta CPUs AMD.
A pasta ./pocs/intel-zero-at-ret contém nosso PoC para a variante Zero-at-Ret do LVI NULL.
A pasta ./pocs/zhaoxin-fpvi contém nosso PoC acionando o comportamento FPVI na microarquitetura LuJiaZui da Zhaoxin.
O artigo está disponível aqui. Você pode citar nosso trabalho com a seguinte entrada 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}
}
Estamos fornecendo este código como está. Você é responsável por proteger a si mesmo, sua propriedade e dados, e outros de quaisquer riscos causados por este código. Este código pode causar comportamentos inesperados e indesejáveis em sua máquina.
| Vulnerabilidade | Status | Notas |
|---|
| FP-DSS | Novo | Vaza dados obsoletos da unidade de execução de ponto flutuante |
| LVI-NULL | Novo | Descoberto em microarquiteturas não conhecidas como vulneráveis |
| FPVI | Novo | Nova variante e FPVI descobertos na Zhaoxin |
| GDS (Downfall) | Reproduzido | Primeiro fuzzer a detectá-lo |
| MDS (ZombieLoad, RIDL, VRS, ...) | Reproduzido | - |
| Meltdown-US | Reproduzido | A vulnerabilidade Meltdown "original" |
| Meltdown-CPL-REG | Reproduzido | Requer um sistema com nofsgsbase |