CVE-2021-43287 CVE-2021-43288 CVE-2021-43289 CVE-2021-43290
Autor / Author: Higor Farias — PRIDE Security
⚠️ कानूनी अस्वीकारोक्ति / LEGAL DISCLAIMER
[PT] यह सामग्री केवल शैक्षिक और आक्रामक सुरक्षा अनुसंधान उद्देश्यों के लिए तैयार की गई है। इसे स्पष्ट लिखित अनुमति के साथ नियंत्रित वातावरण में ही उपयोग करें। गलत उपयोग की जिम्मेदारी पूरी तरह से उपयोगकर्ता की होती है।
[EN] यह सामग्री केवल शैक्षिक और आक्रामक सुरक्षा अनुसंधान उद्देश्यों के लिए तैयार की गई है। इसे स्पष्ट लिखित अनुमति के साथ नियंत्रित वातावरण में ही उपयोग करें। गलत उपयोग की जिम्मेदारी पूरी तरह से उपयोगकर्ता की होती है।
[PT] GoCD ThoughtWorks द्वारा बनाए रखी जाने वाली एक CI/CD प्लेटफ़ॉर्म है। 21.3.0 से पहले के संस्करणों में, SonarSource के शोधकर्ताओं ने एक दुर्बलता श्रृंखला की पहचान की है जो बिना किसी प्रमाणीकरण के एक्सप्लॉइट की जा सकती है। इस रिपॉजिटरी के दो स्क्रिप्ट निम्नलिखित को प्रदर्शित करते हैं:
gocd_rce_noauth.py — क्रेडेंशियल्स के बिना पूरे चेन तक RCE (रिमोट कोड एक्जीक्यूशन) तक पूर्ण श्रृंखला एक्सप्लॉइटेशन।gocd_urldns.py — गैजेट चेन URLDNS और DNS कॉलबैक के माध्यम से Java डीसीरियलाइजेशन का आउट-ऑफ-बैंड पता लगाना (पंजीकृत एजेंट्स की सूची बनाने के लिए मान्य क्रेडेंशियल्स की आवश्यकता होती है)।[EN] GoCD ThoughtWorks द्वारा बनाए रखी जाने वाली एक CI/CD प्लेटफ़ॉर्म है। 21.3.0 से पहले के संस्करणों में, SonarSource के शोधकर्ताओं ने एक दुर्बलता श्रृंखला की पहचान की है जो बिना किसी प्रमाणीकरण के एक्सप्लॉइट की जा सकती है। इस रिपॉजिटरी के दो स्क्रिप्ट निम्नलिखित को प्रदर्शित करते हैं:
gocd_rce_noauth.py — क्रेडेंशियल्स के बिना पूरे चेन तक RCE (रिमोट कोड एक्जीक्यूशन) तक पूर्ण श्रृंखला एक्सप्लॉइटेशन।gocd_urldns.py — गैजेट चेन URLDNS और DNS कॉलबैक के माध्यम से Java डीसीरियलाइजेशन का आउट-ऑफ-बैंड पता लगाना (पंजीकृत एजेंट्स की सूची बनाने के लिए मान्य क्रेडेंशियल्स की आवश्यकता होती है)।[PT] GoCD किसी संगठन के सॉफ्टवेयर डिलीवरी चेन में एक केंद्रीय स्थान पर होता है: यह बिल्ड, टेस्टिंग, आर्टिफैक्ट जनरेशन और प्रोडक्शन डिप्लॉयमेंट को ऑर्केस्ट्रेट करता है। GoCD सर्वर को RCE के माध्यम से कंप्रोमाइज़ करके (जैसा कि gocd_rce_noauth.py द्वारा दिखाया गया है), एक हमलावर उस प्रक्रिया के हर चरण पर नियंत्रण प्राप्त कर लेता है — जिससे बाइनरीज में बैकडोर इंजेक्ट करना, आर्टिफैक्ट्स को टैम्पर करना या उत्पाद के अंतिम उपयोगकर्ता तक पहुंचने से पहले ही सोर्स कोड और क्रेडेंशियल्स को एक्सफिल्ट्रेट करने की क्षमता मिलती है। यह परिदृश्य SolarWinds हमले (2020) के समान है, जहां बिल्ड पाइपलाइन तक पहुंचने से हज़ारों ग्राहकों में मालवे वितरित हुआ था।
[EN] GoCD किसी संगठन के सॉफ्टवेयर डिलीवरी चेन में एक केंद्रीय स्थान पर होता है: यह बिल्ड, टेस्टिंग, आर्टिफैक्ट जनरेशन और प्रोडक्शन डिप्लॉयमेंट को ऑर्केस्ट्रेट करता है। GoCD सर्वर को RCE के माध्यम से कंप्रोमाइज़ करके (जैसा कि gocd_rce_noauth.py द्वारा दिखाया गया है), एक हमलावर उस प्रक्रिया के हर चरण पर नियंत्रण प्राप्त कर लेता है — जिससे बाइनरीज में बैकडोर इंजेक्ट करना, आर्टिफैक्ट्स को टैम्पर करना या उत्पाद के अंतिम उपयोगकर्ता तक पहुंचने से पहले ही सोर्स कोड और क्रेडेंशियल्स को एक्सफिल्ट्रेट करने की क्षमता मिलती है। यह परिदृश्य SolarWinds हमले (2020) के समान है, जहां बिल्ड पाइपलाइन तक पहुंचने से हज़ारों ग्राहकों में मालवे वितरित हुआ था।
flowchart TD
ATK(["🕵️ Atacante / Attacker\n(não autenticado / unauthenticated)"])
subgraph EXPLOIT ["Exploração / Exploitation"]
E1["CVE-2021-43287\nLeitura do cruise_config\n(tokenGenerationKey + agentAutoRegisterKey)"]
E2["Path Traversal\nLeitura de /etc/go/jetty.xml\ne /proc/self/environ"]
E3["Registro de agente falso\nFake agent registration"]
E4["Desserialização Java\n(AspectJWeaver gadget chains)\nSobrescreve jetty.xml + restart"]
E5["💥 RCE no servidor GoCD\nRCE on GoCD server"]
E1 --> E2 --> E3 --> E4 --> E5
end
subgraph PIPELINE ["Pipeline CI/CD comprometido / Compromised CI/CD Pipeline"]
P1["📦 Build de artefatos\nBinary/artifact build"]
P2["🧪 Execução de testes\nTest execution"]
P3["📤 Publicação de pacotes\nPackage publication\n(npm, PyPI, Docker Hub...)"]
P4["🚀 Deploy em produção\nProduction deployment"]
P1 --> P2 --> P3 --> P4
end
subgraph IMPACT ["Impacto / Impact"]
I1["🔑 Vazamento de credenciais\nCredential leak\n(tokens, SSH keys, API keys)"]
I2["🦠 Backdoor em artefatos\nBackdoor in build artifacts"]
I3["📂 Exfiltração de código-fonte\nSource code exfiltration"]
I4["☠️ Ataque à cadeia de suprimentos\nSupply chain attack\n(usuários finais afetados / end users impacted)"]
I1 & I2 & I3 --> I4
end
ATK --> EXPLOIT
E5 -->|"Controle total do runner\nFull runner control"| PIPELINE
P1 -->|"Artefatos envenenados\nPoisoned artifacts"| I2
P3 -->|"Pacotes maliciosos\nMalicious packages"| I4
P4 -->|"Produção comprometida\nCompromised production"| I4
E5 -->|"Leitura de secrets\nSecrets read"| I1
E5 -->|"Acesso ao repositório\nRepository access"| I3
| CVE | प्रकार / Type | CVSS 3.1 | CWE | प्रमाणीकरण / Auth |
|---|---|---|---|---|
| CVE-2021-43287 | सूचना लीक / Information Disclosure | 7.5 HIGH | CWE-200 | ❌ कोई नहीं / None |
| CVE-2021-43288 | संग्रहीत XSS / Stored XSS | 6.1 MEDIUM | CWE-79 | एजेंट / Agent |
| CVE-2021-43289 | पथ अतिक्रमण — PUT / Path Traversal — PUT | 8.1 HIGH | CWE-22 | एजेंट / Agent |
| CVE-2021-43290 | पथ अतिक्रमण — GET / Path Traversal — GET | 8.1 HIGH | CWE-22 | एजेंट / Agent |
[PT] /go/add-on/business-continuity/api/cruise_config एंडपॉइंट सर्वर की पूर्ण कॉन्फ़िगरेशन XML को बिना किसी प्रमाणीकरण के लौटाता है। इस XML में <server> तत्व के गुण शामिल हैं, जिनमें agentAutoRegisterKey और tokenGenerationKey शामिल हैं — एजेंट्स को पंजीकृत करने और प्रमाणीकृत अनुरोधों पर हस्ताक्षर करने के लिए आवश्यक दो कुंजियाँ। इसके अतिरिक्त, प्लगइन एंडपॉइंट का pluginName पैरामीटर पथ अतिक्रमण अनुक्रमों (../../../../../../) को स्वीकार करता है, जिससे सिस्टम की स्वेच्छ फ़ाइलों — जैसे /proc/self/environ और /etc/go/jetty.xml — की पढ़ाई की जा सकती है।
[EN] /go/add-on/business-continuity/api/cruise_config एंडपॉइंट सर्वर की पूर्ण कॉन्फ़िगरेशन XML को बिना किसी प्रमाणीकरण के लौटाता है। इस XML में <server> तत्व के गुण शामिल हैं, जिनमें agentAutoRegisterKey और tokenGenerationKey शामिल हैं — एजेंट्स को पंजीकृत करने और प्रमाणीकृत अनुरोधों पर हस्ताक्षर करने के लिए आवश्यक दो कुंजियाँ। इसके अतिरिक्त, प्लगइन एंडपॉइंट का pluginName पैरामीटर पथ अतिक्रमण अनुक्रमों (../../../../../../) को स्वीकार करता है, जिससे सिस्टम की स्वेच्छ फ़ाइलों — जैसे /proc/self/environ और /etc/go/jetty.xml — की पढ़ाई की जा सकती है।