प्रौद्योगिकी

मेगालोडन ने GitHub Actions को 5,561 रिपॉज़िटरी का बैकडोर बना दिया

Susan Hill

एक स्वचालित अभियान ने मई की एक सोमवार सुबह छह घंटे में 5,561 GitHub रिपॉज़िटरी में 5,718 commit धकेल दिए। ये commit साधारण CI रखरखाव जैसे दिख रहे थे (“ci: add build optimization step”, “build: improve ci performance”, “chore: optimize pipeline runtime”) और build-bot, auto-ci, pipeline-bot जैसे साधारण नामों वाले लेखकों से आए थे। 18 मई की सुबह जब बीती, तब उनमें से हर रिपॉज़िटरी के अंदर एक workflow फाइल थी जिसमें base64 में एन्कोडेड bash payload बैठा था।

अभियान का नाम मेगालोडन है। SafeDep की रिसर्च टीम ने 21 मई को इसका खुलासा किया, commit को टुकड़े-टुकड़े करने और आर्टिफैक्ट के निशान का पीछा करते हुए 216.126.225.129:8443 पर मौजूद एक ही command-and-control सर्वर तक पहुंचने के बाद। दिलचस्प यह नहीं है कि GitHub पर हमला हुआ। दिलचस्प यह है कि हमलावर को GitHub को compromise करने की कोई जरूरत ही नहीं पड़ी। उसने GitHub Actions का इस्तेमाल किया — वह CI/CD सिस्टम जो कोड की अखंडता की गारंटी के लिए बनाया गया है — बैकडोर पहुंचाने के वाहन के तौर पर।

दो workflow: एक बड़े पैमाने पर, एक सोया हुआ

मेगालोडन दो तरीकों में चला। बड़े पैमाने वाला रूप SysDiag नाम की नई workflow फाइल जोड़ता था जो हर push और हर pull request पर चालू होकर अपने सामने से गुजरने वाली हर चीज इकट्ठा कर लेती थी। निशाने वाला रूप, Optimize-Build, ज्यादा धैर्य से काम करता था: यह किसी मौजूदा workflow को workflow_dispatch ट्रिगर से बदल देता था, जो तब तक सोया रहता है जब तक कोई इसे हाथ से न चलाए। किसी प्रोजेक्ट की CI डायरेक्टरी में सोया हुआ बैकडोर पकड़ना SysDiag नाम के नए workflow को पकड़ने से कहीं ज्यादा मुश्किल है, क्योंकि ज्यादातर maintainer उस फाइल का ऑडिट नहीं करते जिसे उन्होंने खुद ही कभी लिखा था।

जब workflow चलता है, तब payload CI एनवायरनमेंट में जहाँ तक पहुंच सकता है वहाँ तक सब कुछ पढ़ लेता है। CI एनवायरनमेंट वेरिएबल। AWS के एक्सेस कीज़, सीक्रेट कीज़ और सेशन टोकन। GCP के एक्सेस टोकन। निजी SSH कीज़। .npmrc क्रेडेंशियल्स। Docker कॉन्फ़िगरेशन। Kubernetes कॉन्फ़िगरेशन। GitHub Actions के OIDC टोकन, जिनसे हमलावर खुद workflow होने का दावा करते हुए हर उस क्लाउड अकाउंट से बात कर सकता है जिसके लिए वह अधिकृत था। निकलने से पहले payload रिपॉज़िटरी के सोर्स को तीस से ज्यादा अलग-अलग सीक्रेट पैटर्न (API कीज़, पासवर्ड, सर्टिफिकेट के टुकड़े) के लिए grep कर लेता है, अगर किसी इंसान ने एक चिपका छोड़ा हो। AWS IMDSv2, GCP और Azure के मेटाडेटा एंडपॉइंट्स को भी क्लाउड मशीन की पहचान पाने के लिए पूछा जाता है।

एक pipeline जो अपना ही बैकडोर भेजती है

