1 पॉइंट द्वारा GN⁺ 2025-03-15 | 1 टिप्पणियां | WhatsApp पर शेयर करें

> "हमें 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 टिप्पणियां

 
GN⁺ 2025-03-15
Hacker News की राय
  • यह थ्रेड मुख्य रूप से WebUSB के बारे में है, OP के बारे में नहीं। WebUSB एक शानदार हैक है

    • एक तरफ WebUSB चाहिए, लेकिन आम लोगों के पास WebUSB हो, यह नहीं चाहिए
    • सहमति पॉपअप बेअसर हैं, लोग बिना सोचे-समझे हर चीज़ के लिए सहमत हो जाते हैं
    • मुझे Internet Explorer का permissions मॉडल पसंद है। किसी फीचर का उपयोग करने के लिए किसी साइट को खास तौर पर "trusted" साइट के रूप में चिह्नित करना पड़ता है
    • अगर WebUSB, WebBluetooth जैसी जोखिमभरी API इस्तेमाल करने के लिए किसी साइट को "trusted" साइट के रूप में चिह्नित करना पड़े, तो गलती से ऐसा करने वाले लोग कम होंगे
  • Firefox arbitrary USB devices के साथ communication को सपोर्ट नहीं करता। लेकिन यह U2F security keys के साथ USB communication को सपोर्ट करता है

    • यह project microcontroller को U2F security key की तरह दिखाने के लिए प्रोग्राम करता है। लक्ष्य Firefox के जरिए USB पर microcontroller के साथ communication करना है
    • Javascript Credentials API और थोड़ी चतुराई का इस्तेमाल करके microcontroller को data भेजा जाता है और response लिया जाता है
  • जो लोग WebUSB का उपयोग करते हैं, वे कहते हैं कि यह बेहतरीन है, और जो इसका उपयोग नहीं करते, वे उलझन में रहते हैं कि इसकी ज़रूरत क्यों है

    • मेरे लिए WebUSB बेहतरीन था। ज़्यादातर WebUSB utilities standalone installable apps के रूप में भी उपलब्ध हैं, लेकिन web version का उपयोग करना ज़्यादा आसान है
    • मुझे लगा था कि यह उन लोगों के बीच लोकप्रिय होगा जो हर चीज़ के लिए अलग app रखने से थक चुके हैं
  • QMK/Via firmware वाले keyboard को WebUSB से customize करना एक बुरा सपना है

    • browser के firmware के साथ interact करने से पहले /dev/hidraw device को पूरी तरह पढ़ने योग्य बनाना पड़ता है
    • उपयोग के लिहाज़ से यह बहुत अप्रिय है, और सभी offline customization tools Electron आधारित हैं
    • एक व्यावहारिक समाधान यह है कि वेबसाइट पर template json file के रूप में मनचाहा keyboard layout configure किया जाए, फिर result json डाउनलोड किया जाए, और उसके बाद sudo-स्तर के flashing tool से keyboard पर firmware flash किया जाए
  • USB Serial एक बेहतरीन tool है, और अब browser का उपयोग करके devices configure करने वाले tools की सूची मौजूद है

    • इनमें ESPHome, Betaflight, ELRS, Flipper आदि शामिल हैं
    • WebKit को पर्याप्त support नहीं मिलता क्योंकि इसे Apple विकसित करता है। लेकिन Firefox में hardware "connectivity" support की कमी है और यह developers के लिए अनुकूल नहीं है
    • यह support इसलिए नहीं जोड़ता क्योंकि उसका मानना है कि device access के लिए user consent पर्याप्त नहीं है। Blink ने साबित किया है कि इसे सुरक्षित बनाया जा सकता है
  • जो लोग devices को बार-बार flash करते हैं, उनके लिए इसका फायदा स्पष्ट है। लेकिन आम उपयोगकर्ताओं के लिए यह महत्वपूर्ण नहीं है

    • अलग tool या browser की ज़रूरत पड़ सकती है। Flash Browser अतिरिक्त tools के साथ आ सकता है
  • हो सकता है कि USB ports का उपयोग browser-आधारित code के लिए न करना ही बेहतर हो

  • Pixel phone पर GrapehenOS flash करना सबसे सुखद और तेज़ OS installation अनुभवों में से एक था

  • private key को "master" key से encrypt किया जाता है, और encrypted private key को key handle के रूप में लौटाया जाता है

    • अनंत अवसर देना आखिरकार उल्टा असर डाल सकता है
  • WebUSB से जुड़ा एक राजनीतिक विवाद है

    • जिज्ञासा है कि वह राजनीतिक विवाद क्या है