पिछले एक साल में, @pewdiepie निजी, स्व-होस्टेड कंप्यूटिंग के सबसे प्रमुख समर्थकों में से एक बन गए हैं, और इसे देखना वास्तव में एक आनंददायक अनुभव रहा है।
2025 के अंत में जो एक मनोरंजक प्रयोग के रूप में शुरू हुआ - एक होम रिग जिसमें मॉडिफाइड GPU, ओपन-सोर्स मॉडल चलाने वाले, एक "काउंसिल" में वोट करने वाले चैटबॉट, और प्रोटीन-फोल्डिंग अनुसंधान के लिए दान की गई अतिरिक्त कंप्यूट पावर थी - लगभग बारह महीनों में एक स्पष्ट मिशन में परिवर्तित हो गया।
31 मई, 2026 को, यह Odysseus के रूप में आया, जो एक मुफ्त, ओपन-सोर्स, स्व-होस्टेड AI वर्कस्पेस है, जिसे उन्होंने सब्सक्रिप्शन मॉडल पर एक तीखा प्रहार बताया: स्थानीय-प्रथम, गोपनीयता-प्रथम, कोई टेलीमेट्री नहीं, आपका डेटा आपके अपने हार्डवेयर पर रहता है, न कि कुछ बड़ी कंपनियों तक जाता है।
उनकी पहुंच वाले किसी व्यक्ति के लिए स्थानीय इन्फ्रेंस को मुख्यधारा के, गैर-तकनीकी दर्शकों के सामने रखना, वह चीज़ है जिसे गोपनीयता की दुनिया वर्षों से चाहती थी, और मैं इसका समर्थन करता हूं।
मैं वह व्यक्ति भी हूं, जिसने इसके अपने अधिकृत डिप्लॉयमेंट का परीक्षण करते हुए, एक क्लिक से इन सर्वरों में से एक पर कब्जा करने का एक तरीका खोजा। ये दोनों बातें विरोधाभासी नहीं हैं। इतनी महत्वाकांक्षी, इतनी तेज़ी से शिप की गई, इस नई श्रेणी का सॉफ्टवेयर, ठीक वही जगह है जहां दिलचस्प सुरक्षा बग पाए जाते हैं, और उन्हें जल्दी खोजना ही इस प्रोजेक्ट को बाद में भरोसेमंद बनाता है।
इसलिए मदद की भावना से, यहां पूरी श्रृंखला है, जमीन से ऊपर तक समझाई गई, साथ ही यह भी कि यह उस पल के बारे में क्या कहती है जिसमें हम निर्माण कर रहे हैं।
एक दरवाजा जिसमें ताला नहीं है, और एक पोर्ट जो केवल हानिरहित लगता था
Odysseus भारी कामों को दूरस्थ GPU मशीनों को सौंप सकता है, जिन तक वह SSH के माध्यम से पहुंचता है, जो एक कंप्यूटर द्वारा दूसरे पर कमांड चलाने का मानक तरीका है।
इसलिए इसके कुछ आंतरिक एंडपॉइंट को कमांड शेल - वह कच्ची कमांड लाइन, जहां यदि आप पहुंच सकते हैं, तो आप मशीन से लगभग कुछ भी करवा सकते हैं - को छूने की अनुमति है।
समझदारी से, उनमें से लगभग हर एंडपॉइंट यह जांच करके शुरू होता है कि कॉल करने वाला एक प्रशासक है या नहीं।
अपवाद एक शांत सा एंडपॉइंट है जिसका काम एक दूरस्थ सर्वर पर स्थापित Python पैकेजों को सूचीबद्ध करना है, और यह अपवाद ही वह जगह है जहां सब कुछ बिखर जाता है।
पहली समस्या यह है कि यह एंडपॉइंट कभी भी वह जानकारी प्राप्त नहीं करता है जो उसे अपने कॉल करने वाले की पहचान करने के लिए चाहिए, इसलिए यह कोई एडमिन जांच नहीं करता है और सैद्धांतिक रूप से भी नहीं कर सकता है।
इसके सामने खड़ी एकमात्र चीज़ ऐप का सामान्य नियम है कि आप लॉग इन हों, जिसका अर्थ है कि कोई भी खाता - जिसमें एक अजनबी द्वारा एक मिनट पहले रजिस्टर किया गया खाता भी शामिल है - एक शेल-छूने वाले दरवाजे तक पहुंच सकता है, जिसे हर सहोदर एंडपॉइंट सावधानीपूर्वक संरक्षित करता है।