अब तक का सबसे गंभीर पीड़ित Tiledesk है — एक ओपन-सोर्स कस्टमर एंगेजमेंट प्लेटफॉर्म जिसकी नौ GitHub रिपॉज़िटरी हिट हुईं। 19 से 21 मई के बीच Tiledesk ने अपना tiledesk-server पैकेज npm पर भेजा, और बैकडोर उसमें कंपाइल हो चुका था। @tiledesk/tiledesk-server के 2.18.6 से 2.18.12 तक के संस्करण अब payload कोड लेकर चलते हैं, जिसे उस खिड़की में npm install चलाने वाले हर डेवलपर ने इंस्टॉल किया। यही वह उत्तोलक है जिसके लिए मेगालोडन बनाया गया था: एक ओपन-सोर्स प्रोजेक्ट में बैकडोर लगाओ, ताकि उसकी रिलीज़ pipeline सैकड़ों आश्रित प्रोजेक्ट में बैकडोर लगा दे।

Black-Iron-Project ने आठ रिपॉज़िटरी खो दीं। सैकड़ों छोटे प्रोजेक्ट (अकेले डेवलपर के अकाउंट, यूनिवर्सिटी क्लस्टर, छूटे हुए sandbox) एक या दो हिट लेकर रह गए। हमलावर चयन करता हुआ नहीं लग रहा था। पैटर्न सटीकता पर चौड़ाई का था: रैंडम आठ कैरेक्टर के यूज़रनेम वाले डिस्पोज़ेबल अकाउंट मिनट-दर-मिनट एक जैसे commit संदेश धकेलते रहे। C2 सर्वर चुपचाप दर्ज करता रहा कि क्या लौट कर आ रहा है।

CI फाइलें ऑडिट से क्यों बच गईं

यह हमला उसी कारण से कामयाब हुआ जिस कारण से यह बाकी 2026 भर दोहराया जाएगा। CI/CD pipeline डिज़ाइन से ही भरोसे पर टिकी हैं। एक डेवलपर जो किसी डाउनलोड में अजीब बाइनरी पर शक करता है, पिछले हफ्ते अपने रिपॉज़िटरी में आई workflow फाइल को बिना सोचे चला देगा, क्योंकि workflow फाइलें हैं ही यही: ऐसा कोड जो प्लेटफॉर्म को चलाना चाहिए। ऑडिट लॉग मौजूद हैं, पर ज्यादातर टीमें उन्हें पढ़ती नहीं। नए commit build-bot और ci-bot जैसे नामों से आते हैं। डिफ्स छोटे हैं। workflow के सबसे नीचे बैठा base64 जानबूझकर अपारदर्शी है।

रक्षात्मक प्लेबुक सरल है और संतोषजनक नहीं। 18 मई और आज के बीच जिस भी सीक्रेट ने किसी रिपॉज़िटरी को छुआ है उसे रोटेट करो। अपने प्रबंधन में हर प्रोजेक्ट की .github/workflows डायरेक्टरी का ऑडिट करो। ऐसे commit देखो जिनके लेखक का ईमेल किसी ज्ञात टीम सदस्य से मेल नहीं खाता। Actions फाइल के अंदर किसी भी base64 blob को तब तक दोषी मानो जब तक उसे डिकोड न कर लो। Tiledesk का इस्तेमाल कर रहे संगठनों को 2.18.5 पर लौटना चाहिए या एक साफ रिलीज़ का इंतज़ार करना चाहिए। Actions और किसी क्लाउड प्रोवाइडर के बीच OIDC ट्रस्ट रखने वाले हर किसी को वह ट्रस्ट संबंध रद्द करके दोबारा जारी करना चाहिए।

मेगालोडन इस पैमाने का पहला अभियान है जो खुद CI workflow को नरम निशाना मानता है। यह आखिरी नहीं होगा। हमला जो सबक छोड़ गया है, डेवलपर पहले इससे धीमी आवाज़ में सुन चुके हैं: pipeline का जो हिस्सा तुम नहीं पढ़ते, वह हिस्सा हमलावर तुम्हारे लिए लिख देता है।

चर्चा

0 टिप्पणियाँ हैं।