
إطار آلي لاكتشاف الثغرات الأمنية لثغرات التنفيذ العابر (IEEE S&P '26)
ندعم البيئات التالية:
تم تطوير تريفكس واختباره على Ubuntu 22.04 LTS و 24.04 LTS.
بينما قد تعمل توزيعات أخرى، فإن بعض أجزاء الإطار، مثل التحقق من التبعيات وتثبيتها، تفترض apt كمدير حزم.
يستهدف تريفكس حالياً بنية x86 فقط. سيأتي دعم بنى أخرى في المستقبل القريب.
نوصي بإضافة الاسم المستعار التالي للشل في ملفات النقاط الخاصة بك:
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
يتم التحكم في تريفكس عبر الأداة المساعدة لسطر الأوامر tvx.
يتبع tvx هذه الصيغة:
tvx <command> <subcommand>
ويدعم الأوامر التالية:
runيستخدم أمر run للتحكم في جلسات الاختبار الموضعي:
# start the fuzzer
tvx run start
# clear the progress made and all results
tvx run cleanup
resultيستخدم أمر result لفحص ومعالجة نتائج الاختبار:
# 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 (سيتم نشره في المستقبل القريب)يستخدم أمر setup لتثبيت وتحميل التبعيات.
# install/check Trevex system dependencies (apt and python packages)
tvx setup install
# load the tvx Python environment
tvx setup load
ctrl (سيتم نشره في المستقبل القريب)يستخدم أمر ctrl لتنسيق حملات الاختبار في تريفكس التي تتكون من عدة أجهزة.
يتيح لك تشغيل تريفكس على أجهزة متعددة وسحب النتائج إلى جهازك.
يتم تعريف مجموعة الأجهزة عبر ملف تكوين الجهاز.
يتكون ملف الجهاز من اسم تكوين SSH واحد لكل سطر.
بالإضافة إلى ذلك، تدعم الصيغة التعليقات التي تبدأ بـ #.
يفترض تريفكس أن لديك وصول 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>
تبدو حملة اختبار نموذجية كما يلي:
# 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يستخدم هذا الأمر لأغراض التطوير فقط. وبالتالي، يظل غير موثق حالياً.
يشير مصطلح 'جديد' إلى النتائج الجديدة تمامًا أو التي كشف فيها TREVEX عن جوانب إضافية، مثل متغيرات أو حالات جديدة على بنى دقيقة لم يكن معروفًا سابقًا أنها متأثرة.
انتقل إلى المجلد ./pocs.
يحتوي المجلد ./pocs/amd-fpdss على إثبات المفهوم الخاص بنا لـ Floating-Point Divider State Sampling (FP-DSS).
FP-DSS هي هجمة تنفيذ عابر تسرب الحالة من وحدات القسمة ذات الفاصلة العائمة SSE و AVX.
يتم تتبعها على أنها CVE-2025-54505 وتناقشها AMD في تنبيه أمني.
تؤثر على معالجات AMD Zen 1 و Zen+.
يحتوي المجلد ./pocs/amd-fpvi-variant على إثبات المفهوم الخاص بنا لمتغير من FPVI لا يتطلب قيم إدخال غير طبيعية.
تناقش AMD هذه النتيجة في تنبيه أمني.
تؤثر على معالجات AMD.
يحتوي المجلد ./pocs/intel-zero-at-ret على إثبات المفهوم الخاص بنا لمتغير Zero-at-Ret من LVI NULL.
يحتوي المجلد ./pocs/zhaoxin-fpvi على إثبات المفهوم الخاص بنا الذي يشغل سلوك FPVI على البنية الدقيقة LuJiaZui من Zhaoxin.
الورقة متاحة هنا. يمكنك الاستشهاد بعملنا باستخدام إدخال 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 | جديد | تسرب بيانات قديمة من وحدة تنفيذ الفاصلة العائمة |
| LVI-NULL | جديد | تم اكتشافها على بنى دقيقة لم تكن معروفة بأنها عرضة للخطر |
| FPVI | جديد | تم اكتشاف متغير جديد و FPVI على Zhaoxin |
| GDS (Downfall) | تم إعادة إنتاجها | أول أداة اختبار تكتشفها |
| MDS (ZombieLoad, RIDL, VRS, ...) | تم إعادة إنتاجها | - |
| Meltdown-US | تم إعادة إنتاجها | ثغرة Meltdown 'الأصلية' |
| Meltdown-CPL-REG | تم إعادة إنتاجها | تتطلب نظامًا يحتوي على nofsgsbase |