संरचनात्मक मूल कारण: एक हैंडलर जो यह नहीं देख सकता कि कौन कॉल कर रहा है, वह लागू नहीं कर सकता कि किसे अनुमति है, जैसा कि नीचे देखा गया है।

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


इस वजह से, सावधान प्रोग्राम किसी व्यक्ति द्वारा टाइप की गई किसी भी चीज़ को शेल को सौंपने से पहले उद्धरण चिह्नों में लपेटते हैं - शेल को यह बताने का तरीका कि उन वर्णों को सामान्य टेक्स्ट के रूप में माना जाए, जिनमें कमांड के रूप में चलने की कोई शक्ति नहीं है।
डेवलपर ने सर्वर के नाम और भेजे जा रहे कमांड के लिए यह सही ढंग से किया, इसलिए वे इनपुट सुरक्षित थे।
हालांकि, पोर्ट नंबर को बिना उद्धरण के, नंगे रूप में पंक्ति में डाल दिया गया, इस उचित-प्रतीत होने वाली धारणा पर कि एक पोर्ट हमेशा सिर्फ एक संख्या होती है और एक संख्या कोई नुकसान नहीं पहुंचा सकती। (वर्चुअल-एनवायरनमेंट पथ को भी उसी अनदेखे तरीके से जोड़ा गया था, उसी कारण से।)
धारणा में छेद यह है कि पोर्ट को एक संख्या होना आवश्यक नहीं है। यह वेब पते से सीधे खींचे गए सादे टेक्स्ट के रूप में आता है, और अनुरोध करने वाला व्यक्ति यह तय करता है कि यह क्या कहेगा।
इसलिए 22 के बजाय, एक हमलावर 22; id; hostname # लिखता है।
शेल पहले भाग को पढ़ता है, कनेक्ट करने का प्रयास करता है, और हानिरहित रूप से विफल होता है, फिर पहले अर्धविराम तक पहुंचता है और आज्ञाकारी रूप से हमलावर के अपने दो कमांड चलाता है, जबकि अंत में # उसे शेष टेक्स्ट को अनदेखा करने के लिए कहता है जो माना जाता था कि आगे आना चाहिए।

एक अर्धविराम "एक दूरस्थ बॉक्स पर पैकेज सूचीबद्ध करें" को "इस बॉक्स पर मेरे कमांड चलाएं" में बदल देता है।
इस तक पहुंचने के लिए लॉग-इन सत्र और एक तैयार किए गए वेब पते से अधिक कुछ नहीं चाहिए:

अनुरोध सामान्य पैकेज JSON के साथ HTTP 200 लौटाता है - जबकि इंजेक्ट किए गए कमांड सर्वर-साइड चलते हैं।
जो कमांड मैंने डाले थे वे हानिरहित जांच थे, और जब उनका आउटपुट सर्वर के अपने सेवा खाते का नाम बताते हुए वापस आया, तो इसने पुष्टि की कि मेरे निर्देश मशीन पर ही चले थे।

