
क्षणिक निष्पादन कमजोरियों के लिए स्वचालित कमजोरी का पता लगाने का ढाँचा (IEEE S&P '26)
हम निम्नलिखित वातावरणों का समर्थन करते हैं:
Trevex को Ubuntu 22.04 LTS और 24.04 LTS पर विकसित और परीक्षण किया गया है।
हालांकि अन्य वितरण काम कर सकते हैं, फ्रेमवर्क के कुछ भाग, जैसे निर्भरता जांच और स्थापना, apt को पैकेज मैनेजर मानते हैं।
Trevex वर्तमान में केवल 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
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 और पायथन पैकेज)
tvx setup install
# tvx पायथन वातावरण लोड करें
tvx setup load
ctrl कमांड (निकट भविष्य में प्रकाशित किया जाएगा)ctrl कमांड का उपयोग कई मशीनों से युक्त Trevex फ़ज़िंग अभियानों को व्यवस्थित करने के लिए किया जाता है।
यह आपको कई मशीनों पर Trevex प्रारंभ करने और परिणामों को अपनी मशीन पर खींचने की अनुमति देता है।
मशीनों का सेट एक मशीन कॉन्फ़िग फ़ाइल के माध्यम से परिभाषित किया जाता है।
मशीन फ़ाइल में प्रति पंक्ति 1 SSH कॉन्फ़िग नाम होता है।
इसके अतिरिक्त, प्रारूप # से शुरू होने वाली टिप्पणी का समर्थन करता है।
Trevex मानता है कि आपके पास इन मशीनों तक पासवर्ड रहित SSH पहुंच है।
आमतौर पर, यह कुंजी-आधारित प्रमाणीकरण का उपयोग करके और कुंजियों को आपके स्थानीय SSH एजेंट में संग्रहीत करके किया जाता है, उदाहरण के लिए ssh-add का उपयोग करके।
एक मान्य कॉन्फ़िग ऐसा दिखता है
uarch-lab01 # मेरा सर्वर
uarch-lab03 # मेरी डेव मशीन
uarch-lab07 # मेरी अन्य डेव मशीन
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 कमांडयह कमांड पूरी तरह से विकास उद्देश्यों के लिए उपयोग किया जाता है। इसलिए, यह अभी के लिए अप्रलेखित रहता है।
"नवीन" उन निष्कर्षों को संदर्भित करता है जो पूरी तरह से नए हैं या जहां TREVEX ने अतिरिक्त पहलुओं का खुलासा किया है, जैसे कि माइक्रोआर्किटेक्चर पर नए प्रकार या उदाहरण जो पहले प्रभावित होने के लिए ज्ञात नहीं थे।
| Vulnerability | Status | Notes |
|---|---|---|
| FP-DSS | नवीन | फ़्लोटिंग-पॉइंट निष्पादन इकाई से पुराने डेटा का रिसाव |
| LVI-NULL | नवीन | माइक्रोआर्क पर खोजा गया जो कमज़ोर नहीं माने जाते थे |
| FPVI | नवीन | नया प्रकार और Zhaoxin पर FPVI खोजा गया |
| GDS (Downfall) | पुनरुत्पादित | इसे पहचानने वाला पहला फ़ज़र |
| MDS (ZombieLoad, RIDL, VRS, ...) | पुनरुत्पादित | - |
| Meltdown-US | पुनरुत्पादित | "मूल" Meltdown कमज़ोरी |
| Meltdown-CPL-REG | पुनरुत्पादित | nofsgsbase वाले सिस्टम की आवश्यकता है |
निर्देशिका ./pocs पर जाएं।
फ़ोल्डर ./pocs/amd-fpdss में फ़्लोटिंग-पॉइंट डिवाइडर स्टेट सैंपलिंग (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 के जीरो-एट-रिट प्रकार के लिए हमारा 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}
}
हम यह कोड ज्यों-का-त्यों प्रदान कर रहे हैं। आप स्वयं, अपनी संपत्ति और डेटा, और दूसरों को इस कोड के कारण होने वाले किसी भी जोखिम से बचाने के लिए जिम्मेदार हैं। यह कोड आपकी मशीन पर अप्रत्याशित और अवांछनीय व्यवहार उत्पन्न कर सकता है।