
PHP 8.4.26 - क्रिटिकल - रिमोट - OOM longjmp - CVE-2026-109618 PHP2Shell। Apache mod_php पर ऐप कोड से पहले अनऑथेंटिकेटेड चंक्ड मल्टीपार्ट memory_limit तक पहुँच जाता है। लैब बनाम 8.4.27। एडवाइज़री RCE अनुमानित।
इंटरनेट पर कोई भी व्यक्ति आपकी PHP साइट से उसी तरह बात कर सकता है जैसे कोई ब्राउज़र करता है, बिना किसी पासवर्ड के। अंतिम-प्रभावित PHP पर वे एक तैयार की गई फ़ाइल-अपलोड अनुरोध भेज सकते हैं जिससे इंजन की मेमोरी समाप्त हो जाती है, जबकि वह अभी भी अनुरोध पढ़ रहा होता है, आपके एप्लिकेशन के शुरू होने से पहले। PHP फिर उस कार्य से बाहर कूद जाता है जबकि अनुरोध केवल आधा ही बना होता है। PHP Group ने दिखाया कि उस आधे-बने राज्य की सफ़ाई वेब वर्कर के रूप में रिमोट कोड एक्ज़ीक्यूशन बन सकती है। यह लैब Apache mod_php 8.4.26 पर आउट-ऑफ़-मेमोरी जंप को सिद्ध करती है और यह कि 8.4.27 उसी अनुरोध को साफ़-सुथरे ढंग से पूरा करता है।
वर्ग: OOM longjmp / request-startup abort पहुँच: रिमोट
PHP 8.4.26 (php:8.4.26-apache) बनाम पैच किया गया 8.4.27 - php.net
Apache mod_php हमेशा request shutdown चलाता है, भले ही request startup विफल हो गया हो। CVE-2026-109618, rfc1867 पार्स के दौरान memory_limit पर longjmp() है, जबकि एक HashTable बकेट पहले से ही teardown-visible होता है। यह लैब एक chunked multipart/form-data POST है जिसमें कोई उपयोगी Content-Length नहीं है और memory_limit=8M के अंतर्गत ~3000 अतिरिक्त part हेडर हैं। 8.4.26 Fatal error: Allowed memory size ... in Unknown on line 0 लौटाता है। 8.4.27 alive मार्कर लौटाता है और index.php चलाता है। ट्रिगर के बाद वर्कर GET दोनों तरफ़ अभी भी 200 है। Apache वर्कर के रूप में advisory RCE, GHSA से अनुमानित है।
| ID | CVE-2026-109618 |
| Advisory | GHSA-w8hw-w9fx-j79w |
| वर्ग | OOM longjmp / request-startup abort (advisory RCE अनुमानित) |
| पहुँच | रिमोट (अप्रमाणित HTTP) |
| CWE | CWE-416 / CWE-824 / CWE-755 |
| CVSS | Critical: 9.2 CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H (PHP Group) |
| उत्पाद | PHP |
| प्रभावित | PHP 8.2.35 से पहले, 8.3.36 से पहले, 8.4.27 से पहले, 8.5.12 से पहले (लैब पिन 8.4.26) |
| ठीक किया गया | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 (21 अक्टूबर 2026) |
| प्रमाणीकरण | कोई नहीं |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1 |
सहोदर: CVE-2026-109619 stale worker-global UAF (PHP2Shell युग्म)।
| विधि | सिंक | विशेषाधिकार |
|---|---|---|
अप्रमाणित POST multipart/form-data जिसमें Transfer-Encoding: chunked, कई अतिरिक्त part हेडर, सीमित memory_limit | php_request_startup के दौरान rfc1867 पार्स / zend_bailout longjmp | उपलब्धता (लैब-सिद्ध): 8.4.26 पर index.php से पहले request startup को निरस्त करें (Unknown on line 0)। अखंडता (अनुमानित): shutdown आधे-आरंभित $_POST/$_FILES को ट्रैवर्स करता है; विक्रेता ने Apache वर्कर के रूप में RCE दिखाया (आधिकारिक इमेज में www-data)। Recon (अनुमानित): शेष request-heap का खुलासा। |
| 8.4.27 पर वही ट्रिगर | विलंबित soft OOM | बंद (लैब-सिद्ध): HTTP 200 alive मार्कर, files=1, वर्कर चालू रहता है। |
| ट्रिगर के बाद GET | वर्कर अभी भी जीवित | लैब-सिद्ध: इस पिन ने SIGSEGV नहीं किया और न ही zend_mm_heap corrupted लॉग किया। |
लॉगिन, एप्लिकेशन रूट, कस्टम .so, रिवर्स शेल | लागू नहीं | बंद। कोई RIP नियंत्रण का प्रयास नहीं किया गया। |
लैब-सिद्ध बनाम अनुमानित: 8.4.26 बनाम 8.4.27 OOM-longjmp अंतर लैब-सिद्ध है। Worker-death UAF और RCE GHSA-w8hw-w9fx-j79w से अनुमानित हैं। FPM आमतौर पर startup विफलता पर चाइल्ड को बाहर निकाल देता है; इस CVE के लिए विक्रेता द्वारा कोई पूर्ण FPM एक्सप्लॉइट नहीं दिखाया गया।
आवश्यक: Apache apache2handler। सीमित memory_limit (-1 सेट न करें; वही शमन है)। Multipart पार्स सक्षम। आधिकारिक php:8.4.26-apache बनाम php:8.4.27-apache।
python3 php-oom-longjmp-Abraxas-Labs.py
या cd lab && ./run.sh। लूपबैक 127.0.0.1:18220 (8.4.26) बनाम 127.0.0.1:18221 (8.4.27)। Compose प्रोजेक्ट cve-2026-109618। विटनेस CVE-2026-109618-OOM-WITNESS। अंतिम पंक्ति:
SUCCESS CVE-2026-109618 vuln-crash=yes patched-ok=yes sapi=apache2handler vuln-image=php:8.4.26-apache patched-image=php:8.4.27-apache how=oom-longjmp-startup-fatal trigger=header-bomb-chunked asan=no CVE-2026-109618-OOM-WITNESS
केवल अधिकृत लैब। यह लूपबैक से बात करता है।
PHP 8.4.27 (या 8.2.35 / 8.3.36 / 8.5.12) में अपडेट करें। पैच OOM longjmp() को अगले VM सेफ पॉइंट पर विलंबित सॉफ्ट OOM से और एक उच्चतर थ्रेशोल्ड से आगे हार्ड _exit() से बदल देता है (31c0ea7)। तब तक: एडमिन memory_limit=-1 जिसे एप्लिकेशन ओवरराइड नहीं कर सकते; post_max_size कम रखें; मल्टीपार्ट भागों और हेडरों को सीमित करें। RLIMIT_AS या RLIMIT_DATA का उपयोग न करें।
Abraxas Labs [email protected]