2 पॉइंट द्वारा GN⁺ 2024-01-29 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • ब्रिटेन की Class 800 ट्रेनों के दिव्यांग-उपयोगी टॉयलेट में ऐसा क्षण मिला, जहाँ दरवाज़े की स्थिति और lock lever की controller-आधारित पहचान आपस में नहीं मिलती, और इसका उपयोग करके दरवाज़ा बंद होते ही लॉक हो जाने वाली DoS vulnerability की पुष्टि हुई
  • पुरानी button-आधारित डिज़ाइन में “बंद करना” और “लॉक करना” अलग थे, इसलिए बाहर से टॉयलेट को लॉक करके उसे अनुपयोगी बना देना रोका जा सकता था, लेकिन उपयोगकर्ताओं के लिए lock की स्थिति को लेकर भ्रम होना आसान था
  • नई lever-आधारित डिज़ाइन ज़्यादा सहज है, लेकिन Hitachi के तरीके में lever को वापस लाने के बजाय metal pin से उसकी चाल रोकी जाती है, जिससे lever के play और controller की पहचान के बीच एक gap बन जाता है
  • पुनरुत्पादन का तरीका यह है: दरवाज़ा बंद करने के बाद lever को बस इतना हिलाया जाए कि lock pin न फँसे, फिर दरवाज़ा दोबारा खोला जाए ताकि pin हवा में बाहर आ जाए, और उसके बाद lever को lock position में ले जाया जाए
  • एक test में door controller out-of-order mode में चला गया, लेकिन यह प्रदर्शन केवल तब किया गया जब कोई इंतज़ार नहीं कर रहा था और ट्रेन में कई टॉयलेट मौजूद थे

Class 800 टॉयलेट दरवाज़े की लॉक संरचना

  • ब्रिटेन की Class 800 ट्रेनों में electric door वाले दिव्यांग-उपयोगी टॉयलेट होते हैं
  • पिछली पीढ़ी के टॉयलेट में अंदर open, close, lock बटन होते थे
    • उपयोगकर्ता को close दबाकर दरवाज़ा बंद होने का इंतज़ार करना पड़ता था, फिर lock दबाना होता था
    • अलग unlock बटन नहीं था; अंदर का open बटन दबाने पर अपने-आप unlock होकर दरवाज़ा खुल जाता था
  • “बंद करना” और “लॉक करना” अलग रखने से ऐसा denial-of-service attack रोका जा सकता है जिसमें कोई close दबाकर, दरवाज़ा बंद होने से पहले बाहर निकल जाए और टॉयलेट को स्थायी रूप से अनुपयोगी बना दे
  • लेकिन state machine से परिचित न होने वाले उपयोगकर्ताओं के लिए यह उलझनभरा था, और दरवाज़ा सही तरह लॉक न कर पाने या लॉक समझ लेने जैसी स्थिति बन सकती थी

lever-आधारित लॉक में बनी vulnerability

  • नए दिव्यांग-उपयोगी टॉयलेट में अक्सर बटन की जगह lever हिलाकर दरवाज़ा लॉक किया जाता है
    • उपयोगकर्ता के लिए इसे समझना अधिक सहज है
    • लेकिन यह lever असली lock mechanism से सीधे जुड़ा mechanical lever नहीं, बल्कि microcontroller input है
  • ब्रिटेन की कुछ ट्रेनों में, अगर दरवाज़ा खुला हो और lever को lock position में ले जाने की कोशिश की जाए, तो lever अपने-आप वापस unlocked position में लौट आता है, ताकि state mismatch संभाली जा सके
  • Hitachi की विधि में lever को वापस लाने के बजाय, जब उसे lock position में नहीं जाना चाहिए तब एक छोटा metal pin बाहर निकालकर lever को unlocked position पर रोका जाता है
  • vulnerability उस play में पैदा होती है जो lever के “locked” के रूप में detect होने वाले बिंदु और metal pin के वास्तव में फँस सकने वाले बिंदु के बीच मौजूद है
    • दरवाज़ा बंद करने के बाद lever को ऐसी स्थिति तक ले जाया जा सकता है जहाँ pin न फँसे, लेकिन controller अभी भी उसे locked न पढ़े
    • उस स्थिति में अगर दरवाज़ा खोला जाए, तो lock pin हवा में बाहर निकल आता है
    • क्योंकि pin lever को छू नहीं रहा होता, lever को locked position तक ले जाना संभव हो जाता है
    • इसके बाद close बटन काम करता रहता है, और दरवाज़ा बंद होते ही तुरंत लॉक हो जाता है
  • इस समस्या का प्रदर्शन करने वाला वीडियो सार्वजनिक किया गया
  • Class 800 में दूसरे test के दौरान टॉयलेट door controller out-of-order mode में चला गया
    • पहले test में ऐसा नहीं हुआ था
    • लेखक के ट्रेन से उतरते समय टॉयलेट फिर से काम कर रहा था
    • यह पता नहीं कि कुछ समय बाद अपने-आप reset हुआ या ट्रेन में किसी ने उसे reset किया
  • यह प्रदर्शन केवल तब किया गया जब आसपास कोई टॉयलेट का इंतज़ार नहीं कर रहा था और ट्रेन में कई टॉयलेट उपलब्ध थे; वीडियो का उद्देश्य वास्तव में टॉयलेट पर DoS करना नहीं, बल्कि इस संभावना को दिखाना था

