PHP.nl
Security

Securityreleases voor PHP 8.1 t/m 8.4 dichten zes lekken

P
PHP.nl Redactie
👁 749 weergaven

Op 13 maart 2025 bracht het PHP-team tegelijk vier securityreleases uit: PHP 8.4.5, 8.3.19, 8.2.28 en 8.1.32. Samen dichten ze zes kwetsbaarheden, waarvan vijf in de HTTP-streamwrapper: de code die PHP gebruikt als je met file_get_contents(), fopen() of libxml een http://- of https://-adres opent. Het advies van het PHP-team is eenduidig: alle gebruikers van deze versies moeten upgraden.

Welke kwetsbaarheden zijn gedicht?

  • CVE-2024-11235: een use-after-free door fout reference counting bij het afsluiten van een request. Alleen PHP 8.3 en 8.4 zijn kwetsbaar.
  • CVE-2025-1219: libxml-streams sturen de verkeerde Content-Type-header door bij een redirect. Een XML-document kan daardoor verkeerd geïnterpreteerd worden.
  • CVE-2025-1736: de headercontrole van de HTTP-wrapper kan een opgegeven Authorization-header voor basic auth overslaan.
  • CVE-2025-1861: de HTTP-wrapper kapt de Location van een redirect af op 1024 bytes, waardoor een lange redirect-URL naar een andere bestemming kan leiden.
  • CVE-2025-1734: de HTTP-wrapper accepteert headers zonder dubbele punt, in plaats van ze als ongeldig af te wijzen.
  • CVE-2025-1217: de headerparser van de HTTP-wrapper verwerkt folded headers (headers verdeeld over meerdere regels) niet correct.

De vijf streamwrapper-problemen spelen in alle vier de branches, van 8.1 tot en met 8.4.

Ben ik kwetsbaar?

De meeste issues raken alleen applicaties die via de ingebouwde streamwrapper HTTP-verzoeken doen naar servers die een aanvaller kan beïnvloeden: denk aan het ophalen van een door gebruikers opgegeven URL, webhooks, RSS-feeds of het inladen van externe XML. Applicaties die al hun HTTP-verkeer via Guzzle met de cURL-handler of de Symfony HttpClient doen, gebruiken de PHP-streamwrapper meestal niet voor die verzoeken. De use-after-free in 8.3 en 8.4 zit in de kern van PHP zelf en is niet aan een specifieke functie gebonden.

Controleer je versie met php -v, en kijk op de server ook naar de versie van PHP-FPM; die kan afwijken van de CLI. Gebruik je de pakketten van je Linux-distributie, dan krijg je de fixes vaak als backport binnen met een ander versienummer. Kijk dan in de security advisories van je distributie welke pakketversie de CVE's oplost.

Wat moet je doen?

  1. Upgrade naar minimaal PHP 8.4.5, 8.3.19, 8.2.28 of 8.1.32, of een latere patchversie in dezelfde reeks.
  2. Herstart PHP-FPM en eventuele queue workers, zodat de nieuwe binary ook echt gebruikt wordt.
  3. Haal je HTTP-verzoeken naar door gebruikers opgegeven URL's door een allowlist, ongeacht de PHP-versie. Dat beperkt ook toekomstige problemen in deze hoek.

Let op: PHP 8.1 is inmiddels end of life

PHP 8.1.32 was op het moment van deze release al een versie die alleen nog securityfixes kreeg. Die ondersteuning is op 31 december 2025 geëindigd. Draai je nog op 8.1, dan krijg je voor nieuw ontdekte kwetsbaarheden geen fixes meer. Op de pagina PHP-versies zie je per versie tot wanneer hij ondersteund wordt. Lees ook hoe een PHP-versiemigratie in de praktijk verloopt.

Vervolg: externe audit van de PHP-broncode

Een maand later, op 10 april 2025, publiceerde het PHP-project de resultaten van een externe security-audit van de PHP-kern, uitgevoerd door Quarkslab in opdracht van de Sovereign Tech Agency en georganiseerd door de PHP Foundation samen met OSTIF. De audit leverde 27 bevindingen op, waarvan 17 met gevolgen voor de beveiliging, waaronder vier CVE's. Het was de eerste externe audit van de PHP-broncode in meer dan tien jaar. Alle bevindingen zijn inmiddels opgelost in de actuele PHP-versies.

Correctie: een eerdere versie van dit bericht noemde een kwetsbaarheid in de mbstring-extensie, gedicht in PHP 8.2.27 en 8.3.15. Die informatie was onjuist. Het bericht is herschreven op basis van de officiële releases van 13 maart 2025.

Bronnen: php.net: PHP 8.3.19 Released, PHP 8 ChangeLog, php.net nieuwsarchief 2025.