‘PHP-inbraak door gelekte gebruikersdatabase’

Abonneer je gratis op Techzine!

De ontwikkelaars van PHP stellen dat de ongewenste commits niet het gevolg waren van een gekraakte git-server. Na nader onderzoek denken de ontwikkelaars nu dat de gebruikersdatabase van master.php.net is uitgelekt.

Dit schrijft PHP-ontwikkelaar Nikita Popov in een update over de inbraak. Nu de ontwikkelaars vermoeden dat er een gebruikersdatabase is uitgelekt, hebben ze besloten om alle wachtwoorden van php.net te resetten. Gebruikers moeten een nieuw wachtwoord aanvragen.

Git-server bleek niet gekraakt

Toen de eerste malafide commit werd gemaakt, besloot Popov om de toegangsrechten tot die specifieke account te blokkeren, op basis van de aanname dat er op die specifieke account was ingebroken. Het is echter mogelijk om commits onder een valse naam door te voeren, dus dit bleek achteraf niet de meest logische oplossing.

Na de tweede malafide commit die onder de naam van Popov zelf werd gemaakt, bleek na verder onderzoek dat de aanvaller helemaal niet gebruikgemaakt had van de gitolite-infrastructuur van PHP. Dit zou duiden op een aangetaste server. Daarop besloot Popov om git.php.net af te sluiten en over de gaan op GitHub als host. Dit was een eenvoudigere stap dan zelf een nieuwe git-server bouwen.

Aanpassingen via https

Echter blijkt nu ook dit niet de oorzaak van de inbraak te zijn. Na het doorspitten van de toegangslogboeken is Popov erachter gekomen dat de aanvaller https gebruikte om de commits door te voeren. Normaal gesproken gaat het doorvoeren van commits via ssh en de gitolite-infrastructuur die de PHP-ontwikkelaars gebruikten, waarbij er gebruikgemaakt wordt van een pubkey. Bij de oudere https-methode bestond de beveiliging alleen uit een wachtwoord.

Dan rest er nog de vraag hoe de aanvaller dan aan de wachtwoorden kwam. Popov schrijft dat de gebruikersdatabase van master.php.net draaide op hele oude code met een oude versie van PHP. Het lijkt hem daarom voor de hand liggen dat de aanvaller gebruik heeft gemaakt van een kwetsbaarheid.

Om te voorkomen dat een dergelijk datalek nogmaals kan plaatsvinden, heeft Popov master.php.net hernoemd naar main.php.net en naar een nieuw systeem gemigreerd dat draait op PHP 8. Verder heeft Popov maatregelen genomen om SQL-injecties tegen te gaan en worden wachtwoorden nu met bcrypt opgeslagen. Bestaande wachtwoorden zijn gereset.

Backdoor in PHP-broncode

Eind vorige maand bleek een onbekende aanvaller twee commits te hebben gedaan naar de git-server van PHP. Met de aanpassingen zou de aanvaller een backdoor krijgen tot alle websites die op de PHP-code draaien. De aanpassingen werden echter gevonden en teruggedraaid voordat ze in productie-omgevingen terechtkwamen.