NoWayOS
HI
GitHub
मेन्यूबंद करें

13 नवंबर 2026

हम हर बदलाव पर अपने ही बिल्ड पर हमला करते हैं

जो सुरक्षा टेस्ट विफल हो ही नहीं सकता, वह कुछ साबित नहीं करता। इसलिए NoWayOS के टेस्ट ऐसे रूपों के साथ आते हैं जो विफल होने के लिए ही बने हैं, और उसके गेट वहाँ रहते हैं जहाँ कोई पुल रिक्वेस्ट नहीं पहुँच सकती।

किसी भी सुरक्षा टेस्ट के लिए एक असहज सवाल: क्या वह कभी विफल हुआ है? जो टेस्ट कभी विफल नहीं हुआ, वह शायद इसलिए पास हो रहा है कि सिस्टम ठीक है, या इसलिए कि टेस्ट को कुछ दिखता ही नहीं। बाहर से दोनों बिल्कुल एक जैसे दिखते हैं।

इसलिए NoWayOS अपनी सुरक्षा को सिर्फ़ टेस्ट नहीं करता। वह हर बदलाव पर उस पर हमला करता है, और जाँचता है कि हमले पकड़े जाते हैं।

जो अपना नहीं, उसकी ओर हाथ बढ़ाना

NoWayOS सिस्टम का हर हिस्सा seL4 पर अपने अलग कम्पार्टमेंट में चलता है, और उसके पास सिर्फ़ वही होता है जो उसे दिया गया है। आइसोलेशन टेस्ट जानबूझकर इन सीमाओं के पार प्रोब भेजते हैं। एक वह पता पढ़ता है जो उसे कभी दिया ही नहीं गया। एक उस पेज पर लिखता है जिसे वह सिर्फ़ पढ़ सकता है। एक, जिसके पास ठीक वही है जो यूज़र इंटरफ़ेस के पास है, डिस्प्ले के कंट्रोल पेज पर लिखने की कोशिश करता है, जिसे इंटरफ़ेस सिर्फ़ पढ़ सकता है। एक और, जिसके पास ठीक वही है जो नेटवर्क क्लाइंट के पास है, नेटवर्क ड्राइवर की मेमोरी में लिखने की कोशिश करता है।

seL4 को इनमें से हर एक को रोकना होता है, और पास खड़ा एक असंबद्ध हिस्सा बिना छुए चलता रहना चाहिए।

विफल होने के लिए बना टेस्ट

फिर आता है मोड़। यूज़र इंटरफ़ेस के आइसोलेशन टेस्ट के साथ एक ऐसा रूप रखा है जिसमें एक ग्रांट जानबूझकर चौड़ी की गई है: इंटरफ़ेस की जगह खड़े हिस्से को डिस्प्ले का निजी पेज दे दिया जाता है। उस रूप का टेस्ट विफल होना ही चाहिए। अगर वह कभी पास हो जाए, तो आइसोलेशन टेस्ट अंधा होगा, और बिल्ड यह बता देगा।

यही विचार बाक़ी जाँचों में भी चलता है। हिस्सों के बीच के मैसेजों के हर डिकोडर के पास Kani मॉडल चेकर के बाउंडेड प्रूफ़ हैं कि वह कभी पैनिक, ओवरफ़्लो या सीमा के बाहर रीड नहीं करता। फिर म्यूटेशन जाँचें डिकोडरों को जानबूझकर तोड़ती हैं, यह दिखाने के लिए कि प्रूफ़ इसे पकड़ते हैं। बाहरी इनपुट के हर पार्सर को शत्रुतापूर्ण डेटा से फ़ज़ किया जाता है।

यह सब make ci का हिस्सा है, वह गेट जिससे हर बदलाव को गुज़रना होता है। आइसोलेशन टेस्ट हर बार चलते हैं; कोई प्रूफ़ या फ़ज़ रन तब दोहराया जाता है जब वह कोड बदलता है जिसे वह कवर करता है।

विफल होने के लिए बना टेस्ट

प्रोबseL4डिस्प्ले का पेज

टेस्टप्रोब उस पेज की ओर हाथ बढ़ाता है जो उसे कभी दिया नहीं गया। seL4 उसे रोक देता है, और टेस्ट पास होता है।

प्रोबग्रांट चौड़ी की गईडिस्प्ले का पेज

दूसरा रूपएक ग्रांट जानबूझकर चौड़ी की जाती है। प्रोब पार हो जाता है, इसलिए इस टेस्ट को विफल होना ही चाहिए। अगर यह कभी पास हो जाए, तो पहला टेस्ट अंधा होगा।

विचार का एक चित्र। दोनों हर बदलाव पर चलते हैं।

पहुँच से बाहर के गेट

गेट उतना ही मज़बूत है जितना वह हाथ जो उसे बदल सकता है। इसलिए NoWayOS में हर योगदान को जिन जाँचों से गुज़रना होता है, वे Defence Agent में परिभाषित हैं, जो अपनी अलग सार्वजनिक रिपॉज़िटरी है। जो पुल रिक्वेस्ट किसी गेट को छूती है, उसे मेंटेनर के लिए चिह्नित किया जाता है।

Defence Agent ख़ुद को भी इसी तरह टेस्ट करता है: बीस गढ़ी हुई पुल रिक्वेस्ट, जिनमें से हर एक में कुछ ऐसा छिपा है जो किसी रिव्यूअर से छूट सकता है। किसी कमेंट में दाएँ-से-बाएँ लिखा छिपा टेक्स्ट है, एक अक्षर जिसे उसके सिरिलिक हमशक्ल से बदल दिया गया है, सीधे किसी git रिपॉज़िटरी से लाई गई डिपेंडेंसी, एक वर्कफ़्लो जो अविश्वसनीय कोड चला देता। हर एक पकड़ी जानी चाहिए, जबकि तीन असली पुराने बदलाव पास होने चाहिए।

विशेषण नहीं, सबूत

इनमें से कुछ भी किसी डिवाइस को “अनहैकेबल” नहीं बनाता। कुछ भी नहीं बनाता, और हम ऐसा कभी नहीं कहेंगे। जो आपको मिलता है वह सबूत है: क्या आज़माया गया, क्या रोका गया, और वह कमांड जो इसे दिखाती है। एक असली इमेज का सबूत पढ़िए, या ख़ुद गेट।