1 टिप्पणियां

 
GN⁺ 2024-01-29
Hacker News की राय
  • प्राथमिक स्कूल में हाथ से घुमाए जाने वाले analog lock में भी ऐसा होता था। दरवाज़े के बाहर इस तरह का पेच की नाली जैसा interface होता था, इसलिए क्लास ख़त्म होने से 5 मिनट पहले “मुझे बाथरूम जाना है” कहकर बाहर जाने वाला बच्चा screwdriver या Swiss Army knife से बाहर से सभी cubicle lock कर देता था, और फिर वे सब इस्तेमाल में दिखते थे

    • प्राथमिक स्कूल में मैं cubicle के अंदर से दरवाज़ा lock करके फिर ऊपर से चढ़कर निकल जाया करता था
  • स्वीडन की ट्रेन में काम निपटाते समय एक बार electric door खुलना शुरू हो गया था। handle हाथ की पहुँच में था, इसलिए मैंने उसे धकेलकर बंद करने की कोशिश की, लेकिन आख़िर में पैंट ऊपर करना ज़्यादा ज़रूरी था
    उस coach का toilet सामान्य 2-सीटर से बड़ा था, और बाहर toilet की तरफ़ मुख किए सीटें भी थीं। काफ़ी शर्मिंदगी हुई, लेकिन सब लोग नंगे ही पैदा होते हैं, इसलिए आख़िरकार यह एक मज़ेदार किस्सा बन गया। वजह जानने के लिए लौटकर देखने लायक जिज्ञासा नहीं थी, इसलिए मैं बस अपनी सीट पर लौट गया और जितना हो सके अनदेखा होने की कोशिश की

    • UK की Pendolino series की ट्रेनें, कम से कम Virgin के संचालन वाले दौर में, खुलने/बंद होने के दोहराते vibration loop के लिए बदनाम थीं। हर स्टेशन से निकलने के बाद staff announcement में बताया जाता था कि किस coach का toilet काम कर रहा है, और दूसरे coach से आती बदबू के लिए माफ़ी माँगना भी आम बात थी
  • पहले ऑस्ट्रेलिया में digital payphone के शुरुआती प्रयास जैसा दिखने वाला एक उपकरण था, और कुछ अब भी बचे हैं, लेकिन शायद ज़्यादा समय तक नहीं। receiver उठाने से पहले और उठाते समय language button दबाए रखने पर payphone “Out of Order” दिखाता था, और receiver वापस रखने के बाद भी अगला व्यक्ति receiver उठाए तब तक वही संदेश बना रहता था
    हाई स्कूल के छात्र होने के नाते, हमने बहुत से लोगों की ज़िंदगी ख़राब करने के लिए पूरी तरह वैज्ञानिक तरीका अपनाया। अगर 3 में से 2 payphone को ऐसे बंद छोड़ दिया जाए, तो कोई भी ख़राब दिख रहे receiver को काफ़ी देर तक जाँचकर उसकी स्थिति वापस नहीं करता था, और नतीजे में चल रहे 1 phone के सामने लंबी लाइन लग जाती थी। लेकिन अगर 3 के 3 बंद कर दिए जाएँ, तो ग़ुस्साए उपयोगकर्ता receiver जाँचते-जाँचते सबको फिर से normal कर देते थे। यह हमारे इलाक़े के लगभग हर payphone cluster में दोहराकर देखा गया था

  • UK route पर चलने वाले किसी coach में, शायद मैंने Bradford के पास देखा था, अंदर का close button ठीक ऐसी ही खराब design वाला था।
    मुझे निकलते समय चीज़ें समेट देने की आदत है, इसलिए ‘close’ दबाने का reflex था और मुझे सच में बहुत सावधान रहना पड़ता था। लगता है पहली बार इस्तेमाल करते समय मैंने सच में उसे दबा दिया था, और click की आवाज़ सुनने के बाद ही समझा कि मैंने दूसरे यात्रियों के साथ क्या कर दिया

    • वह शायद class 333 होगा
  • बंद करना और lock करना अलग क्रिया बनाने के पीछे मनोवैज्ञानिक पहलू भी है। डेनमार्क की कुछ ट्रेनों में सिर्फ़ ‘close’ button होता है, जो पहली बार देखने पर काफ़ी चौंकाता है

  • यह सही है कि पुरानी design लोगों को confuse करती थी, लेकिन समझ नहीं आता कि साफ़-साफ़ दिखने वाले समाधान, यानी unlock button जोड़ने, को क्यों नहीं चुना गया। या फिर ऐसा mechanical lock इस्तेमाल किया जा सकता था जिस पर लोग स्पष्ट रूप से भरोसा कर सकें
    मैंने जो सबसे ख़राब toilet lock देखा, वह एक अजीब सा button था जो दबाने पर lock होता था। वह इतना अविश्वसनीय था कि सच में lock हुआ या नहीं, पता ही नहीं चलता था, इसलिए मालिक ने दरवाज़ा lock करने का सही तरीका और यह कि वह सच में lock होता है, इसकी व्याख्या वाला sign लगा रखा था

    • retrofit के हिसाब से कहीं आसान तरीका open button के बगल में “Open/Unlock” label लगा देना होगा
  • समझ नहीं आता कि ट्रेन के toilet के पुराने mechanical lock में दिक्कत क्या थी। कई यात्री, ख़ासकर बुज़ुर्ग, इन चमकदार electric सिस्टम को ठीक से इस्तेमाल नहीं कर पाते, और सच में lock न हुए दरवाज़ों की वजह से शर्मनाक स्थितियाँ अक्सर बनती थीं। कुछ लोग तो शायद इन्हें जानबूझकर ख़राब करने में मज़ा लेते हैं
    कभी-कभी किसी को सच में बहुत ज़रूरी काम होता है और उसे ट्रेन में चलने वाला toilet चाहिए होता है

    • मैं अभी बूढ़ा नहीं हूँ, लेकिन इसी तरह के ट्रेन toilet door से जूझ चुका हूँ। इस बेवकूफ़ डिवाइस में अलग lock button की ज़रूरत ही क्यों है? toilet में जाकर “close door” दबाने के बाद भी ऐसी स्थिति आख़िर कब होती है जब आप नहीं चाहेंगे कि दरवाज़ा lock हो?
      button design भी ख़ास स्पष्ट नहीं था। sliding door भारी होता है, इसलिए powered opening/closing सिस्टम का फ़ायदा समझ आता है, लेकिन locking physical mechanism होना चाहिए था, या कम से कम physical mechanism जैसा व्यवहार करना चाहिए था
    • शायद इस तरह के गोल sliding door manual closure की तुलना में बहुत कम जगह लेते होंगे। समस्या यह है कि ऐसे गोल sliding door को हाथ से बंद करना काफ़ी भारी हो सकता है, ख़ासकर wheelchair users के लिए
      अगर disabled users को भी toilet जैसी निजी प्रक्रिया में जितना हो सके ख़ुद नियंत्रण देना हो, तो शायद यही लगभग एकमात्र तरीका रहा होगा
    • यहाँ संदर्भ disabled users के लिए design किए गए toilet का है। कुछ disabilities में latch या lever चलाना बहुत कठिन होता है, और उस संदर्भ में button दबाना ज़्यादा accessible operation माना जाता है
    • विचार प्रयोग के तौर पर देखें तो mechanical सिस्टम को emergency में guard के लिए जल्दी खोलना मुश्किल हो सकता है, और लोग इस्तेमाल हो रहे दरवाज़े को धक्का मारते हुए उसे ज़्यादा बार ख़राब भी कर सकते हैं। अगर सिस्टम से परिचित हों, तो जल्दी में एक extra button ज़्यादा सुविधाजनक लग सकता है, और handle या latch को कम छूने से सफ़ाई बनाए रखना भी आसान होता है
      इसके अलावा स्टेशन पर इसे अपने-आप lock किया जा सकता है, ताकि लोग इसे सिर्फ़ स्टेशनों के बीच इस्तेमाल करें, और चढ़ने-उतरने के इंतज़ार के दौरान बदबू कम हो
    • पुराने mechanical lock की एकमात्र समस्या शायद यह थी कि वह काफ़ी “modern” नहीं लगता था, यानी बहुत ज़्यादा सरल और अनुमानित था
      हालाँकि interlock न हो तो mechanical lock को भी आसानी से denial-of-service स्थिति में बदला जा सकता है। जिसे कभी car या building में चाबी अंदर छोड़कर बाहर से lock होना पड़ा हो, वह इसे ज़रूर याद करेगा
  • ऐसी mechanical hacking मिलना हमेशा मज़ेदार होता है। बस दिक्कत यह है कि toilet का इंतज़ार करते हुए अंदर कोई न होने पर भी lock मिला तो वह बेचारा शायद मैं ही होऊँगा
    इन चीज़ों को test करना ज़्यादा कठिन है, और यह सिर्फ़ software या state machine की समस्या नहीं है। कुछ mechanical “hack” सच में ख़तरनाक भी होते हैं, जैसे Therac-25 जैसी radiation therapy machine, जिसने ग़लत radiation dose दे दी थी

    • यह ज़्यादा उस तरह लगता है जैसे किसी की car के keyhole में glue भर दो, जिससे उसे खोलना बहुत मुश्किल हो जाए, और फिर कहो “देखा, यह सुरक्षित नहीं है”
  • समझ नहीं आता कि हर चीज़ में microcontroller क्यों डालना ज़रूरी है। ट्रेन का टॉयलेट मूल रूप से हवाई जहाज़ के टॉयलेट जैसा ही use case है, और जिन भी हवाई जहाज़ों में मैं बैठा हूँ, उनमें पुराने स्लाइडिंग लॉक थे और वे बिना किसी समस्या के काम करते थे
    सोच रहा हूँ कि क्या मूल लेख में बताए गए ट्रेन टॉयलेट में ऐसा timer है जो किसी को पूरी यात्रा के दौरान टॉयलेट घेरकर बैठने से रोकता है, इसलिए mechanical lock काम नहीं करेगा

    • microcontroller के प्रति जुनून सचमुच मौजूद है। हर चीज़ को mechanical की बजाय software से करने की चाह भी वैसी ही है, और कारों की touchscreen इसका उदाहरण हैं। एक developer के रूप में मैं इस सोच को अच्छी तरह समझता हूँ कि बाद में ज़रूरत पड़े तो सब कुछ बदला जा सके, इसलिए उसे software-defined बनाया जाए, लेकिन लगता है कि इससे नतीजे धीरे-धीरे खराब होते जा रहे हैं
      मैंने सुना है कि पक्की सड़कों पर लगे self-cleaning टॉयलेट, “superloos”, में समय-सीमा होती है और खुलने से कुछ मिनट पहले voice warning चलती है। इससे भी ज़्यादा चिंताजनक वे मामले हैं जिनमें अंदर कोई मौजूद होने पर भी auto-cleaning शुरू हो गई। अगर पिछला व्यक्ति पैसे बचाने के लिए दरवाज़ा पकड़े रखे ताकि अगला व्यक्ति अंदर जा सके, तो टॉयलेट यह मान लेता है कि वह खाली है और किसी “unreported” उपयोगकर्ता को पानी में भिगोने की कोशिश करता है
    • ऐसे ट्रेन door lock सिस्टम अपनी स्थिति ट्रेन के आगे लगे in-use indicator तक भी भेजते हैं। इसलिए पता चल जाता है कि सबसे नज़दीकी खाली टॉयलेट कहाँ है, और आप तय कर सकते हैं कि थोड़ा और रुका जाए या बहुत ज़रूरी हो तो दूर वाले कोच तक जाया जाए
      साथ ही, इस्तेमाल में न होने पर बदबू रोकने के लिए यह दरवाज़ा अपने-आप बंद कर देता है। सबसे बड़ा कारण यह है कि दरवाज़ा wheelchair-friendly नहीं है। कई wheelchair users में दरवाज़ा हिलाने जितनी ताकत या फुर्ती नहीं होती। इन तीनों ज़रूरतों को पूरा करने वाला mechanical door system डिज़ाइन करना काफ़ी मुश्किल है, लेकिन UI निश्चित रूप से बेहतर हो सकता है
      व्यक्तिगत रूप से, मैं शायद इसे ऐसा बनाता कि दरवाज़ा बंद होने के पूरे समय ‘Close’ बटन दबाए रखना पड़े। बीच में बटन छोड़ते ही वह फिर खुल जाए, और पूरी तरह बंद होने के बाद ही बंद और ‘locked’ स्थिति में रहे। असली mechanical lock की ज़रूरत नहीं, लेकिन जलने वाला बड़ा लाल ताले का indicator ज़रूर होना चाहिए
    • इसका बड़ा हिस्सा parts cost कम करने की वजह से है। मज़बूत पूरी तरह mechanical सिस्टम की तुलना में मज़बूत solenoid lock और microprocessor control को ज़्यादा सस्ते में लगाया जा सकता है। Mechanical सिस्टम को mechanical maintenance चाहिए होती है, और लोग lever पर अपना पूरा वज़न डालने जैसी हर तरह की गलत input भी देते हैं
      सतह के बराबर बटन या तस्वीर में दिखने वाले कम-ऊँचाई वाले lever का वज़न और travel कम होता है, और उन्हें mechanical advantage देने की ज़रूरत नहीं पड़ती, इसलिए कुछ तरह के mechanical attacks के ख़िलाफ़ वे अधिक मज़बूत हो सकते हैं। जहाँ संभव हो, मुझे software के बिना simple mechanism पसंद हैं, लेकिन मैं लागत और reliability की समस्याओं से सीधे जूझने वाली स्थिति में नहीं हूँ
    • थोड़ा संबंधित है, लेकिन अभी पता चला कि Boeing 737MAX cockpit के CDU keyboard को उसी keyboard की नकल करने वाली touchscreen से बदल रहा है
      https://www.gableseng.com/wp-content/uploads/2020/05/G7330-....
      मैं तो निरुत्तर हूँ
    • मैं भी पहले ऐसा ही सोचता था, लेकिन बाद में पढ़कर मेरी राय बदली कि जिन लोगों को movement function या muscles से जुड़ी दिक्कतें होती हैं, उनके लिए physical force न माँगने वाले push button या ऊपर वाले lever जैसी चीज़ें कहीं ज़्यादा आसान होती हैं
      लगता है कि button लाने की मूल वजह accessibility थी, और मेरी समझ में नवीनतम हवाई जहाज़ भी इसी कारण ऐसे ही मिलते-जुलते सिस्टम की ओर जा रहे हैं
  • UK की ट्रेनों के टॉयलेट खराब डिज़ाइन के उदाहरणों का क्लासिक संग्रह हैं। कुछ लोग दरवाज़ा lock नहीं कर पाते और कंपार्टमेंट के सामने खुल जाते हैं, कुछ लोग दरवाज़ा बंद नहीं कर पाते, और कुछ उसे खोल नहीं पाते
    और यह तब की बात है जब आप टॉयलेट तक पहुँच भी जाएँ और पिछले उपयोगकर्ता ने उसे बर्बाद न किया हो

    • पुराने टॉयलेट बहुत छोटे होते थे, सामान्य handle से जल्दी खुल-बंद हो जाते थे, और उनमें बड़ा, सरल lock होता था। लेकिन वह तरीका कुछ यात्रियों, जैसे wheelchair users या handle पकड़ने में कठिनाई वाले लोगों, के लिए उपयुक्त नहीं है
      किसी एक समूह के लिए टॉयलेट की accessibility बढ़ाने से दूसरे समूह के लिए वह घट सकती है। यह इस बात का सवाल है कि समाज किस स्तर का संतुलन चुनता है। UK की कुछ ट्रेनों में संतुलन ठीक है, जहाँ बड़ा wheelchair-accessible टॉयलेट और छोटा पारंपरिक टॉयलेट दोनों होते हैं, लेकिन अक्सर उस बात की जानकारी देने में दिक्कत होती है