Aanvallers hebben een achterdeur in de officiële git-repo van PHP weten te plaatsen. Twee commits deden zich voor als kleine aanpassingen, maar zorgen in werkelijkheid voor de mogelijkheid om een remote code execution uit te voeren op websites waar PHP op draait.
De aanval vond op zondag plaats en werd ontdekt door PHP-gebruikers. De makers van de programmeertaal bevestigen inmiddels dat er een aanval plaatsvond. Aanvallers voerden een commit uit op de main repository van PHP waarmee een achterdeur kon worden geopend op geïnfecteerde websites. Die is niet doorgezet naar de release. De commit werd zogenaamd gedaan uit naam van twee hoofdprogrammeurs van PHP, Rasmus Lerdorf en Nikita Popov. De programmeurs zeggen niet te weten hoe dat precies kon gebeuren, maar zeggen dat 'alles erop wijst' dat de Git-server git.php.net is aangevallen, en de commits niet vanuit bijvoorbeeld een geïnfecteerd Git-account zijn gedaan.
De achterdeur maakte het in theorie mogelijk om websites aan te vallen waar PHP op draait. Dat zijn er veel: PHP wordt op 79,1 procent van alle websites gedraaid. De websites zouden dan een PHP-upgrade hebben moeten uitgevoerd nadat de achterdeur werd geplaatst. Aanvallers konden in dat geval op een kwetsbare site een http-request sturen om vervolgens controle over de website te krijgen. Het lek is inmiddels weer gedicht. Aangezien de exploit niet in een productierelease is gekomen is de kans zeer klein dat websites daadwerkelijk getroffen zijn.
Opvallend is dat de exploit alleen kon worden uitgevoerd als een bepaalde http-header een string met de tekst zerodium
bevatte. Zerodium is een bekend bedrijf dat geld betaalt voor het aankopen van exploits. Het is niet duidelijk of er echt een link is met Zerodium, maar het lijkt waarschijnlijker dat het gaat om bijvoorbeeld een beveiligingsonderzoeker die de bedrijfsnaam gebruikt om op te vallen.
Volgens het PHP-team is de bestaande Git-server niet meer veilig. Uit voorzorg is daarom alle broncode naar Github verplaatst. De developers benadrukken dat iedere ontwikkelaar daar verplicht tweestapsverificatie moet aanzetten. Daar waren de repo's al als read-only te zien, maar na het incident zijn ze volgens ontwikkelaar Popov ook canonical geworden.
Update: er is verduidelijkt dat het gaat om een commit die niet in de releasecyclus is gekomen.