दोनों खामियों को एक साथ रखें और स्थानीय तस्वीर एक वाक्य में फिट हो जाती है - कोई भी लॉग-इन उपयोगकर्ता सर्वर पर अपनी पसंद के कमांड चला सकता है।
पैमाने का जोखिम उसी चीज़ से बढ़ जाता है जो Odysseus को रोमांचक बनाती है।
यदि सौ मिलियन सब्सक्राइबर वाला एक क्रिएटर एक बड़े, गैर-तकनीकी दर्शकों को स्व-होस्टिंग में सफलतापूर्वक शामिल करता है, तो परिणाम हजारों समान इंस्टेंस होंगे, समान रूप से कॉन्फ़िगर किए गए, समान रूप से उजागर किए गए, जो एक मोनोकल्चर है, और मोनोकल्चर वही हैं जो वर्म्स को पसंद हैं।
@ashnichrist ने इसे अच्छी तरह से कहा।
इसे एक क्लिक में बदलना
एक बग जिसे "कोई भी लॉग-इन उपयोगकर्ता" ट्रिगर कर सकता है, फिर भी ऐसा लगता है कि इसे एक दुर्भावनापूर्ण अंदरूनी सूत्र की आवश्यकता है, और अगला कदम वह है जो उस आवश्यकता को भी हटा देता है, क्योंकि यह पीड़ित के अपने ब्राउज़र को हमला करने के लिए मजबूर करता है।
तकनीक क्रॉस-साइट रिक्वेस्ट फॉरजरी है, और यह एक शांत ब्राउज़र आदत पर सवार होती है।
एक बार जब आप किसी साइट में लॉग इन करते हैं, तो आपका ब्राउज़र एक छोटा टोकन संग्रहीत करता है और फिर इसे उस साइट के लिए स्वचालित रूप से अनुरोधों से जोड़ देता है, जो केवल अनुरोध के गंतव्य पर आधारित होता है, इस बात की कोई परवाह किए बिना कि किस पेज ने इसे गति दी।

Odysseus ने उस टोकन को SameSite=Lax नीति के साथ सेट किया, जो उचित डिफ़ॉल्ट है और चुपके से पृष्ठभूमि के अनुरोधों पर टोकन को साथ आने से रोकता है - फिर भी जानबूझकर इसे एक शीर्ष-स्तरीय नेविगेशन पर भेजता है, जिसका अर्थ है एक सामान्य क्लिक जो आपके पूरे टैब को कहीं और ले जाता है।
चूंकि कमजोर एंडपॉइंट एक सादे लिंक का उत्तर देता है, अनुरोध की उत्पत्ति की कोई जांच नहीं करता है, और किसी भी एंटी-फॉरजरी टोकन का उपयोग नहीं करता है, एक हमलावर को केवल एक आमंत्रित बटन के साथ एक पेज होस्ट करना होता है।
प्रदर्शन के लिए मैंने ठीक वही बनाया - एक हंसमुख, बच्चों के अनुकूल और सबसे महत्वपूर्ण, एक लोर-सटीक CoComelon श्रद्धांजलि पेज - नर्सरी-कविता के रंग, Comic Sans, एक बड़ा "play" बटन।

बटन किसी गीत का लिंक नहीं है। इसका क्लिक हैंडलर एक छोटी फेंक-दूर पॉपअप विंडो में वास्तविक लक्ष्य को खोलता है, ताकि दुर्भावनापूर्ण अनुरोध एक शीर्ष-स्तरीय नेविगेशन के रूप में हो - SameSite=Lax सत्र कुकी लेकर - फोकस चुराए बिना, फिर एक पल बाद ऑटो-क्लोज़ हो जाता है। यह जो पता खोलता है वह केवल पैकेज एंडपॉइंट है जिसमें "पोर्ट" में तस्करी किया गया कमांड है:

जबकि वह एक क्लिक लैंड करता है, लूर पेज कैमरे के लिए एक शो आयोजित करता है: CoComelon कलाकृति मुज़ल-फ्लैश की तरह स्क्रीन पर चमकती है, और एक टर्मिनल अधिग्रहण के प्रत्येक चरण का वर्णन करते हुए स्वयं को टाइप करता है। (टर्मिनल टेक्स्ट डेमो के लिए मंचित कथन है; वास्तविक निष्पादन वह मूक अनुरोध है जो पॉपअप ने अभी किया है।)

