
X-Stat Push Option Injection के माध्यम से GitHub RCE
केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए।
बिना स्पष्ट लिखित अनुमति के किसी भी सिस्टम पर उपयोग न करें।
CVE-2026-3854 GitHub Enterprise Server (और GitHub.com) की git push पाइपलाइन में एक रिमोट कोड निष्पादन (Remote Code Execution) भेद्यता है।
जब कोई क्लाइंट पुश विकल्प (git push -o) प्रदान करता है, तो GitHub का आंतरिक Ruby कोड प्रत्येक विकल्प मान को अर्धविराम (semicolon) के साथ फ़ील्ड विभाजक के रूप में जोड़कर एक X-Stat हेडर बनाता है। चूँकि मान शब्दशः (बिना सैनिटाइज़ेशन के) डाले जाते थे, एक हमलावर पुश विकल्प में अर्धविराम एम्बेड करके हेडर में मनमाने key-value फ़ील्ड इंजेक्ट कर सकता था और सुरक्षा-महत्वपूर्ण सेटिंग्स को ओवरराइड कर सकता था — अंततः git उपयोगकर्ता के रूप में unsandboxed RCE प्राप्त कर सकता था।
X-Stat: repo_id=12345;user_id=alice;rails_env=production;...;push_option_0=<USER INPUT>
पुश विकल्प मान के रूप में normal_value;rails_env=staging इंजेक्ट करने से यह बन जाता है:
...;push_option_0=normal_value;rails_env=staging
पार्सर प्रत्येक कुंजी की अंतिम उपस्थिति लेता है, इसलिए rails_env अब staging (unsandboxed) है, जो पहले सेट किए गए वैध production मान को ओवरराइड कर देता है।
list[str] / dict[str, str] टाइप हिंट्स का उपयोग करता है)python3 exploi-git.py
स्क्रिप्ट पूरी तरह से मेमोरी में तीन लगातार प्रदर्शन चलाती है — कोई नेटवर्क कनेक्शन नहीं, कोई शेल कमांड नहीं, कोई फ़ाइल लेखन नहीं:
| डेमो | यह क्या दिखाता है |
|---|---|
| 1 | rails_env को ओवरराइड करने वाला मूल अर्धविराम इंजेक्शन |
| 2 | पूर्ण 3-चरणीय अवधारणात्मक RCE श्रृंखला |
| 3 | पैच किया गया व्यवहार — अर्धविराम percent-encoded होते हैं और इंजेक्शन निष्प्रभावी हो जाता है |
GitHub ने X-Stat हेडर में डालने से पहले पुश विकल्प मानों में अर्धविरामों को percent-encoding करके भेद्यता को ठीक किया:
normal_value;rails_env=staging → normal_value%3Brails_env=staging
यह अर्धविराम को मान का शाब्दिक हिस्सा बना देता है और इंजेक्शन को तोड़ देता है।
यह रिपॉजिटरी केवल शैक्षिक उद्देश्यों के लिए और अधिकृत सुरक्षा अनुसंधान का समर्थन करने के लिए प्रदान की गई है। लेखक दुरुपयोग के लिए कोई जिम्मेदारी नहीं लेते हैं। किसी भी ऐसे सिस्टम पर परीक्षण करने से पहले हमेशा स्पष्ट लिखित अनुमति प्राप्त करें जिसके आप स्वामी नहीं हैं।