Report on the compromise of the git repository and the user database of the PHP project

De første resultater af analysen af hændelsen, der involverer opdagelsen af to ondsindede commits med en backdoor i Git-repositoriet for PHP-projektet, er offentliggjort. Det blev konstateret, at serveren git.php.net, hvor git-repositoriet var placeret, ikke var blevet kompromitteret, men at databasen med udviklernes kontooplysninger var blevet kompromitteret, som blev aktiveret ved at sende en anmodning med en specielt formateret User Agent-header.

Det kan ikke udelukkes, at de ondsindede aktører har været i stand til at downloade brugerbasen, der var opbevaret i en database på serveren master.php.net. Indholdet af master.php.net er allerede blevet flyttet til den nye server main.php.net, som er blevet oprettet fra bunden. Alle adgangskoder til udviklerne, der blev anvendt til at få adgang til php.net-infrastrukturen, er blevet nulstillet, og processen med at ændre dem er startet via en speciel formular til nulstilling af adgangskode. Repositorierne git.php.net og svn.php.net er stadig tilgængelige i skrivebeskyttet tilstand (udviklingen er flyttet til GitHub).

Efter opdagelsen af den første ondsindede commit, som blev udført gennem kontoen til Rasmus Lerdorf, grundlæggeren af PHP, blev det antaget, at hans konto var blevet hacket, og Nikita Popov, en af de centrale udviklere af PHP, rullede ændringerne tilbage og blokerede commit-rettighederne for den problematiske konto. Efter noget tid blev det klart, at blokeringen ikke havde nogen mening, da ingen digital signaturverifikation for commits tillod enhver deltager med adgang til php-src-repositoriet at foretage ændringer under et falsk forfatternavn.

Herefter sendte de ondsindede aktører en ondsindet commit i navnet på Nikita selv. Gennem analysen af logfilerne fra gitolite-tjenesten, der anvendes til at organisere adgangen til repositorierne, blev der gjort et forsøg på at identificere den deltager, der faktisk havde foretaget ændringerne. På trods af at alle commits blev logget, var der ingen optegnelser for de to ondsindede ændringer i loggen. Det blev klart, at der var tale om en kompromittering af infrastrukturen, da commits var tilføjet direkte, omgået forbindelsen via gitolite.

Serveret git.php.net blev hurtigt taget ned, og det primære repository blev flyttet til GitHub. I hasten blev det overset, at der udover SSH-adgang via gitolite også var en anden måde at få adgang til repositoryet, som tillod at sende commits via HTTPS. I dette tilfælde blev git-http-backend brugt til interaktion med Git, mens autentificeringen blev udført via HTTP-serveren Apache2, som verificerede godkendelser ved at tilgå en database, der var placeret i DBMS på serveren master.php.net. Der var mulighed for at logge ind ikke kun med nøgler, men også med almindelige adgangskoder. Gennemgangen af HTTP-serverens logfiler bekræftede, at skadelige ændringer blev tilføjet via HTTPS.

Ved gennemgangen af logfilerne blev det afsløret, at angriberne ikke tilsluttede sig første gang; de forsøgte først at finde brugernavnet, men kom derefter ind ved første forsøg, dvs. de vidste på forhånd Rasums og Nikitas adgangskoder, men ikke deres brugernavne. Hvis angriberne kunne få adgang til DBMS, er det uklart, hvorfor de ikke straks brugte det korrekte brugernavn, der var angivet der. Denne inkonsistens har endnu ikke fået en pålidelig forklaring. Hacket af master.php.net betragtes som det mest sandsynlige scenarie, da der på dette serveren der blev brugt en meget gammel kode og et forældet operativsystem, som længe ikke var blevet opdateret og havde ukorrigerede sårbarheder.

Blandt de skridt, der blev taget, bemærkes reinstallationen af miljøet på serveren master.php.net og opdateringen af scripts til den nye version PHP 8. Koden til interaktion med DBMS blev omarbejdet til brug af parameteriserede forespørgsler, hvilket gør det sværere at indsætte SQL-kode. For at gemme adgangskodehash i databasen blev algoritmen bcrypt anvendt (tidligere blev adgangskoder opbevaret ved hjælp af den usikre MD5-hash). Eksisterende adgangskoder blev nulstillet, og der blev tilbudt at oprette en ny adgangskode gennem en formular til nulstilling af adgangskode. Da adgangen til repositories git.php.net og svn.php.net via HTTPS var bundet til MD5-hashene, blev det besluttet at lade git.php.net og svn.php.net være i skrivebeskyttet tilstand og også flytte alle tilbageværende repositorier af PECL-udvidelser til GitHub, svarende til hovedrepositoryet PHP.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster