Debian की weak keys vulnerability का शिकार होने की कहानी
- मार्च 2008 में, लेखक Engine Yard(EY) में काम कर रहे थे
- उस समय EY, GitHub को मुफ्त में infrastructure उपलब्ध कराकर मदद कर रहा था
- GitHub के बढ़ने के साथ SSH login time धीमा होने की समस्या आने लगी
- GitHub, SSH keys को मैनेज करने के लिए standard तरीका
~/.ssh/authorized_keys file इस्तेमाल कर रहा था
- SSH, जब कोई user connect करता है, तो इस file को खोलकर user द्वारा प्रस्तुत key से मेल खाने वाली key को linear search से ढूंढता है
- आम तौर पर keys कम होती हैं, इसलिए समस्या नहीं होती, लेकिन GitHub की तरह users बहुत बढ़ जाएं तो यह धीमा हो जाता है
authorized_keys file की जगह MySQL DB इस्तेमाल करने का फैसला
- कई विकल्पों की समीक्षा करने के बाद, OpenSSH को patch करके key lookup को MySQL DB में करने के लिए बदलने का निर्णय लिया गया
- यह एक सावधानीपूर्वक लिया गया फैसला था, और security को नुकसान न पहुंचे इसके लिए काफी मेहनत की गई
- अप्रैल 2008 की शुरुआत में इसे लागू किया गया और SSH login speed की समस्या हल हो गई
अजीब घटना
- एक महीने बाद, मई की शुरुआत में, कुछ users SSH के जरिए दूसरे users के repositories तक पहुंच पाने लगे
- जांच में पता चला कि अलग-अलग users ऐसी keys इस्तेमाल कर रहे थे जिनका key fingerprint एक ही था
- ऐसा तब तक नहीं हो सकता जब तक key साझा न की गई हो
- users का कहना था कि वे एक-दूसरे को नहीं जानते और उन्हें नहीं पता कि key कैसे लीक हुई
- दूसरे user pairs में भी वही समस्या मिली
- एकमात्र समानता यह थी कि वे सभी Debian या Ubuntu systems इस्तेमाल कर रहे थे
कारण का पता चला
- 13 मई 2008 को DSA-1571-1 जारी होने के साथ सब कुछ स्पष्ट हो गया
- Debian maintainer ने OpenSSL के random number generation code को साफ करते समय गलती से संभावित keys की संख्या घटाकर लगभग 32,000 कर दी
- बहुत से लोग GitHub पर साइन अप करते समय best practice के अनुसार नई keys बना रहे थे, और इसी वजह से collisions हुए
- बाद में लेखक इस समस्या से और अधिक जुड़ गए, जैसे ज्ञात कमजोर keys का उपयोग करके समस्याग्रस्त certificate authorities की पहचान करना
GN⁺ की राय
- इतनी महत्वपूर्ण vulnerability खोजने के लिए यह महसूस करना ज़रूरी है कि "कुछ अजीब है", और फिर लगातार जांच करने का समय और ऊर्जा होना भी ज़रूरी है। आम तौर पर ऐसा अवसर नहीं मिलता, इसलिए कई बार किस्मत भी साथ देनी पड़ती है।
- ज़्यादातर लोग रोज़मर्रा की व्यस्तता में इतने उलझे रहते हैं कि समस्या के मूल कारण तक पहुंचना मुश्किल हो जाता है। हमारे उद्योग के लिए यह महत्वपूर्ण चुनौती है कि हम ऐसी गुंजाइश फिर से हासिल करें।
- OpenSSL सबसे व्यापक रूप से इस्तेमाल होने वाली cryptography libraries में से एक है, इसलिए ऐसी vulnerability का असर बहुत बड़ा होता है। open source की ताकत और कमजोरी दोनों यहां साफ दिखती हैं।
- ऐसी vulnerabilities को रोकने के लिए code review और security audit को मजबूत करना चाहिए, और महत्वपूर्ण हिस्सों में बदलावों की और अधिक सावधानी से समीक्षा करनी चाहिए। लेकिन कोई भी तरीका पूरी तरह परफेक्ट नहीं है।
- इसके बावजूद, open source का फायदा यह है कि experts खुद code देखकर समस्याएं खोज सकते हैं। बंद programs में यह भी संभव नहीं होता।
1 टिप्पणियां
Hacker News राय