Noodupdate tegen PHP-lek laat websites zelf crashen

PHP lek
Ter illustratieBeeld: pexels.com

De noodupdate tegen het PHP2Shell-lek veroorzaakt zelf storingen

Wie na de alarmfase van 21 oktober de beveiligingsupdate voor PHP installeerde, dacht het ergste achter de rug te hebben. 

Voor veel websites begint het gedoe pas na die update, want twee van de vier nieuwe PHP-versies bevatten een fout waardoor websites en webapplicaties onverwacht onderuitgaan.

Het gaat om PHP 8.4.27 en 8.5.12. Dat zijn twee van de versies die de kritieke lekken dichten die bekendstaan als PHP2Shell. In dezelfde releases zit ook een losse aanpassing aan de garbage collector, het onderdeel dat ongebruikt geheugen opruimt. 

Die wijziging staat los van de beveiligingslekken maar pakt slecht uit voor SimpleXML. Dat is de standaardextensie waarmee PHP-software XML inleest, zoals feeds en antwoorden van externe koppelingen.

Juist de snelle updaters zijn de klos

Het misgaat wanneer software alle eigenschappen van een SimpleXML-object in één keer opvraagt en dat object later via een zogeheten referentiecyclus wordt opgeruimd. Het eerste gebeurt bijvoorbeeld bij een omzetting naar een array of naar JSON. 

De garbage collector geeft het geheugen dan twee keer vrij. Het PHP-proces stopt daarop met de melding zend_mm_heap corrupted, soms zelfs zonder enige foutmelding. Voor een bezoeker ziet dat eruit als een foutpagina of een pagina die simpelweg niet laadt.

Wrang is dat een bekende snelkoppeling onder ontwikkelaars precies in die valkuil loopt. 

Om XML snel om te zetten naar een gewone PHP-array wordt het object namelijk vaak eerst naar JSON vertaald en direct weer teruggezet.

Reparatie ligt klaar maar is nog niet uitgebracht

De fout werd nog op de dag van de update gemeld door een ontwikkelaar wiens testomgeving voor een Laravel-project plotseling vastliep. Hij zette zijn systemen daarop terug naar PHP 8.4.26. 

De PHP-ontwikkelaars hebben het probleem inmiddels bevestigd in de officiële foutmelding op GitHub. Er ligt een reparatie van één regel code klaar die een kernontwikkelaar heeft goedgekeurd. 

Een nieuwe PHP-versie met die oplossing is er nog niet. De meest recente aankondiging op de officiële PHP-website dateert van 26 oktober en ging alleen over Windows-pakketten met een fix voor een ander lek. 

Ondertussen duiken waarschuwingen over de crash op bij onder meer de officiële Docker-images van PHP en in het hostinghandboek van WordPress.

Terug naar de oude versie is geen optie

Beheerders staan daardoor voor een lastige keuze. Teruggaan naar 8.4.26 maakt een einde aan de crashes maar zet de deur weer open voor PHP2Shell, en dat lek wordt actief misbruikt. 

De Amerikaanse cyberdienst CISA plaatste beide kwetsbaarheden op 26 oktober op haar lijst van actief misbruikte lekken. 

Onderzoekers van het beveiligingsbedrijf Dream beschreven daarnaast een campagne waarbij 25 servers volledig werden overgenomen, onder meer firewalls van organisaties die gelieerd zijn aan de Amerikaanse overheid.

Er bestaan wel tussenoplossingen: PHP 8.3.36 en 8.2.35 bevatten de beveiligingsfix zonder de SimpleXML-fout, al loopt de ondersteuning voor PHP 8.2 eind dit jaar af. 

Het Belgische hostingbedrijf Hosted Power bracht een kleine PHP-extensie uit die oorspronkelijk bedoeld was om ongepatchte servers te beschermen. 

Sinds 22 oktober omzeilt die extensie ook de SimpleXML-crash. Wie zelf de code beheert kan de omweg via JSON vermijden zolang er geen nieuwe release is.

Die volgende release wordt hoe dan ook belangrijk. Behalve de crash moet die namelijk ook een derde kwetsbaarheid verhelpen. Die heeft te maken met de voortgangsweergave van uploads in sessies, en het PHP-team handelt haar af in de gewone releasecyclus. Tot die versie verschijnt, adviseert PHP om de instelling session.upload_progress.enabled op 0 te zetten. 

Een datum voor de nieuwe versie is nog niet bekendgemaakt.

Deel dit artikel

Over de auteur: Mike

Redacteur

Mike volgt storingen bij internet, telefonie, banken en energie op de voet. Hij zoekt uit wat er misgaat, hoe lang het duurt en wat je zelf kunt doen. Daar schrijft hij helder en zonder technisch jargon over.

Alle artikelen van Mike