PHP kondigde op 26 oktober 2026 vier herbouwde officiële Windows-pakketten aan voor PHP 8.2 tot en met 8.5. De pakketten bevatten Brotli 1.2.1, dat CVE-2026-111497 verhelpt: een schrijfoperatie buiten de gereserveerde geheugenruimte tijdens Brotli-decompressie. De route die PHP beschrijft loopt via de Windows-extensie cURL wanneer automatische decompressie van HTTP-antwoorden is ingeschakeld.
De vier bijgewerkte Windows-pakketten
In de aankondiging van PHP staan deze pakketnummers. Alle vier bevatten Brotli 1.2.1.
| PHP-tak | Bijgewerkt Windows-pakket | Brotli |
| 8.2 | 8.2.35-1 | 1.2.1 |
| 8.3 | 8.3.36-1 | 1.2.1 |
| 8.4 | 8.4.27-1 | 1.2.1 |
| 8.5 | 8.5.12-1 | 1.2.1 |
De fout zit in Brotli-decompressie
PHP omschrijft CVE-2026-111497 als een schrijfactie buiten de geheugenruimte die voor gegevens is gereserveerd. Het gaat om de Brotli-decoder, niet om de kern van de PHP-taal. De bijgewerkte afhankelijkheid pakt dus de fout in die decoder aan.
Dit is een ander probleem dan de twee PHP2Shell-fouten die NeoTeo eerder behandelde: CVE-2026-111497 betreft Brotli-decompressie.
Automatische decompressie bepaalt wanneer de cURL-route speelt
PHP zegt dat cURL automatische decompressie van HTTP-antwoorden standaard uitschakelt. Een toepassing of HTTP-clientbibliotheek kan die optie wel inschakelen. De beschreven route vereist dus dat een Windows-applicatie via PHP’s cURL-extensie zo’n antwoord automatisch laat decomprimeren.
The Hacker News meldde dat de cURL-handler van Guzzle 7.16.1 standaard een lege waarde voor CURLOPT_ENCODING instelt. Daarmee kan cURL alle ondersteunde compressie-indelingen verwerken. Het medium meldde ook dat het dit scenario niet op Windows heeft getest.
Zo herken je de herbouw
De toevoeging -1 markeert volgens PHP de Windows-pakketten die opnieuw zijn gebouwd met bijgewerkte afhankelijkheden. De PHP-broncode en runtimeversie veranderen niet. Daarom toont php -v niet of je de herbouwde pakketvariant hebt; daarvoor moet je het pakketnummer controleren.