Poročilo o kompromitaciji git-repozitorija in baze uporabnikov projekta PHP

Objavljeni so prvi rezultati preiskave incidenta, povezanega z odkritjem dveh zlonamernih commitov z backdoorom v git-repozitoriju projekta PHP, ki se aktivirata ob pošiljanju zahteve s posebno oblikovanim naslovom User Agent. Med proučevanjem sledi delovanja napadalcev je bilo ugotovljeno, da neposredno strežnik git.php.net, na katerem je bil gostovan git-repozitorij, ni bil vdreti, vendar je bila kompromitirana baza podatkov z računom razvijalcev projekta.

Ne izključuje se možnost, da so napadalci uspeli prenesti bazo uporabnikov, shranjeno v SDB na strežniku master.php.net. Vsebina master.php.net je že bila premaknjena na nov strežnik main.php.net, ki je bil nastavljen na novo. Vse gesla razvijalcev, ki so bila uporabljena za dostop do infrastrukture php.net, so bila ponastavljena in začel se je postopek njihove zamenjave preko posebnega obrazca za obnovitev gesla. Repozitoriji git.php.net in svn.php.net ostajajo dostopni v načinu samo za branje (razvoj je bil prenesen na GitHub).

Po odkritju prvega zlonamernega commita, izvedenega preko računa Rasmusa Lerdorfa, ustanovitelja PHP, je bilo domnevano, da je bil njegov račun vdreti, in Nikita Popov, eden ključnih razvijalcev PHP, je vrnil spremembe in blokiral pravice commit za problematični račun. Kmalu po tem je prišlo do spoznanja, da blokada ni imela smisla, saj brez overitve commitov s pomočjo digitalnega podpisa lahko vsak udeleženec z dostopom do repozitorija php-src uvede spremembo, tako da vnese lažno ime avtorja.

Nato so napadalci poslali zlonamerni commit v imenu samega Nikite. S pomočjo analize dnevnikov storitve gitolite, uporabljene za organizacijo dostopa do repozitorijev, je bilo podjetništvo za ugotovitev udeleženca, ki je resnično izvedel spremembe. Kljub vklopljenemu beleženju vseh commitov v dnevniku ni bilo zapisov za dve zlonamerni spremembi. Postalo je jasno, da gre za kompromitacijo infrastrukture, saj so bili commit-i dodani neposredno, obidejo povezavo prek gitolite.

Strešno je ukinjen server git.php.net, a primarni repozitorij je prebačen na GitHub. U žurbi se zaboravilo da za pristup repozitoriju osim SSH putem gitolita postoji još jedan ulaz koji omogućava slanje commit-a putem HTTPS-a. U ovom slučaju se za interakciju s Git-om koristio backend git-http-backend, a autentifikacija se vršila putem HTTP servera Apache2, koji je proveravao ovlašćenja pozivajući se na bazu podataka smještenu u SDB-a na strežnikom master.php.net. Pristup je bio moguć ne samo putem ključeva, već i obične lozinke. Analiza logova http servera je potvrdila da su zlonamjerne izmene dodate preko HTTPS-a.

Istraživanjem logova je utvrđeno da su napadači pristupili ne iz prvog pokušaja, već su najpre pokušavali da pogode naziv korisničkog računa, ali su nakon utvrđivanja uspeli iz prvog pokušaja, tj. unapred su znali lozinke Rasmusa i Nikite, ali nisu znali njihove korisničke naloge. Ako su napadači mogli da dobiju pristup SDB-u, nejasno je zašto odmah nisu upotrebili ispravan korisnički račun koji je tamo naveden. Ova nesukladnost još uvek nema verodostojno objašnjenje. Hakerski napad na master.php.net se smatra najverovatnijim scenarijom, pošto je na tom strežnikom koristeći vrlo stari kod i zastarelu operativnu sistem, koji se već dugo nije ažurirao i imao je neispravljene ranjivosti.

Od preduzetih akcija ističe se reinstalacija okruženja servera master.php.net i prebacivanje skripti na novu verziju PHP 8. Kod za rad sa SDB-om je prepravljen kako bi koristio parametarske upite, što otežava umetanje SQL koda. Za čuvanje heševa lozinki u bazi podataka korišćen je algoritam bcrypt (ranije su se lozinke čuvale koristeći nepouzdan MD5 heš). Postojeće lozinke su resetovane i predloženo je da se postavi nova lozinka putem forme za oporavak lozinke. Pošto je pristup repozitorijima git.php.net i svn.php.net putem HTTPS bio povezan sa MD5 heševima, odlučeno je da se git.php.net i svn.php.net ostave u režimu samo za čitanje, kao i da se svi preostali repozitoriji ekstenzija PECL prebacuju na GitHub, slično kao osnovni repozitorij PHP-a.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster