
PHP 8.1.0-dev User-Agentt बैकडोर रिमोट कोड एक्ज़ीक्यूशन (RCE)
User-Agentt बैकडोर रिमोट कोड एक्सेक्यूशन (RCE)गंभीरता: क्रिटिकल (CVSS समकक्ष: 10.0)
भेद्यता प्रकार: सप्लाई चेन बैकडोर / रिमोट कोड एक्सेक्यूशन (RCE)
प्रभावित सॉफ्टवेयर: PHP 8.1.0-dev (केवल डेवलपमेंट बिल्ड)
हमला वेक्टर: रिमोट (बिना प्रमाणीकरण)
प्रमाणीकरण आवश्यक: नहीं
उपयोगकर्ता सहभागिता: कोई नहीं
प्रभाव: पूर्ण सिस्टम से समझौता
PHP 8.1.0-dev User-Agentt बैकडोर ओपन-सोर्स सॉफ्टवेयर इतिहास में सबसे कुख्यात सप्लाई चेन समझौतों में से एक है। पारंपरिक भेद्यताओं के विपरीत जो प्रोग्रामिंग गलतियों से उत्पन्न होती हैं, यह मुद्दा आधिकारिक PHP स्रोत कोड रिपॉजिटरी में जानबूझकर डाले गए दुर्भावनापूर्ण कोड के परिणामस्वरूप हुआ।
बैकडोर मार्च 2021 के दौरान PHP 8.1.0-dev के डेवलपमेंट स्नैपशॉट्स में दिखाई दिया, जब हमलावरों ने PHP Git इंफ्रास्ट्रक्चर से सफलतापूर्वक समझौता किया। दुर्भावनापूर्ण कमिट्स विश्वसनीय PHP मेंटेनर्स का रूप धारण करके किए गए और उन्होंने एक छिपा हुआ तंत्र पेश किया जो विशेष रूप से तैयार किए गए HTTP हेडर प्राप्त होने पर मनमाना PHP कोड निष्पादित करने में सक्षम था।
हालाँकि बैकडोर खोजे जाने और हटाए जाने से पहले केवल थोड़े समय के लिए मौजूद था, फिर भी कोई भी सर्वर जिसने समझौता किए गए डेवलपमेंट बिल्ड्स में से एक को तैनात किया था, वह तुरंत बिना प्रमाणीकरण के रिमोट कोड एक्सेक्यूशन (RCE) के प्रति संवेदनशील हो गया।
इस घटना ने PHP के डेवलपमेंट वर्कफ़्लो को मौलिक रूप से बदल दिया और अंततः PHP स्रोत रिपॉजिटरी को उसके सेल्फ-होस्टेड Git इंफ्रास्ट्रक्चर से स्थानांतरित करने का कारण बना। :contentReference[oaicite:0]{index=0}
अधिकांश रिमोट कोड एक्सेक्यूशन भेद्यताएं इनसे उत्पन्न होती हैं:
यह भेद्यता अलग थी।
यह कोडिंग बग नहीं थी।
यह वैध PHP स्रोत कोड के अंदर छिपा हुआ जानबूझकर लगाया गया बैकडोर था।
किसी मौजूदा कमजोरी का शोषण करने के बजाय, हमलावरों ने PHP को ही संशोधित कर दिया ताकि यह किसी भी व्यक्ति द्वारा HTTP अनुरोध में भेजे गए मनमाने PHP कोड को निष्पादित कर सके।
यह इस घटना को सॉफ्टवेयर सप्लाई चेन अटैक के सबसे प्रसिद्ध उदाहरणों में से एक बनाता है।
28 मार्च 2021 को, PHP की Git रिपॉजिटरी में दो संदिग्ध कमिट्स दिखाई दिए।
दोनों कमिट्स प्रसिद्ध PHP मेंटेनर्स की ओर से आते हुए प्रतीत हुए।
शुरुआत में वे हानिरहित लग रहे थे।
कमिट संदेश सामान्य टाइपो सुधारों जैसे थे।
हालाँकि, शोधकर्ताओं ने जल्दी ही PHP इंटरप्रेटर में जोड़े गए संदिग्ध कोड पर ध्यान दिया।
डाला गया कोड आने वाले HTTP अनुरोधों में एक कस्टम हेडर खोजता था:
User-Agentt
अतिरिक्त "t" पर ध्यान दें।
वर्तनी का यह सूक्ष्म अंतर आकस्मिक समीक्षा के दौरान बैकडोर को छुपाने में मदद करता था।
यदि हेडर ट्रिगर स्ट्रिंग से शुरू होता था:
zerodium
PHP तुरंत इसका उपयोग करके उसके बाद आने वाली हर चीज़ को निष्पादित कर देता था:
zend_eval_string()
यह प्रभावी रूप से किसी भी व्यक्ति को रिमोट से मनमाना PHP कोड निष्पादित करने की अनुमति देता था।
दुर्भावनापूर्ण कमिट्स खोजे जाने के कुछ ही घंटों के भीतर हटा दिए गए। बाद की जांच ने संकेत दिया कि हमलावरों ने मेंटेनर हस्ताक्षर कुंजियाँ वैध रूप से प्राप्त करने के बजाय PHP Git इंफ्रास्ट्रक्चर से समझौता किया था। :contentReference[oaicite:1]{index=1}
डाला गया कोड मोटे तौर पर निम्नलिखित तर्क निष्पादित करता था:
Incoming HTTP Request
│
▼
Read User-Agentt Header
│
▼
Does header start with "zerodium"?
│
Yes ▼
Execute remaining text as PHP
│
▼
Attacker gains Remote Code Execution
हेडर को हानिरहित मेटाडेटा के रूप में मानने के बजाय, PHP ने इसे सीधे निष्पादन योग्य PHP कोड के रूप में मूल्यांकित किया।
आम तौर पर एक HTTP अनुरोध में निम्न जैसे हेडर होते हैं:
GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla Firefox
समझौता किए गए PHP संस्करण ने अतिरिक्त रूप से प्रोसेस किया:
User-Agentt:
यदि इसका मान इससे शुरू होता था:
zerodium
PHP ने यह कॉल किया:
zend_eval_string()
शेष सामग्री निष्पादन योग्य PHP बन गई।
संकल्पनात्मक रूप से:
User-Agentt:
zerodium
│
▼
zend_eval_string(payload)
│
▼
Remote Code Execution
Attacker
│
│ HTTP Request
▼
GET /
User-Agentt: zerodiumsystem("id");
│
▼
PHP 8.1.0-dev
│
▼
Backdoor Triggered
│
▼
system("id")
│
▼
Command Executed
│
▼
Output Returned
कोई प्रमाणीकरण नहीं।
कोई सत्र नहीं।
कोई क्रेडेंशियल नहीं।
एक HTTP अनुरोध पर्याप्त था।
हमलावरों ने जानबूझकर यह चुना:
User-Agentt
इसके बजाय:
User-Agent
क्योंकि:
इस छोटे से टाइपो ने एक पूर्ण रिमोट कोड एक्सेक्यूशन बैकडोर छिपा दिया।
केवल:
PHP 8.1.0-dev
विशेष रूप से मार्च 2021 घटना के दौरान प्रकाशित समझौता किए गए डेवलपमेंट स्नैपशॉट्स।
स्थिर रिलीज़ जैसे:
कभी प्रभावित नहीं हुए।
हमलावर को केवल आवश्यकता थी:
कोई प्रमाणीकरण नहीं।
कोई ब्रूट फोर्स नहीं।
कोई लॉगिन नहीं।
कोई पूर्व एक्सेस नहीं।
सफल शोषण हमलावरों को अनुमति देता है:
व्यवहार में, यह भेद्यता पूर्ण सर्वर समझौते में परिणत होती है।
| तकनीक | विवरण |
|---|---|
| T1195 | सप्लाई चेन समझौता |
| T1059 | कमांड और स्क्रिप्टिंग इंटरप्रेटर |
| T1505 | सर्वर सॉफ्टवेयर घटक |
| T1105 | इनग्रेस टूल ट्रांसफर |
| T1071 | एप्लिकेशन लेयर प्रोटोकॉल |
| T1106 | नेटिव API |
| T1055 | प्रोसेस इंजेक्शन (संभावित पोस्ट-एक्सप्लॉइटेशन) |
| T1027 | ऑबफस्केटेड फ़ाइलें या जानकारी |
प्रशासकों को तुरंत उन सिस्टमों की जांच करनी चाहिए जो इसे उजागर करते हैं:
PHP/8.1.0-dev
प्रतिक्रिया हेडर में जैसे:
X-Powered-By:
PHP/8.1.0-dev
HTTP लॉग में भी इन्हें शामिल करने वाले संदिग्ध अनुरोधों की जांच की जानी चाहिए:
User-Agentt
या
zerodium
कई इंट्रूज़न डिटेक्शन सिस्टम और IPS उत्पादों में अब इस हमले के पैटर्न के लिए विशेष रूप से सिग्नेचर शामिल हैं। :contentReference[oaicite:2]{index=2}
संभावित संकेतकों में शामिल हैं:
User-Agentt युक्त अनुरोधzerodium से शुरू होने वाले हेडर मान| गुण | मान |
|---|---|
| प्रमाणीकरण | कोई नहीं |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| जटिलता | बहुत कम |
| आवश्यक विशेषाधिकार | कोई नहीं |
| रिमोट | हाँ |
इसे शोषण करने में सबसे आसान रिमोट कोड एक्सेक्यूशन भेद्यताओं में से एक माना जाता है क्योंकि हमलावर केवल एक क्राफ्टेड HTTP अनुरोध भेजता है।
प्रोडक्शन सिस्टम पर PHP के डेवलपमेंट स्नैपशॉट्स कभी भी तैनात न करें।
यदि कोई सर्वर समझौता किए गए बिल्ड पर चलता हुआ पाया गया:
इस घटना ने कई महत्वपूर्ण पाठ प्रदर्शित किए:
समझौते ने PHP के डेवलपमेंट इंफ्रास्ट्रक्चर में परिवर्तनों को गति दी और उद्योग भर में सॉफ्टवेयर सप्लाई चेन सुरक्षा के बढ़ते महत्व को उजागर किया। :contentReference[oaicite:3]{index=3}
PHP 8.1.0-dev User-Agentt बैकडोर एक प्रमुख ओपन-सोर्स प्रोजेक्ट को प्रभावित करने वाले सॉफ्टवेयर सप्लाई चेन हमले के सबसे महत्वपूर्ण उदाहरणों में से एक बना हुआ है। एक प्रोग्रामिंग दोष का शोषण करने के बजाय, हमलावरों ने एक छिपा हुआ बैकडोर सीधे भाषा के स्रोत कोड में डाल दिया, जिससे एक विशेष रूप से तैयार किए गए User-Agentt HTTP हेडर के माध्यम से मनमाने PHP कोड का बिना प्रमाणीकरण के रिमोट निष्पादन संभव हो गया। हालाँकि समझौता किए गए डेवलपमेंट स्नैपशॉट्स को जल्दी से हटा दिया गया था और कोई भी स्थिर PHP रिलीज़ प्रभावित नहीं हुई थी, फिर भी इस घटना ने सॉफ्टवेयर डेवलपमेंट इंफ्रास्ट्रक्चर को सुरक्षित करने, कोड की उत्पत्ति को सत्यापित करने और प्रोडक्शन वातावरण में डेवलपमेंट बिल्ड्स की तैनाती से बचने के महत्वपूर्ण महत्व को रेखांकित किया। आज, यह भेद्यता सप्लाई चेन सुरक्षा में एक ऐतिहासिक मामले के रूप में व्यापक रूप से अध्ययन की जाती है और एक अनुस्मारक के रूप में कार्य करती है कि सॉफ्टवेयर बिल्ड प्रक्रिया की अखंडता कोड की सुरक्षा जितनी ही महत्वपूर्ण है।