PHP-nooduitgave: twee kritieke core-RCE's verholpen in 8.2.35 tot 8.5.12
PHP heeft een out-of-band securityrelease uitgebracht die twee kritieke use-after-free-kwetsbaarheden in de taalkern dicht, allebei exploiteerbaar voor ongeauthenticeerde remote code execution en allebei met 9,2 op de CVSS-v4.0-schaal. De opgeloste versies zijn PHP 8.5.12, 8.4.27, 8.3.36 en 8.2.35, vandaag gepubliceerd en opgenomen in het releasearchief van het project. Minimale source-backports voor de lang verlaten 7.4-, 8.0- en 8.1-takken zijn alleen op GitHub te vinden - officiële binaries daarvoor bestaan niet.
Aan de release ging een chaotisch pre-disclosurevenster vooraf. Op 20 oktober kondigde het project een noodrelease aan voor vandaag 14:00 UTC zonder kwetsbare versies of functies te noemen; zoals OX Security documenteerde, gingen screenshots van een exploittool rond voordat de patches er waren, en het project waarschuwde zelf dat proof-of-concept-code die in dat venster circuleert vaak vermomde malware is. Nu de patches en adviezen openbaar zijn, is het technische beeld helderder dan de teaser-cyclus deed vermoeden.Een out-of-memory-route naar code-uitvoering
CVE-2026-109618, geregistreerd als GHSA-w8hw-w9fx-j79w, misbruikt hoe PHP met geheugentekort omgaat. Faalt een allocatie, dan wikkelt de engine het request af met een longjmp() - gebeurt dat terwijl requestgeheugen nog maar deels is geïnitialiseerd, dan leest of vertakt de shutdown-fase later over geheugen in een ongeldige staat. Het advies beschrijft een familie van allocatiedruk-trucs die dit bereikbaar maken vanuit een gewoon HTTP-request: multipart-bodies zonder bruikbare content-length die langs post_max_size glippen, delen met duizenden headers waarvan de in-memory representatie hun draadgrootte ver te boven gaat, en lege file-controls die metadata-arrays aanmaken zonder ooit tegen max_file_uploads te tellen. De Apache mod_php-SAPI is als exploiteerbaar bevestigd: onderzoekers valideerden ongeauthenticeerde remote code execution als de webworker-account over kale HTTP tegen default prefork-configuraties - met hoge attack complexity en mogelijk meerdere pogingen. PHP-FPM geldt als vatbaar via applicatiespecifieke allocatiepaden, FrankenPHP en LiteSpeed vermoedelijk ook. De patch vervangt de ruwe longjmp door een zachte out-of-memory-val op het eerstvolgende VM-safe point, plus een harde fout die de worker direct beëindigt.Achtergebleven globale staat in workerprocessen
CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp) is de stillere broer: workerprocessen slepen globale staat mee - errorhandlers, sessiedata, object- en extensieboekhouding - die kan uitkomen bij geheugen dat aan één request toebehoort. Schrijft een fatale fout, een out-of-memory-abort of een late diagnosticering zulke staat en zet niets die terug voordat het requestgeheugen vrijkomt, dan bungelen de globals van de worker in het lege. Alles wat ze raakt voordat een vers request initialisiert, leest vrijgegeven geheugen. Twee productieroutes zijn bevestigd: de fatale-foutbacktraces die nieuw zijn in PHP 8.5 onder mod_php, en het session-uploadprogress-mechanisme onder mod_php en FPM. Producent en consument moeten op hetzelfde workerproces landen, wat FPM-pools met veel workers lastiger - maar niet onmogelijk - maakt om te raken.Een strategisch opgebouwd heap-layout kan volledige remote code execution (RCE) opleveren. - PHP-securityadvies, GHSA-6wmf-4rv5-p3rp
Wat beheerders nu moeten doen
Updaten is de enige volledige mitigatie, en dit is geen patch-en-vergeten: beide adviezen benadrukken na de upgrade álle PHP-workers te herstarten, want achtergebleven staat kan in langlevende processen overleven. Ondersteunde takken krijgen release-binaries; sites die aan EOL-takken vastzitten moeten de source-backports zelf aanbrengen.- Update naar 8.2.35, 8.3.36, 8.4.27 of 8.5.12 (of breng de GitHub-backports voor 7.4/8.0/8.1 aan) en herstart daarna elk workerproces.
- Kan updaten vandaag niet: zet session.upload_progress.enabled=0 en, op PHP 8.5, fatal_error_backtraces=0, en herstart de workers.
- Dwing voor de OOM-kwetsbaarheid memory_limit=-1 centraal af en controleer dat geen pool- of .htaccess-override weer een eindig limiet terugzet.
- Houd post_max_size conservatief, blokkeer multipart-requests aan de frontend als de toepassing ze niet gebruikt, en begrens invoervariabelen, headers en uploads.
- Gebruik container- of cgroup-geheugenlimieten in plaats van RLIMIT_AS of RLIMIT_DATA - het advies waarschuwt expliciet dat RLIMIT-mechanismen allocatiefouten op het kwetsbare pad drukken.
- Optioneel workerrecycling begrenzen met pm.max_requests om het venster voor statoverdracht te verkorten.










