
EOL प्लेटफ़ॉर्म पर PHP CVE-2026-109618 / CVE-2026-109619 (RCE, CVSS 9.2) के लिए अनौपचारिक पैच: CentOS/RHEL 7 पर PHP 7.3 (Remi), Amazon Linux 2 पर PHP 5.4, Amazon Linux 1 पर PHP 5.3
2026-10-21 को घोषित दो गंभीर, अनधिकृत रिमोट कोड निष्पादन कमजोरियों के लिए PHP सुरक्षा टीम के न्यूनतम शमन के अनौपचारिक बैकपोर्ट:
| CVE | सलाह | सारांश |
|---|---|---|
| CVE-2026-109618 | GHSA-w8hw-w9fx-j79w | आउट-ऑफ-मेमोरी भ्रष्टाचार के माध्यम से RCE (CVSS 4.0: 9.2) |
| CVE-2026-109619 | GHSA-6wmf-4rv5-p3rp | पुरानी वैश्विक स्थिति के माध्यम से RCE (CVSS 4.0: 9.2) |
अपस्ट्रीम ने PHP 8.2.35, 8.3.36, 8.4.27 और 8.5.12 को ठीक किया, और 7.4, 8.0 और 8.1 के लिए केवल-स्रोत न्यूनतम शमन प्रकाशित किए। नीचे दिए गए प्लेटफ़ॉर्म के लिए कोई भी फ़िक्स प्रकाशित नहीं करता, इसलिए यह रिपॉज़िटरी उनके लिए पैच और पुनरुत्पादनीय बिल्ड स्क्रिप्ट प्रदान करती है।
PHP Group, Remi Collet, या Amazon से संबद्ध नहीं। कोई वारंटी नहीं। तैनात करने से पहले सीमाएँ पढ़ें।
php7.3 7.3.33-35 में उसी अपस्ट्रीम कमिट का एक अलग 7.3 पोर्ट शामिल है। यहाँ का EL7 पैच उन्हीं 17 फ़ाइलों को बदलता है, और मुख्य परिवर्तन पंक्ति-दर-पंक्ति समान हैं (विवरण docs/TESTING.md में)।tests/verify.sh ने प्रत्येक के लिए PATCHED रिपोर्ट किया।| आपका सिस्टम | PHP पैकेज स्रोत | क्या उपयोग करें |
|---|---|---|
| CentOS 7 / RHEL 7 | Remi php73 (जैसे php-7.3.33-14.el7.remi) | patches/php-7.3.33-remi22-el7-… + build/el7-php73/build.sh |
| Amazon Linux 2 | Amazon php-5.4.16-46.amzn2.* | patches/php-5.4.16-amzn2-… + build/amazon-linux/build.sh amzn2 |
| Amazon Linux 1 (AMI 2017.03 / 2018.03) | Amazon php-5.3.29-1.8.amzn1 | patches/php-5.3.29-amzn1-… + build/amazon-linux/build.sh amzn1 |
| Sury PPA के साथ Ubuntu / Debian, PHP 7.3 / 7.4 / 8.0 / 8.1 | deb.sury.org | यहाँ से कुछ नहीं। Sury 7.3.33-35, 7.4.33-31, 8.0.30-25 या 8.1.34-9 (या बाद के) में अपग्रेड करें। उनमें पहले से ही फ़िक्स शामिल है (debian/patches/*-Avoid-state-corruption-via-bailout.patch), भले ही उनके चेंजलॉग CVEs का उल्लेख नहीं करते। |
Ubuntu 24.04 डिस्ट्रो php8.3 | Ubuntu आर्काइव | 8.3.6-0ubuntu0.24.04.13 या बाद के संस्करण में अपग्रेड करें। |
| किसी भी स्रोत से PHP 8.2 या नया | — | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 या बाद के संस्करण में अपग्रेड करें। |
बिल्ड मशीन पर Docker आवश्यक है (कोई भी OS)। बिल्ड पूरी तरह से लक्ष्य वितरण के कंटेनरों के अंदर चलते हैं, इसलिए परिणामी RPMs सादे yum localinstall के साथ इंस्टॉल होते हैं।
git clone https://github.com/leonlai-tw/php-eol-cve-2026-109618-109619.git
cd php-eol-cve-2026-109618-109619
# CentOS 7 / RHEL 7 + Remi PHP 7.3 -> ./work-el7/out/
build/el7-php73/build.sh
# Amazon Linux 2 + PHP 5.4 -> ./work-amzn2/out/
build/amazon-linux/build.sh amzn2
# Amazon Linux 1 + PHP 5.3 -> ./work-amzn1/out/
build/amazon-linux/build.sh amzn1
परिणामी पैकेज संस्करणित होते हैं <vendor version>.cvefix1 (उदाहरण के लिए
php-7.3.33-22.cvefix1.el7, php-5.4.16-46.amzn2.0.7.cvefix1), इसलिए वे हमेशा उस विक्रेता पैकेज से नए क्रम में आते हैं जिसे वे प्रतिस्थापित करते हैं।
केवल वे पैकेज इंस्टॉल करें जो आपके पास पहले से हैं, फिर PHP को पुनः आरंभ करें:
# on the target host, inside the directory holding the built RPMs
yum localinstall $(for p in $(rpm -qa 'php*' --qf '%{NAME}\n'); do ls ${p}-[0-9]*.cvefix1*.rpm 2>/dev/null; done)
systemctl restart php-fpm # or: apachectl graceful (mod_php)
लंबे समय तक चलने वाली PHP प्रक्रियाओं (Swoole/Octane, क्यू वर्कर, क्रॉन डेमन) को भी पुनः आरंभ करना होगा; अन्यथा वे पुराने बाइनरी को चलाते रहेंगे।
rpm -q php-cli # must end in .cvefix1
tests/verify.sh # prints PATCHED / NOT PATCHED
tests/verify.sh एक CLI प्रक्रिया को 16 MB मेमोरी सीमा के साथ चलाता है और न्यूनतम शमन के अवलोकनीय व्यवहार की जाँच करता है: आउट-ऑफ-मेमोरी होने पर प्रक्रिया शटडाउन फ़ंक्शन चलाए बिना कोड 1 के साथ बाहर निकलती है (अनपैच्ड PHP 255 के साथ बाहर निकलती है और उन्हें चलाती है)।
यह पुष्टि करने के लिए कि एक चल रहा PHP-FPM नए बाइनरी का उपयोग करता है:
p=$(pgrep -o -f 'php-fpm: master'); sha256sum /proc/$p/exe /usr/sbin/php-fpm # hashes must match
अपस्ट्रीम कमिट 712e60f9ed ("Avoid state corruption via bailout", ब्रांच PHP-7.4-CVE-2026-109618-109619) के समान डिज़ाइन:
_exit(1) के साथ प्रोसेस को समाप्त करता है; PHP-FPM / Apache एक नया वर्कर शुरू करते हैं। यही "Possible integer overflow in memory allocation" त्रुटियों पर भी लागू होता है।Content-Disposition और Content-Type पार्ट हेडर रखती है और डुप्लिकेट्स को अनदेखा करती है, इसलिए एक छोटी रिक्वेस्ट अब PHP से भारी मात्रा में मेमोरी आवंटित नहीं करवा सकती।session.upload_progress अक्षम है (CVE-2026-109619 के लिए पुष्ट उत्पादक)।modules_activated, एक्ज़ीक्यूटर अपवाद/त्रुटि-प्रबंधन स्थिति, लिंक्ड-लिस्ट हेड्स), ताकि अगली रिक्वेस्ट मुक्त की गई स्थिति को न देख सके।प्रति फ़ाइल विवरण और प्रत्येक पोर्ट कैसे बनाया गया: docs/PROVENANCE.md। परीक्षण परिणाम: docs/TESTING.md।
memory_limit समाप्त कर देती है, वह अपने वर्कर प्रोसेस को समाप्त कर देती है; mod_php के साथ क्लाइंट को HTTP 500 पेज के बजाय ड्रॉप किया गया कनेक्शन दिखता है;register_shutdown_function() कॉलबैक नहीं चलते;session.upload_progress अब प्रगति की रिपोर्ट नहीं करता।7.3.33-22 स्रोत पर आधारित है। यदि आप वर्तमान में Remi का अंतिम EL7 बाइनरी (7.3.33-14) चलाते हैं, तो आपको -15 से -22 तक Remi के सुरक्षा बैकपोर्ट भी मिलते हैं (CVE-2024-4577, CVE-2024-8925/8926/8927, CVE-2024-8929, CVE-2024-11233/11234/11236, CVE-2025-14178, CVE-2026-6735, CVE-2026-14355, CVE-2026-7260, CVE-2026-17543 और अन्य)।amazonlinux:2018.03 इमेज में बनाया गया है और इसके लिए openssl ≥ 1.0.2k (libcrypto.so.10(OPENSSL_1.0.2)) आवश्यक है। जो होस्ट अभी भी openssl 1.0.1k पर हैं, उन्हें पहले amzn-updates से openssl अपग्रेड करना होगा।