
RHEL, CentOS और Oracle Linux 7 / 6 के एंड-ऑफ-लाइफ PHP 5.4 / 5.3 पैकेजों के लिए CVE-2026-109618 / CVE-2026-109619 (php2shell) का अनौपचारिक फिक्स
Enterprise Linux 6 और 7 के एंड-ऑफ-लाइफ PHP पैकेजों के लिए CVE-2026-109618 और CVE-2026-109619 ("php2shell") का अनौपचारिक फिक्स: php-5.3.3 (RHEL / CentOS / Oracle Linux 6) और php-5.4.16 (RHEL / CentOS / Oracle Linux / Scientific Linux 7)।
PHP ने दोनों कमज़ोरियों को 21 अक्टूबर 2026 को 8.2.35, 8.3.36, 8.4.27 और 8.5.12 में ठीक किया, और 7.4, 8.0 और 8.1 के लिए स्रोत बैकपोर्ट प्रकाशित किए। PHP 5 के लिए कुछ भी जारी नहीं किया गया, और EL6 / EL7 विक्रेताओं ने कोई फिक्स नहीं भेजा है। यदि आपको ऐसी प्रणाली को चालू रखना है, तो यह प्रोजेक्ट आपको आधिकारिक न्यूनतम फिक्स के पोर्ट के साथ पुनर्निर्मित विक्रेता पैकेज प्रदान करता है।
यह PHP, Red Hat या Oracle की ओर से कोई आधिकारिक फिक्स नहीं है। यह तब तक जोखिम कम करता है जब तक आप किसी समर्थित PHP संस्करण पर नहीं जा सकते — ऐसा जितनी जल्दी हो सके करें। EL8 / EL9 / EL10 पर, इसके बजाय अपने विक्रेता के अपडेट इंस्टॉल करें (उदाहरण के लिए ELSA/RHSA-2026:87080, 87151, 87079)।
php-5.4.16 /
php-5.3.3 रिलीज़ टारबॉल पर लागू नहीं होते, जिनमें उसी कोड में विक्रेता के बाद के सुरक्षा फिक्स नहीं हैं
(उदाहरण के लिए multipart हेडर पार्सिंग में CVE-2015-4024)।| वितरण | विक्रेता पैकेज | इस प्रोजेक्ट से फिक्स्ड पैकेज |
|---|---|---|
| RHEL / CentOS / Oracle Linux / Scientific Linux 7 | php-5.4.16-48.el7 | php-5.4.16-48.el7.php2shell.1 |
| RHEL / CentOS / Oracle Linux 6 | php-5.3.3-50.el6_10 | php-5.3.3-50.el6_10.php2shell.1 |
रिलीज़ सफ़िक्स विक्रेता पैकेज से ऊपर और किसी भी भविष्य के विक्रेता एराटम से नीचे क्रमबद्ध होता है
(उदाहरण के लिए 48.el7_9.1), इसलिए कोई आधिकारिक फिक्स, यदि कभी आए, तो सामान्य अपडेट के साथ इसे प्रतिस्थापित कर देगा।
संभवतः PHP 7 और 8 की तुलना में कम, लेकिन अभी तक कोई निश्चित उत्तर नहीं है:
php पैकेजों को CVE-2026-109619 से अप्रभावित ("vulnerable code not present") के रूप में रेट करता है
और CVE-2026-109618 को जाँच के अधीन सूचीबद्ध करता है
(CSAF VEX)।यह प्रोजेक्ट फिर भी आधिकारिक शमन लागू करता है: यह असुरक्षित त्रुटि पथ को ही हटा देता है, केवल उस तक पहुँचने के ज्ञात तरीके को नहीं।
GitHub Pages पर हस्ताक्षरित yum रिपॉज़िटरी से:
# EL7
curl -o /etc/yum.repos.d/php2shell-eol-backport.repo \
https://alvm.github.io/php2shell-eol-backport/php2shell-eol-backport-el7.repo
# EL6
curl -o /etc/yum.repos.d/php2shell-eol-backport.repo \
https://alvm.github.io/php2shell-eol-backport/php2shell-eol-backport-el6.repo
yum update 'php*' # confirm the signing key: fingerprint under "Signing key" below
service httpd restart # and php-fpm, if you use it
रिपॉज़िटरी में इस परियोजना के केवल PHP पैकेज हैं, और दोनों पैकेज तथा रिपॉज़िटरी
मेटाडेटा हस्ताक्षरित हैं (gpgcheck=1, repo_gpgcheck=1)। RPMs और स्रोत RPMs भी प्रत्येक
रिलीज़ से जुड़े हुए हैं, एक हस्ताक्षरित SHA256SUMS के साथ; उन्हें
yum localinstall के साथ इंस्टॉल करें।
./tools/check-patched.sh
यह हर इंस्टॉल किए गए PHP 5 पैकेज को FIXED या VULNERABLE के रूप में सूचीबद्ध करता है, जाँचता है कि PHP CLI फ़िक्स किए गए
कोड को चलाता है, और चेतावनी देता है यदि httpd या php-fpm अपडेट से पहले शुरू किया गया था और अभी भी पुराना कोड चला रहा है।
यह फ़िक्स आधिकारिक न्यूनतम बैकपोर्ट का अनुसरण करता है, जो सुगम त्रुटि प्रबंधन की तुलना में सुरक्षा को प्राथमिकता देता है:
memory_limit से अधिक हो जाता है (या कोई आवंटन आकार
ओवरफ़्लो हो जाता है), तो PHP stderr (वेब सर्वर त्रुटि लॉग) पर Fatal error: ... प्रिंट करता है और प्रक्रिया तुरंत बाहर निकल जाती है।
Apache / php-fpm एक नया वर्कर शुरू करते हैं। शटडाउन फ़ंक्शन नहीं चलते, और उस अनुरोध में अपलोड की गई अस्थायी फ़ाइलें
हटाई नहीं जाती हैं — tmpwatch (EL6) और systemd-tmpfiles (EL7) समय के साथ उन्हें /tmp से साफ़ कर देते हैं।Content-Disposition और Content-Type हेडर रखे जाते हैं
(केवल वही जो PHP उपयोग करता है), और नया php.ini निर्देश max_multipart_body_parts भागों की संख्या को सीमित करता है
(डिफ़ॉल्ट -1 = max_input_vars + max_file_uploads)।zend_mm_safe_error_ex) जोड़ता है और किसी भी मौजूदा API या ABI को नहीं बदलता, इसलिए
वेंडर पैकेज के लिए बनाए गए एक्सटेंशन काम करते रहते हैं।यह प्रकाशित हमला पथों का न्यूनतम शमन है, PHP 5 का पूर्ण सुरक्षा अपडेट नहीं।
वेंडर स्रोत RPM से निर्मित (SHA-256 build/build.sh में पिन किया गया); स्पेक परिवर्तन 8 पंक्तियों का है
(spec/*/php.spec.diff)।
PHP टेस्ट सूट (make test, RPM बिल्ड के दौरान चलाया गया) की तुलना उसी वेंडर पैकेज के असंशोधित पुनर्निर्माण से की गई। केवल नई विफलताएँ अपेक्षित हैं:
सेशन अपलोड प्रगति परीक्षण (सुविधा अक्षम) और tests/lang/bug45392.phpt (घातक त्रुटि संदेश अब एक खाली पंक्ति से शुरू होता है, जैसा कि आधिकारिक 7.4 पैच में है)।
| परीक्षण | विफल: वेंडर | विफल: पैच किया गया | |
|---|---|---|---|
| EL7, PHP 5.4.16 | 12373 | 14 | 23 (8 अपलोड प्रगति + bug45392) |
| EL6, PHP 5.3.3 | 11213 | 55 | 56 (bug45392) |
सटीक संख्याएँ बिल्ड वातावरणों के बीच थोड़ी भिन्न होती हैं: GitHub रनर पर दो SPL फ़ाइल-स्वामी परीक्षण
(DirectoryIterator_getOwner/getGroup_basic) भी विफल होते हैं, और time_sleep_until_basic समय-संवेदनशील है।
इनमें से कोई भी पैच द्वारा बदले गए कोड को स्पर्श नहीं करता।
PHP 5.4 पैच की तुलना Amazon Linux 2 के php-5.4.16 के लिए उसी फ़िक्स के स्वतंत्र पोर्ट से की गई:
मुख्य परिवर्तन समान हैं। अंतर docs/ALTERNATIVES.md में सूचीबद्ध हैं।
कोई शोषण कोड नहीं लिखा या उपयोग नहीं किया गया। कृपया पैच की समीक्षा स्वयं अपस्ट्रीम कमिट के विरुद्ध करें।
वेंडर स्थिति, परियोजनाओं की सूची और तुलना के लिए docs/ALTERNATIVES.md देखें।
Docker और प्रति बिल्ड लगभग 3 GB खाली डिस्क स्थान की आवश्यकता है।
build/build.sh el7 # results in _build/el7/RPMS
build/build.sh el6 # results in _build/el6/RPMS
स्क्रिप्ट विक्रेता स्रोत RPM डाउनलोड करती है, उसका SHA-256 जाँचती है, और इस रिपॉज़िटरी की स्पेक फ़ाइल और पैच के साथ एक पिन किए गए Oracle Linux कंटेनर में उसे पुनर्निर्मित करती है।
पैकेज और रिलीज़ टैग निम्नलिखित से हस्ताक्षरित हैं: