
일시적 실행 취약점을 위한 자동 취약점 탐지 프레임워크 (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 명령은 로컬 퍼징 실행을 제어하는 데 사용됩니다:
# 퍼저 시작
tvx run start
# 진행 상황 및 모든 결과 지우기
tvx run cleanup
result 명령result 명령은 퍼징 결과를 검사하고 처리하는 데 사용됩니다:
# 결과 분류
# (퍼징 후 일반적으로 가장 먼저 수행하는 작업)
tvx result classify
# 테스트 파일 내용 보기
tvx result view <result-file.json>
# 지정된 테스트 파일을 독립적인 '재현기'로 내보내기
# 결과를 더 자세히 검사할 수 있음
tvx result export <result-file.json>
# 퍼저 내에서 테스트 케이스 재실행
tvx result rerun
setup 명령 (향후 게시 예정)setup 명령은 의존성을 설치하고 로드하는 데 사용됩니다.
# Trevex 시스템 의존성 설치/확인 (apt 및 python 패키지)
tvx setup install
# tvx Python 환경 로드
tvx setup load
ctrl 명령 (향후 게시 예정)ctrl 명령은 여러 머신으로 구성된 Trevex 퍼징 캠페인을 조정하는 데 사용됩니다.
여러 머신에서 Trevex를 실행하고 결과를 로컬 머신으로 가져올 수 있습니다.
머신 세트는 머신 구성 파일을 통해 정의됩니다.
머신 파일은 한 줄에 하나의 SSH 구성 이름으로 구성됩니다.
또한, #으로 시작하는 주석을 지원합니다.
Trevex는 이러한 머신에 대해 비밀번호 없는 SSH 접근이 가능하다고 가정합니다.
일반적으로 키 기반 인증을 사용하고 키를 로컬 SSH 에이전트(예: ssh-add 사용)에 저장하여 수행합니다.
유효한 구성은 다음과 같습니다:
uarch-lab01 # my server
uarch-lab03 # my dev machine
uarch-lab07 # my other dev machine
ctrl 명령은 서브커맨드 앞에 머신 파일을 지정해야 합니다:
tvx ctrl -m <machine_file.cfg> <subcommand>
일반적인 퍼징 캠페인은 다음과 같습니다:
# 퍼징 캠페인을 위해 머신 준비
# 주의: 실행 중인 커널이 변경되고 머신이 재부팅될 수 있음
# 항상 필요한 것은 아니며, 단계를 건너뛸 수도 있음.
tvx ctrl -m ./my-servers.cfg setup
# 원격 머신에서 Trevex 시작하고 해당 tmux 세션에 연결
# 참고: Trevex가 시작되지 않으면 건너뛴 설정 단계가 원인일 수 있음.
tvx ctrl -m ./my-servers.cfg spawn
# 모든 tmux 세션에서 분리하고 잠시 실행
tvx ctrl -m ./my-servers.cfg detach
# tmux 세션에 다시 연결
tvx ctrl -m ./my-servers.cfg attach
# 완료되면 모든 Trevex 인스턴스 중지
tvx ctrl -m ./my-servers.cfg stop
# 결과를 검색하여 로컬 머신에 저장
# 참고: 조직화에 유용하지만, 실제 재현 단계는
# 퍼징된 *동일한* CPU에서 실행해야 함.
tvx ctrl -m ./my-servers.cfg pull-results
# 모든 머신의 상태 초기화. 모든 진행 상황을 지우고
# 모든 결과를 삭제합니다.
tvx ctrl -m ./my-servers.cfg cleanup
dev 명령이 명령은 순전히 개발 목적으로 사용됩니다. 따라서 현재로서는 문서화되지 않은 상태로 유지됩니다.
"Novel"은 완전히 새로운 발견 또는 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 | Novel | 부동소수점 실행 장치에서 오래된 데이터를 유출합니다 |
| LVI-NULL | Novel | 취약하지 않은 것으로 알려진 마이크로아키텍처에서 발견됨 |
| FPVI | Novel | Zhaoxin에서 새로운 변종 및 FPVI 발견 |
| GDS (Downfall) | Reproduced | 이를 탐지한 최초의 퍼저 |
| MDS (ZombieLoad, RIDL, VRS, ...) | Reproduced | - |
| Meltdown-US | Reproduced | "원본" Meltdown 취약점 |
| Meltdown-CPL-REG | Reproduced | nofsgsbase가 설정된 시스템 필요 |