One (Thread) Can Keep a (PRNG) Secret, but not Two
यह शोध पत्र XNU कर्नेल के IPv6 Fragment ID PRNG में रेस कंडीशन का लाभ उठाने वाले पहले क्रिप्टोएनालिटिक हमले को प्रस्तुत करता है, जो सीक्वेंस नंबरों की भविष्यवाणी करने और TCP एवं UDP ट्रैफ़िक के ऑफ-पाथ स्पूफिंग को सक्षम करने के लिए है, जिसे अब एप्पल द्वारा CVE-2024-27823 के रूप में पैच कर दिया गया है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप अपने एक मित्र को एक बड़ा, महत्वपूर्ण पत्र भेज रहे हैं। क्योंकि वह पत्र एक अकेले लिफाफे के लिए बहुत बड़ा है, इसलिए डाकघर (नेटवर्क) उसे छोटे टुकड़ों में काट देता है, जिन्हें फ्रेगमेंट्स (fragments) कहा जाता है। यह सुनिश्चित करने के लिए कि उन टुकड़ों को सही क्रम में वापस जोड़ा जा सके, प्रत्येक टुकड़े को एक अद्वितीय टिकट नंबर (जिसे Fragment ID कहा जाता है) दिया जाता है।
जिस कागज़ के बारे में आपने पूछा है, वह एक चतुर तरीका बताता है जिससे एक हैकर इन टिकट नंबरों का पहले से ही अनुमान लगा सकता है, जिससे वह आपके पत्र के एक टुकड़े को एक नकली टुकड़े से बदल सकता है, बिना आपके या आपके मित्र को पता चले।
यहाँ हमले का विवरण सरल रूप में दिया गया है:
1. गुप्त टिकट मशीन (The PRNG)
Apple के कंप्यूटर (macOS और iOS) इन टिकट नंबरों को उत्पन्न करने के लिए अपने मस्तिष्क (कर्नेल) के भीतर एक विशेष "टिकट मशीन" का उपयोग करते हैं। इस मशीन को अप्रत्याशित होना चाहिए, जैसे पासा फेंकना। यदि नंबर वास्तव में यादृच्छिक (random) हैं, तो अगला टिकट अनुमानित नहीं किया जा सकता।
हालाँकि, शोधकर्ताओं ने पाया कि जब यह मशीन व्यस्त होती है, तो यह कैसे काम करती है इसमें एक खामी है।
2. "दो लोग, एक मशीन" की समस्या (The Race Condition)
एक व्यस्त टिकट काउंटर की कल्पना करें जहाँ दो लोग (दो कंप्यूटर थ्रेड्स) ठीक उसी मिलीसेकंड में एक टिकट लेने की कोशिश करते हैं।
- सामान्यतः: मशीन व्यक्ति A को एक टिकट देती है, फिर व्यक्ति B को एक अलग टिकट देती है।
- ग्लिच (खामी): क्योंकि मशीन "थ्रेड-सेफ" नहीं है (इसमें लोगों को एक साथ टिकट लेने से रोकने के लिए कोई लॉक नहीं है), दोनों लोग एक ही शुरुआती नंबर प्राप्त कर सकते हैं। वे दोनों गणना चलाते हैं, लेकिन क्योंकि वे एक ही नंबर से शुरू हुए थे और उन्होंने थोड़े अलग कदम उठाए, वे अंततः एक अजीब पैटर्न उत्पन्न करते हैं।
पैटर्न: शोधकर्ताओं ने पाया कि यदि आप इस "रेस" को ट्रिगर करते हैं, तो मशीन नंबरों का एक विशिष्ट क्रम उत्पन्न करती है जो ऐसा दिखता है: A, B, C, B। ध्यान दें कि B दो बार आता है, जो C द्वारा अलग किया गया है। यह "B-C-B" पैटर्न ही असली सबूत है। यह हमलावर को बताता है, "हे! मशीन में अभी-अभी एक रेस कंडीशन हुई है! अब मैं देख सकता हूँ कि मशीन के आंतरिक गियर कैसे घूम रहे हैं।"
3. कोड को तोड़ना (Cryptanalysis)
एक बार जब हमलावर इन "B-C-B" पैटर्न को देख लेता है, तो वह मशीन को रिवर्स-इंजीनियर कर सकता है।
- मशीन को एक संयोजन ताले (combination lock) की तरह समझें। "B-C-B" पैटर्न हमलावर को ताले के अंदर टंबलर्स (tumblers) की वर्तमान स्थिति के बारे में एक सुराग देता है।
- पर्याप्त सुराग एकत्र करके, हमलावर मशीन की पूरी आंतरिक स्थिति (internal state) का पता लगा सकता है।
- एक बार जब उन्हें आंतरिक स्थिति का पता चल जाता है, तो वे बिल्कुल सटीक भविष्यवाणी कर सकते हैं कि अगले टिकट नंबर क्या होंगे।
4. अदला-बदली (The Swap)
अब जब हमलावर टिकट नंबरों की भविष्यवाणी कर सकता है, तो वे "मैन-इन-द-मिडल" (बीच में घुसने वाला) वाला पैंतरा अपना सकते हैं, लेकिन बिना बीच में आए।
- परिदृश्य: आप एक बड़ी फ़ाइल (जैसे आपके कोड का बैकअप) किसी सर्वर को भेज रहे हैं। फ़ाइल को टुकड़ों में विभाजित किया गया है।
- सुरक्षा: फ़ाइल का पहला टुकड़ा आपके पासवर्ड और हस्ताक्षर (प्रमाणीकरण/authentication) को रखता है। सर्वर यह सुनिश्चित करने के लिए पहले इस टुकड़े की जाँच करता है कि आप वही हैं जो आप कह रहे हैं।
- चाल: हमलावर पहले टुकड़े के आने का इंतज़ार करता है। फिर, वे अपने पूर्वानुमान का उपयोग करके दूसरे टुकड़े के टिकट नंबर का अनुमान लगाते हैं। वे जल्दी से एक नकली दूसरा टुकड़ा भेजते हैं जिसमें एक दुर्भावनापूर्ण संदेश (जैसे वायरस या बदला हुआ फ़ाइल) होता है जिसका टिकट नंबर सही होता है।
- परिणाम: सर्वर को वास्तविक पहला टुकड़ा (वैध पासवर्ड के साथ) और नकली दूसरा टुकड़ा (वायरस के साथ) प्राप्त होता है। वे उन्हें एक साथ जोड़ देते हैं, सोचते हैं कि सब कुछ ठीक है, और संक्रमित फ़ाइल को सहेज लेते हैं। हमलावर ने सुरक्षा जांच को बायपास कर दिया क्योंकि जांच केवल पहले टुकड़े पर हुई थी।
पेपर से वास्तविक दुनिया के उदाहरण
शोधकर्ताओं ने दो विशिष्ट चीजों पर इसका परीक्षण किया:
- NFS (नेटवर्क फ़ाइल सिस्टम): उन्होंने दिखाया कि कैसे एक हमलावर सर्वर पर बैकअप की जा रही फ़ाइल को बदल सकता है। उदाहरण के लिए, वे एक मानक कंप्यूटर कोड फ़ाइल में "ट्रोजन हॉर्स" इंजेक्ट कर सकते हैं। जब एक डेवलपर बाद में उस कोड को कंपाइल करता है, तो वायरस चलता है।
- HTTP (वेब ब्राउज़िंग): उन्होंने दिखाया कि कैसे एक हमलावर नेटवर्क पर यात्रा कर रहे वेब अनुरोध (जैसे लॉगिन या फॉर्म सबमिशन) को बदल सकता है।
यह क्यों महत्वपूर्ण है
- यह नया है: यह पहली बार है जब किसी ने "रेस कंडीशन" (टाइमिंग ग्लिच) का उपयोग करके रैंडम नंबर जेनरेटर को तोड़ने का उपयोग किया है। आमतौर पर, रेस कंडीशंस केवल क्रैश का कारण बनती हैं; यहाँ, उनका उपयोग रहस्य चुराने के लिए किया गया था।
- यह व्यावहारिक है: यह हमला वास्तविक Apple डिवाइस (M1, M2 चिप्स, Intel Macs) पर काम करता है जो macOS और iOS के विभिन्न संस्करणों पर चल रहे हैं।
- समाधान: Apple ने इसे पहले ही पैच (ठीक) कर दिया है। उन्होंने इसे CVE-2024-27823 आईडी दी है। समाधान में टिकट मशीन को "थ्रेड-सेफ" बनाना शामिल है ताकि दो लोग एक ही समय में शुरुआती नंबर नहीं ले सकें।
संक्षेप में: यह पेपर दिखाता है कि यदि किसी कंप्यूटर का रैंडम नंबर जेनरेटर दो चीजों के एक साथ होने से भ्रमित हो जाता है, तो एक हैकर उस भ्रम का उपयोग भविष्य की भविष्यवाणी करने, आपके डेटा के हिस्सों को बदलने और आपके सुरक्षा चेक से मैलवेयर को चुपके से पार कराने के लिए कर सकता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।