WebUSB सपोर्ट न होने की समस्या के लिए Firefox हैक करने का तरीका
(github.com/ArcaneNibble)> "हमें WebUSB की ज़रूरत नहीं है!"
- वेब पेज के लिए WebUSB के बिना USB डिवाइस तक पहुंचने का एक तरीका मौजूद है। साथ ही, डिवाइस को यूज़र सहमति की आवश्यकताओं को बायपास करने के लिए डिज़ाइन किया जा सकता है।
त्वरित डेमो
- Raspberry Pi Pico पर u2f-hax.uf2 लोड करें, और localhost या किसी अन्य सुरक्षित context में index.html लोड करें।
- "On!" और "Off!" बटन LED को टॉगल करते हैं, और pin
GP22की स्थिति नियमित रूप से पेज पर अपडेट होती है।
यह कैसे संभव है?
- Pico को U2F dongle (भौतिक 2-स्टेप security key) का emulation करने के लिए प्रोग्राम किया गया है।
- security feature की जगह, मनमाना डेटा
U2F_AUTHENTICATEसंदेश के "key handle" और signature में छिपाया जाता है। - अगर key handle 0xfeedface से शुरू होता है, तो Pico तुरंत user presence को "verify" करता है और डेटा लौटाता है।
यह संभव क्यों है?
- U2F key handle को ऐसे opaque data blob के रूप में डिज़ाइन किया गया है जिसका "ownership" security dongle के पास होता है।
- इसे इस तरह बनाया गया है कि कम-लागत वाले dongle कई वेबसाइटों से जुड़े रह सकें।
- dongle आंतरिक रूप से एक unique "master" cryptographic key स्टोर करता है, और registration के समय नया public/private key pair बनाकर लौटाता है।
- key handle को opaque तरीके से handle किया जाता है, इसलिए उसमें मनमाना डेटा छिपाया जा सकता है।
डेटा वापस कैसे लौटाया जाता है
- ECDSA signature में डेटा छिपाया जाता है।
- signature दो संख्याओं (r, s) से बना होता है, और हर संख्या एक निश्चित range के भीतर calculate की जाती है।
- Chrome यह जांचता है कि signature की संख्याएँ range के भीतर हैं या नहीं, लेकिन Firefox यह जांच नहीं करता।
- Chrome की बुनियादी validity check को bypass करने के लिए हर संख्या का पहला byte 0x7f पर सेट किया जाता है।
क्या यह एक security vulnerability है?
- नहीं, और इससे किसी भी मनमाने USB डिवाइस तक पहुंच नहीं मिलती।
- यह केवल उन डिवाइस पर काम करता है जो जानबूझकर नियमों का उल्लंघन करते हैं।
- अधिकांश प्लेटफ़ॉर्म पर USB डिवाइस का security model अपने आप में संदिग्ध है।
- किसी भी मनमाने, अज्ञात डिवाइस को अपने कंप्यूटर से कनेक्ट नहीं करना चाहिए।
1 टिप्पणियां
Hacker News की राय
यह थ्रेड मुख्य रूप से WebUSB के बारे में है, OP के बारे में नहीं। WebUSB एक शानदार हैक है
Firefox arbitrary USB devices के साथ communication को सपोर्ट नहीं करता। लेकिन यह U2F security keys के साथ USB communication को सपोर्ट करता है
जो लोग WebUSB का उपयोग करते हैं, वे कहते हैं कि यह बेहतरीन है, और जो इसका उपयोग नहीं करते, वे उलझन में रहते हैं कि इसकी ज़रूरत क्यों है
QMK/Via firmware वाले keyboard को WebUSB से customize करना एक बुरा सपना है
USB Serial एक बेहतरीन tool है, और अब browser का उपयोग करके devices configure करने वाले tools की सूची मौजूद है
जो लोग devices को बार-बार flash करते हैं, उनके लिए इसका फायदा स्पष्ट है। लेकिन आम उपयोगकर्ताओं के लिए यह महत्वपूर्ण नहीं है
हो सकता है कि USB ports का उपयोग browser-आधारित code के लिए न करना ही बेहतर हो
Pixel phone पर GrapehenOS flash करना सबसे सुखद और तेज़ OS installation अनुभवों में से एक था
private key को "master" key से encrypt किया जाता है, और encrypted private key को key handle के रूप में लौटाया जाता है
WebUSB से जुड़ा एक राजनीतिक विवाद है