प्रभाव को मूर्त बनाने के लिए, उस एक क्लिक ने तीन काम किए: इसने स्पष्ट दृश्य विकृति के लिए परोसे गए इंटरफ़ेस को फिर से लिखा (एक पूर्ण-स्क्रीन "🍉 आपका Odysseus CoComelon-किया गया है 🍉" ओवरले, तरबूज आइकन, एक पुनः शीर्षकित ऐप), इसने जो कुछ भी सेवा उपयोगकर्ता पढ़ सकता था, उसे पढ़ा, और - सबसे स्थायी रूप से - इसने सीधे ऐप के auth.json में एक छिपा हुआ प्रशासक खाता लिखा।

डंक: एक रिबूट स्पष्ट गंदगी को साफ करता है और हमलावर के खाते को रखता है।
यहाँ एक लाइव डेमो है।
यह एक एजेंटिक टूल में होने वाला सबसे बुरा बग क्यों है
2026 में एक एकल-इंस्टेंस समझौते को आपको चिंतित करना चाहिए, इसका कारण यह है कि एक इंस्टेंस शायद ही कभी वह जगह है जहां ये चीजें रुकती हैं, और जिस वर्म ने वर्ष को परिभाषित किया, वह दिखाता है कि क्यों।
Shai-Hulud, एक स्व-प्रचार करने वाला npm वर्म जो पहली बार सितंबर 2025 में देखा गया था और तब से बड़ी लहरों में लौट रहा है, एक क्रूर रूप से सरल लूप चलाता है - एक दुर्भावनापूर्ण इंस्टॉल-टाइम स्क्रिप्ट जिस क्षण कोई पैकेज स्थापित होता है, निष्पादित होती है, गुप्त कुंजियों जैसे npm और GitHub टोकन, SSH कुंजी और क्लाउड क्रेडेंशियल्स के लिए मशीन को स्कैन करती है, और फिर पीड़ित के अन्य पैकेजों के बैकडोर संस्करणों को प्रकाशित करने के लिए उन चुराए गए क्रेडेंशियल्स का उपयोग करती है, ताकि प्रत्येक नई स्थापना हमलावर से किसी और प्रयास के बिना अगला लॉन्च पॉइंट बन जाए।
सीखने लायक सबक यह है कि एक वर्म का सबसे कठिन काम क्रेडेंशियल्स की कटाई करना और अगली मशीन पर जाने का रास्ता खोजना है।
एक एजेंटिक AI सहायक एक वर्म को
दोनों
मुफ्त में सौंपता है, क्योंकि शक्तिशाली रहस्य रखना और अन्य मशीनों तक पहुंचना इसका पूरा उद्देश्य है।
Odysseus के खिलाफ एक क्लिक ने कोड निष्पादन से कहीं अधिक प्रदान किया। इसने संग्रहीत API कुंजियों, डेटाबेस, कॉन्फ़िगरेशन और SSH एक्सेस का एक पूर्व-एकत्रित वॉल्ट सौंप दिया, जिसका उपयोग टूल उन दूरस्थ GPU सर्वरों में लॉग इन करने के लिए करता है जिन्हें वह प्रबंधित करता है। यह वही ईंधन है जिस पर एक स्व-प्रचार करने वाला हमला चलता है, एक जगह पर बैठा है जिसका लेबल बाहर की ओर है, और इसका उपयोग करने की प्लेबुक पहले से ही जंगली में मौजूद है।

इसका सबका मतलब क्या है
जो चीज़ मुझे सबसे अधिक प्रभावित करती है, वह यह कि जिस बग ने वास्तव में सर्वर को लिया, वह प्राचीन है। कमांड इंजेक्शन और रिक्वेस्ट फॉरजरी के पाठ्यपुस्तक फिक्स हैं जिन्हें 2005 में एक डेवलपर पहचान लेगा, और वे आसपास के सबसे दूरदर्शी उपभोक्ता AI सॉफ्टवेयर के अंदर रह रहे थे - जो इस वर्ष पूरे उद्योग में पैटर्न है, जहां शीर्षक AI कमजोरियां चमकदार नए टूल के अंदर बैठी क्लासिक खामियां निकलती हैं।
फ्रंटियर ने उन मूलभूत सिद्धांतों को पूरी तरह से लागू रखा, फिर उनके ऊपर एक शक्तिशाली, तेज़ गति वाली, अक्सर अत्यधिक भरोसा की जाने वाली परत रख दी और उस परत को आपकी हर चीज़ से जोड़ दिया।

