Rapporter om kompromittering av git-depotet og brukerbasen til PHP-prosjektet

De første resultatene av analysen av en hendelse relatert til identifisering av to ondsinnede forpliktelser i Git-depotet til et PHP-prosjekt med en bakdør aktivert når du sender en forespørsel med en spesialdesignet User Agent-header, er publisert. I løpet av å studere sporene etter angripernes aktiviteter, ble det konkludert med at selve git.php.net-serveren, som git-depotet var plassert på, ikke ble hacket, men databasen med kontoene til prosjektutviklerne ble kompromittert. .

Det er mulig at angriperne var i stand til å laste ned brukerdatabasen lagret i DBMS på master.php.net-serveren. Innholdet i master.php.net har allerede blitt migrert til den nye main.php.net-serveren installert fra bunnen av. Alle utviklerpassord som ble brukt for å få tilgang til php.net-infrastrukturen ble tilbakestilt og prosessen med å endre dem ble startet gjennom et spesielt passordgjenopprettingsskjema. Git.php.net- og svn.php.net-lagrene forblir skrivebeskyttede (utviklingen har blitt flyttet til GitHub).

Etter oppdagelsen av den første ondsinnede forpliktelsen gjort gjennom kontoen til Rasmus Lerdorf, grunnleggeren av PHP, ble det antatt at kontoen hans var blitt hacket og Nikita Popov, en av de viktigste PHP-utviklerne, rullet tilbake endringene og blokkerte forpliktelsesrettigheter for den problematiske kontoen. Etter en tid kom erkjennelsen at blokkeringen ikke ga mening, siden uten verifisering av forpliktelser ved hjelp av en digital signatur, kunne enhver deltaker med tilgang til php-src-depotet gjøre en endring ved å erstatte et fiktivt forfatternavn.

Deretter sendte angriperne en ondsinnet forpliktelse på vegne av Nikita selv. Ved å analysere loggene til gitolite-tjenesten, som brukes til å organisere tilgang til depoter, ble det forsøkt å finne ut hvem som faktisk gjorde endringene. Til tross for inkludering av regnskap for alle forpliktelser, var det ingen oppføringer i loggen for to ondsinnede endringer. Det ble klart at det var et kompromiss med infrastrukturen, siden forpliktelser ble lagt til direkte, og omgå forbindelsen via gitolitt.

Git.php.net-serveren ble umiddelbart deaktivert, og det primære depotet ble overført til GitHub. I en fart ble det glemt at for å få tilgang til depotet, i tillegg til at SSH bruker gitolitt, var det en annen inngang som tillot deg å sende commits via HTTPS. I dette tilfellet ble git-http-backend brukt til å samhandle med Git, og autentisering ble utført ved hjelp av Apache2 HTTP-serveren, som bekreftet legitimasjon ved å få tilgang til databasen som er vert i DBMS på master.php.net-serveren. Innlogging var ikke bare tillatt med nøkler, men også med et vanlig passord. Analyse av http-serverloggene bekreftet at ondsinnede endringer ble lagt til via HTTPS.

Ved studering av loggene ble det avslørt at angriperne ikke koblet seg på første gang, men i utgangspunktet forsøkte å finne kontonavnet, men etter å ha identifisert det, logget de inn på første forsøk, d.v.s. de kjente Rasmus og Nikitas passord på forhånd, men kjente ikke til påloggingene deres. Hvis angriperne var i stand til å få tilgang til DBMS, er det uklart hvorfor de ikke umiddelbart brukte riktig pålogging spesifisert der. Dette avviket har ennå ikke fått en pålitelig forklaring. Hacket til master.php.net regnes som det mest sannsynlige scenariet, siden denne serveren brukte svært gammel kode og et utdatert OS, som ikke hadde blitt oppdatert på lenge og hadde uopprettede sårbarheter.

Handlingene som er utført inkluderer reinstallering av master.php.net-servermiljøet og overføring av skript til den nye versjonen av PHP 8. Koden for arbeid med DBMS er modifisert for å bruke parameteriserte spørringer som kompliserer erstatning av SQL-kode. Bcrypt-algoritmen brukes til å lagre passord-hash i databasen (tidligere ble passord lagret ved hjelp av en upålitelig MD5-hash). Eksisterende passord tilbakestilles og du blir bedt om å angi et nytt passord via passordgjenopprettingsskjemaet. Siden tilgang til git.php.net- og svn.php.net-repositoriene via HTTPS var knyttet til MD5-hasher, ble det besluttet å la git.php.net og svn.php.net være i skrivebeskyttet modus, og også flytte alle de gjenværende til dem PECL-utvidelsesdepoter på GitHub, likt hovedlageret for PHP.

Kilde: opennet.ru

Legg til en kommentar