Afgelopen donderdag is versie 5.3.7 van PHP uitgebracht. Nu waarschuwen de ontwikkelaars van de software om niet te updaten naar die versie. Er zit namelijk een fout in de crypt()-functie. Die beveiligingsfunctie wordt gebruikt om platte tekst, zoals wachtwoorden, te versleutelen.

MD5 encryptie

De fout treedt op wanneer gebruikers van PHP tekst middels die functie met een MD5 salted hash willen versleutelen. Met zo'n salted hash worden enkele willekeurige tekens toegevoegd aan de tekst die wordt versleuteld. Zo is het moeilijker om de beveiliging, bijvoorbeeld een wachtwoord, te kraken.

Als een gebruiker de functie in versie 5.3.7 gebruikt, geeft PHP niet de versleutelde versie van het wachtwoord en de willekeurige tekens terug. Door deze bug hoest de software alleen de willekeurige tekens op uit de salt als resultaat van de versleuteling. Op die manier is het onmogelijk om bijvoorbeeld wachtwoorden te versleutelen en die later te gebruiken om in te loggen.

Bugmelding vóór release

“Als crypt() wordt uitgevoerd met een MD5 salt, bestaat de waarde die PHP teruggeeft alleen uit de salt", is te lezen in een bugmelding die vorige week woensdag is aangemaakt. Toch is de nieuwe versie van PHP een dag later gewoon uitgebracht.

De nieuwe versie is van donderdag tot en met maandag gewoon te downloaden geweest, zonder waarschuwing over deze beveiligingsbug. Pas sinds maandag roepen de ontwikkelaars gebruikers op om te wachten met een upgrade.

Fix over paar dagen

De aankomende versie 5.3.8 lost dit encryptieprobleem op. Die fix moet al binnen een paar dagen beschikbaar zijn, meldt The H. De bug treedt niet op wanneer een gebruiker de algoritmes DES of Blowfish gebruikt.

In versie 5.3.7 van PHP zijn een aantal belangrijke beveiligingsproblemen aangepakt. Zo is een bug opgelost waarmee gebruik van de encryptiefunctie kan zorgen voor een buffer overflow. Die kan op zijn beurt kwaadaardige code de gelegenheid geven om uitgevoerd te worden.