डोरबेल जो अभी तक तार से नहीं जुड़ी थी
एक और विवरण है जो सीखने लायक है, क्योंकि यह वह हिस्सा है जो कोड के बारे में सबसे कम है।
जब मैं पहली बार इसकी रिपोर्ट करने गया, तो रिपॉजिटरी में एक सुरक्षा नीति थी - एक विचारशील, समझदार डिप्लॉयमेंट मार्गदर्शन के साथ।
लेकिन इसका रिपोर्टिंग अनुभाग संभावित रिपोर्टर्स को "GitHub सुरक्षा सलाहकारों की ओर इशारा करता था यदि उपलब्ध हों," और पहले तो वह निजी चैनल बस खुला नहीं था।
एक अजनबी परियोजना के बारे में जो सबसे संवेदनशील चीज़ पा सकता था, उसके पास उतरने के लिए कोई निजी जगह नहीं थी। यह अंतर अब बंद हो गया है - कमांड-इंजेक्शन श्रृंखला अब एक गंभीर सलाहकार द्वारा ट्रैक की जाती है, और सुधार मर्ज कर दिए गए हैं - लेकिन प्रारंभिक अनुपस्थिति संकेत है।
शुक्र है, मैं एक मेंटेनर से बात करने में कामयाब रहा, जिसने सलाहकार सुविधा खोल दी - और तब से मैंने कई अन्य सुधार प्रस्तुत किए हैं।

उस सब के अलावा... यह समय का संकेत है।
प्रोजेक्ट अब एक घरेलू GPU रिग पर एक शौक से एक एकल घोषणा के दायरे में सौ मिलियन लोगों के दर्शकों तक जाते हैं, और सुरक्षा मचान - बुरी खबरों के लिए एक निजी इनबॉक्स, एक सलाहकार वर्कफ़्लो, मॉडल आउटपुट को शत्रुतापूर्ण मानने की आदत - कोड से पिछड़ जाता है, जो बदले में दर्शकों से पिछड़ जाता है।
वह क्रम एक प्रतिद्वंद्वी की आवश्यकता से ठीक उल्टा है।
एक बड़ा, भरोसेमंद, बड़े पैमाने पर गैर-तकनीकी प्रशंसक आधार, जो एक ही सप्ताह में एक ही सॉफ्टवेयर स्थापित करता है, जिसे किसी ऐसे व्यक्ति द्वारा इंगित किया गया है जिस पर वे पहले से भरोसा करते हैं, सबसे आकर्षक लक्ष्य है - विशाल, समान और पूर्व-बिक्री।
यह ठीक वही मोनोकल्चर है जो एक वर्म चाहता है, जिसमें स्वागत चटाई पहले से ही बिछी हुई है।
तो इस कहानी का प्रोत्साहन देने वाला आधा हिस्सा यह नहीं है कि कोड सही था - वह नहीं था - बल्कि यह कि प्रोजेक्ट ने दस्तक सुनने के लगभग एक दिन के भीतर डोरबेल को तार से जोड़ा और सुधार भेज दिए।
इतनी तेज़ी से चलने वाले सॉफ्टवेयर के लिए, इतने बड़े दर्शकों के सामने, वह रिफ्लेक्स - एक निजी चैनल खोलना, जल्दी से जवाब देना, खुले में ठीक करना - शुरू से एक बेदाग रिकॉर्ड रखने से अधिक मूल्यवान है। यह, अंततः, स्व-होस्टिंग में विश्वास वास्तव में कैसे अर्जित किया जाता है।
अभी के लिए... बस इतना ही, दोस्तों!

https://x.com/Grummz/status/2061300454907371953
https://x.com/ashnichrist/status/2061481763516399737





