Rapporter om kompromitteringen af ​​git-lageret og brugerbasen af ​​PHP-projektet

De første resultater af analysen af ​​en hændelse relateret til identifikation af to ondsindede commits i Git-lageret i et PHP-projekt med en bagdør aktiveret ved afsendelse af en anmodning med en specielt designet User Agent-header er blevet offentliggjort. I løbet af undersøgelsen af ​​sporene af angribernes aktiviteter blev det konkluderet, at selve git.php.net-serveren, som git-lageret var placeret på, ikke var hacket, men databasen med projektudviklernes konti var kompromitteret. .

Det er muligt, at angriberne var i stand til at downloade brugerdatabasen gemt i DBMS på master.php.net-serveren. Indholdet af master.php.net er allerede blevet migreret til den nye main.php.net-server installeret fra bunden. Alle udvikleradgangskoder, der blev brugt til at få adgang til php.net-infrastrukturen, blev nulstillet, og processen med at ændre dem blev indledt gennem en særlig formular til gendannelse af adgangskode. Git.php.net- og svn.php.net-lagrene forbliver skrivebeskyttede (udvikling er blevet flyttet til GitHub).

Efter opdagelsen af ​​den første ondsindede commit foretaget gennem kontoen til Rasmus Lerdorf, grundlæggeren af ​​PHP, blev det antaget, at hans konto var blevet hacket, og Nikita Popov, en af ​​de vigtigste PHP-udviklere, rullede ændringerne tilbage og blokerede commit-rettigheder for den problematiske beretning. Efter nogen tid kom den erkendelse, at blokeringen ikke gav mening, da uden verifikation af tilsagn ved hjælp af en digital signatur kunne enhver deltager med adgang til php-src-lageret foretage en ændring ved at erstatte et fiktivt forfatternavn.

Dernæst sendte angriberne en ondsindet forpligtelse på vegne af Nikita selv. Ved at analysere logfilerne for gitolite-tjenesten, der blev brugt til at organisere adgang til arkiver, blev der gjort et forsøg på at bestemme deltageren, der rent faktisk har foretaget ændringerne. På trods af medtagelsen af ​​regnskab for alle commits, var der ingen poster i loggen for to ondsindede ændringer. Det blev klart, at der var et kompromis med infrastrukturen, da commits blev tilføjet direkte, og omgå forbindelsen via gitolite.

Git.php.net-serveren blev øjeblikkeligt deaktiveret, og det primære lager blev overført til GitHub. I en fart blev det glemt, at for at få adgang til depotet, udover SSH ved hjælp af gitolit, var der et andet input, der tillod dig at sende commits via HTTPS. I dette tilfælde blev git-http-backend brugt til at interagere med Git, og godkendelse blev udført ved hjælp af Apache2 HTTP-serveren, som bekræftede legitimationsoplysninger ved at få adgang til databasen hostet i DBMS på master.php.net-serveren. Login var ikke kun tilladt med nøgler, men også med en almindelig adgangskode. Analyse af http-serverlogfilerne bekræftede, at ondsindede ændringer blev tilføjet via HTTPS.

Ved undersøgelse af logfilerne kom det frem, at angriberne ikke oprettede forbindelse første gang, men i første omgang forsøgte at finde kontonavnet, men efter at have identificeret det, loggede de ind i første forsøg, dvs. de kendte Rasmus og Nikitas kodeord i forvejen, men kendte ikke deres logins. Hvis angriberne var i stand til at få adgang til DBMS, er det uklart, hvorfor de ikke umiddelbart brugte det korrekte login, der er angivet der. Denne uoverensstemmelse har endnu ikke fået en pålidelig forklaring. Hacket af master.php.net betragtes som det mest sandsynlige scenarie, da denne server brugte meget gammel kode og et forældet OS, som ikke var blevet opdateret i lang tid og havde uoprettede sårbarheder.

De udførte handlinger omfatter geninstallation af master.php.net-servermiljøet og overførsel af scripts til den nye version af PHP 8. Koden til at arbejde med DBMS er blevet ændret til at bruge parametriserede forespørgsler, der komplicerer substitution af SQL-kode. bcrypt-algoritmen bruges til at gemme kodeords-hash i databasen (tidligere blev adgangskoder gemt ved hjælp af en upålidelig MD5-hash). Eksisterende adgangskoder nulstilles, og du bliver bedt om at angive en ny adgangskode via formularen til gendannelse af adgangskode. Da adgang til git.php.net- og svn.php.net-lagrene via HTTPS var bundet til MD5-hashes, blev det besluttet at lade git.php.net og svn.php.net være i skrivebeskyttet tilstand, og også flytte alle de resterende til dem PECL-udvidelseslagre på GitHub, svarende til PHP-hovedlageret.

Kilde: opennet.ru

Tilføj en kommentar