
CVE-2026-84361 के लिए प्रूफ-ऑफ-कॉन्सेप्ट, जो दुर्भावनापूर्ण P4PORT के माध्यम से Composer के Perforce ड्राइवर में कमांड इंजेक्शन प्रदर्शित करता है, साथ ही Docker-आधारित सत्यापन और शमन मार्गदर्शन के साथ।
Docker Compose का उपयोग करके, आप प्रभावित Composer 2.10.2 और Perforce p4 क्लाइंट सहित एक पृथक वातावरण में सत्यापन कर सकते हैं। निष्पादन कंटेनर नेटवर्क-अक्षम, केवल-पठनीय है, और सभी capabilities हटा दी गई हैं; केवल tmpfs /tmp और /work लिखने योग्य हैं।
# इमेज बनाएं (p4 आधिकारिक वितरण स्रोत से प्राप्त किया जाता है और SHA-256 सत्यापित किया जाता है)
docker compose build
# p4 के rsh: व्यवहार को सीधे सत्यापित करें (डिफ़ॉल्ट)
docker compose run --rm poc
# कमजोर Composer के माध्यम से सत्यापित करें
docker compose run --rm poc /usr/local/bin/run-composer-poc.sh
अंतिम कमांड कंटेनर के भीतर एक अस्थायी कार्यक्षेत्र में composer update --prefer-source निष्पादित करता है। चूंकि यह Perforce सर्वर नहीं बल्कि एक मार्कर कमांड का उपयोग करता है, Composer स्वयं विफल हो सकता है, लेकिन यदि मार्कर बनाया जाता है, तो यह प्रदर्शित करके सामान्य रूप से समाप्त हो जाता है।
[+] VULNERABLEComposer के Perforce VCS ड्राइवर में मौजूद CVE-2026-84361 के लिए एक स्थानीय सत्यापन PoC। प्रभावित Composer, जब पैकेज का source.type perforce होता है, तो हमलावर-नियंत्रित source.url को p4 क्लाइंट के P4PORT के रूप में पास करता है।
p4 rsh: / jsh: P4PORT को नेटवर्क कनेक्शन गंतव्य के बजाय एक स्थानीय कमांड के रूप में मानता है। इसलिए, जब अविश्वसनीय पैकेज मेटाडेटा या composer.lock से source इंस्टॉलेशन किया जाता है, तो कमांड Composer चलाने वाले उपयोगकर्ता या CI खाते के विशेषाधिकारों के साथ निष्पादित होती है।
इस PoC का पेलोड केवल अस्थायी क्षेत्र में एक खाली मार्कर फ़ाइल बनाता है।
खोजकर्ता: saku0512 (GitHub)
केवल शैक्षिक उद्देश्यों और स्पष्ट रूप से अनुमति प्राप्त वातावरण में सुरक्षा सत्यापन के लिए उपयोग करें। बिना अनुमति के दूसरों के सिस्टम या CI वातावरण में निष्पादित न करें।
>= 1.0, < 2.2.30 और >= 2.3.0, < 2.10.3सफलता के लिए, p4 PATH पर होना चाहिए, हमलावर Perforce source मेटाडेटा को नियंत्रित करने में सक्षम होना चाहिए, और लक्षित पैकेज source से इंस्टॉल किया जाना चाहिए। Packagist.org Perforce source मेटाडेटा की अनुमति नहीं देता है, इसलिए केवल Packagist-आधारित उपयोग प्रभावित नहीं होता है।
p4 क्लाइंटphp -v
p4 -V
डिफ़ॉल्ट रूप से, p4 प्रारंभ नहीं होता है; केवल खतरनाक P4PORT और निष्पादित होने वाला कमांड प्रदर्शित होता है।
php poc.php
--execute p4 को rsh: P4PORT पास करता है। पेलोड केवल sys_get_temp_dir() के अंतर्गत एक अद्वितीय मार्कर बनाता है और डिफ़ॉल्ट रूप से सफाई करता है।
php poc.php --execute
यदि [+] VULNERABLE दिखाई देता है, तो यह पुष्टि करता है कि P4PORT के माध्यम से एक स्थानीय कमांड निष्पादित किया गया था। मार्कर को बनाए रखने के लिए --keep-marker जोड़ें।
शामिल composer.json एक हमलावर द्वारा वितरित inline package repository का एक न्यूनतम उदाहरण है। पृथक वातावरण में असुधारित Composer और p4 के साथ निम्नलिखित निष्पादित करें।
composer update --prefer-source
सुधारित संस्करण p4 प्रारंभ करने से पहले source.url को अमान्य Perforce port के रूप में अस्वीकार कर देता है।
Composer को 2.2.30 या 2.10.3 या उसके बाद के संस्करण में अपडेट करें। केवल विश्वसनीय रिपॉजिटरी और lock फ़ाइलों का उपयोग करें, और उन वातावरणों में जहां Perforce का उपयोग नहीं किया जाता है, p4 को PATH से हटा दें।