
हमारे हमले WhisperPair (CVE-2025-36911) का आधिकारिक संदर्भ कार्यान्वयन और भेद्यता सत्यापन जो Google के Fast Pair प्रोटोकॉल को प्रभावित करता है।
एक व्यावहारिक उपकरण जो यह जाँचता है कि क्या Google Fast Pair उपकरण पेयरिंग, खाता-बंधन, और प्रोटोकॉल-स्तरीय हमलों के प्रति संवेदनशील हैं।
यह रिपॉजिटरी WhisperPair परीक्षण हार्नेस प्रदान करती है, जो Google Fast Pair उपकरणों की सुरक्षा का मूल्यांकन करने के लिए एक उपकरण है। इसे शोधकर्ताओं और व्यवसायियों दोनों के लिए डिज़ाइन किया गया है ताकि वे हमारे निष्कर्षों को दोहरा सकें और अपने स्वयं के उपकरणों का परीक्षण कर सकें।
परियोजना का अवलोकन, प्रभावित उपकरणों और अतिरिक्त संदर्भ के लिए कृपया हमारी वेबसाइट पर जाएँ।
इस रिपॉजिटरी में One Tap to Hijack Them All: A Security Analysis of the Google Fast Pair Protocol पेपर के लिए कृति (artefact) भी शामिल है, जो IEEE S&P 2026 में प्रकाशित हुआ था।
पेपर का पूर्ण संस्करण यहाँ पाया जा सकता है। यदि यह कार्य उपयोगी लगे, तो कृपया पेपर का हवाला देने पर विचार करें:
@inproceedings{whisperpair2026,
title = {One Tap to Hijack Them All: A Security Analysis of the Google Fast Pair Protocol},
author = {Duttagupta, Sayon and Wyns, Seppe and Antonijević, Nikola and Singelée, Dave and Preneel, Bart},
booktitle = {2026 IEEE Symposium on Security and Privacy (S\&P)},
year = {2026},
}
सामग्री हमारे मूल्यांकन की पुनरुत्पादकता को सक्षम करने और शोधकर्ताओं को रक्षात्मक परीक्षण में सहायता करने के लिए प्रदान की गई है। इन सामग्रियों का उपयोग केवल अधिकृत सुरक्षा अनुसंधान और उन उपकरणों पर रक्षात्मक सत्यापन के लिए करें जिनके आप स्वामी हैं या जिनके परीक्षण की स्पष्ट अनुमति है। चूँकि इस रिपॉजिटरी का कोड उपभोक्ता सहायक उपकरणों में कमजोरियाँ प्रदर्शित करता है, इसलिए स्पष्ट लिखित अनुमति के बिना तीसरे पक्ष के उपकरणों पर हमला करने के लिए इसका उपयोग न करें। लेखकों ने सभी प्रयोग परियोजना टीम के स्वामित्व वाले या सूचित सहमति से दान किए गए उपकरणों पर किए। इन उपकरणों को चलाकर आप सहमत हैं कि आप उनका उपयोग केवल रक्षात्मक अनुसंधान, हमारे परिणामों की पुनरुत्पत्ति या उपकरण आत्म-परीक्षण के लिए करेंगे।
[!NOTE] सारांश: सुनिश्चित करें कि आपके पास Linux मशीन है जिसमें ब्लूटूथ एडॉप्टर है, तथा Node.js (LTS) और pnpm स्थापित हैं।
आपbash build.shउसके बादbash start.shचलाकर एक ही मशीन पर UI और सर्वर दोनों चला सकते हैं।
इस रिपॉजिटरी में एक परीक्षण हार्नेस है जो यह मूल्यांकन करता है कि क्या कोई लक्ष्य उपकरण Google Fast Pair की कुछ सुरक्षा आवश्यकताओं को सही ढंग से लागू करता है। हार्नेस यह जाँच सकता है कि पेयरिंग स्थिति विधेय (predicate) सही ढंग से लागू किया गया है या नहीं, क्या पुनः उपयोग किए गए nonce वाले संदेश अस्वीकार किए जाते हैं, और क्या उपकरण अमान्य वक्र (invalid curve) हमले के प्रति संवेदनशील है। हार्नेस में एक बैकएंड सर्वर और एक फ्रंटएंड वेब UI शामिल है।
[!NOTE] यदि आप विशेष रूप से हमलों के कार्यान्वयन की तलाश कर रहे हैं:
./toolkit-server/src/fast-pair-service.tsऔर./toolkit-server/src/protocol.tsमें हमलों और Fast Pair प्रोटोकॉल का कार्यान्वयन शामिल है।
टूलकिट दो घटकों से बना है: सर्वर और UI।
सर्वर को Linux सिस्टम पर चलाया जाना चाहिए, और इसका परीक्षण Raspberry Pi 4 के साथ किया गया है।
UI एक Next.js फ्रंटएंड है जिसका उपयोग सर्वर को नियंत्रित करने के लिए किया जा सकता है, और यह कहीं भी चल सकता है जहाँ Node.js समर्थित है।
UI को नेटवर्क पर सर्वर से जुड़ने में सक्षम होना चाहिए।
हमने हार्नेस का परीक्षण Raspberry Pi OS Lite (64-bit) (6.12.47+rpt-rpi-v8), BlueZ संस्करण 5.82 के साथ किया।
एक Linux मशीन जिसमें BlueZ, Node.js, और pnpm स्थापित हों।
हम Node.js के वर्तमान Long-Term-Support (LTS) संस्करण (v24.14.0) का उपयोग करने की अत्यधिक अनुशंसा करते हैं।
हमने सुनिश्चित किया है कि टूलकिट इस संस्करण का उपयोग करके काम करता है।
पुराने संस्करण v18 तक काम कर सकते हैं, लेकिन पुराने संस्करण संभवतः क्रैश हो जाएंगे या अप्रत्याशित परिणाम देंगे।
nvm.shयदि आप अपने स्थापित Node.js संस्करणों को प्रबंधित करने के लिए nvm का उपयोग करते हैं, तो आपको यह सुनिश्चित करना होगा कि root के पास भी nvm-प्रबंधित Node.js संस्करण तक पहुँच हो।
जैसा कि इस StackOverflow पोस्ट में समझाया गया है, आपको एक नया सिम्बोलिक लिंक बनाने की आवश्यकता हो सकती है।
# स्रोत - https://stackoverflow.com/a/40078875
# SimpleJ द्वारा पोस्ट, समुदाय द्वारा संशोधित। परिवर्तन इतिहास के लिए पोस्ट का 'Timeline' देखें
# 2026-03-30 को पुनः प्राप्त, लाइसेंस - CC BY-SA 4.0
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"
[!NOTE] सर्वर चलाने के लिए, आपको केवल
nodeको लिंक करने की आवश्यकता है।
यदि Node.js किसी बाहरी पैकेज मैनेजर का उपयोग करके भी स्थापित है, तो sudo के लिए उपलब्ध संस्करण nvm द्वारा उपयोग किए गए संस्करण से भिन्न हो सकता है।
आप node -v और sudo node -v के आउटपुट की तुलना करके इसे जाँच सकते हैं।
जबकि हम Node.js LTS v24 की अनुशंसा करते हैं, सर्वर को v18 तक सही ढंग से काम करने में सक्षम होना चाहिए।
pnpmयदि Node.js v24 LTS स्थापित है, तो आपको निम्नलिखित कमांड का उपयोग करके pnpm को सक्षम करने में सक्षम होना चाहिए:
corepack enable
हार्नेस को hcitool और l2ping की भी आवश्यकता है।
आपके Linux वितरण के आधार पर, hcitool उपलब्ध नहीं हो सकता है। आपको bluez-deprecated-tools स्थापित करने की आवश्यकता हो सकती है।
लेखन के समय यह नवीनतम Raspberry Pi OS Lite संस्करण में पूर्व-स्थापित रहता है। (1 अक्टूबर 2025)
यदि ब्लूटूथ एडॉप्टर चालू नहीं है, तो सर्वर इसे चालू करने के लिए rfkill का उपयोग करने का प्रयास करेगा।
Audio Switch एक्सटेंशन का परीक्षण करने के लिए rfcomm की आवश्यकता है।
[!NOTE] सर्वर स्टार्टअप पर इन उपकरणों की उपलब्धता की जाँच करेगा। कंसोल में उन सुविधाओं के बारे में अतिरिक्त जानकारी प्रदर्शित की जाएगी जो उपलब्ध नहीं हो सकती हैं।
परिणामों को पुन: प्रस्तुत करने के लिए एक संवेदनशील उपकरण तक भौतिक पहुँच की आवश्यकता होती है।
सावधान रहें कि अधिकांश विक्रेताओं ने WhisperPair के लिए सॉफ़्टवेयर अपडेट जारी किए हैं, इसलिए आपको पुराने फर्मवेयर वाले उपकरणों की आवश्यकता हो सकती है।
हमने अपने मूल्यांकन में किन उपकरणों का उपयोग किया, इसके बारे में अधिक जानकारी के लिए एक उपकरण चुनना देखें।
यदि आप एक ही (Linux) मशीन पर UI और सर्वर चलाना चाहते हैं, तो आप build.sh और start.sh स्क्रिप्ट का उपयोग कर सकते हैं।
पहले, आवश्यक निर्भरताएँ स्थापित करें और निम्नलिखित का उपयोग करके घटकों का निर्माण करें:
bash build.sh
सुनिश्चित करें कि ब्लूटूथ सक्षम है:
sudo rfkill unblock bluetooth
फिर, निम्नलिखित का उपयोग करके UI और सर्वर चलाएँ:
bash start.sh
अब UI http://localhost:3000 पर पहुँच योग्य होना चाहिए।