Avaldatud on esimesed tulemused juhtumi uurimisest, mis on seotud kahte pahavarakoodiga kaubanduslikku commit'i leidmisega PHP projekti Git-repositooriumis, mis aktiveeritakse spetsiaalselt koostatud User Agent'i päise edastamisel. Rünnakute jälgede uurimise käigus jõuti järeldusele, et server git.php.net, millel hostiti git-repositoorium, ei olnud rünnatud, kuid arendajate konto andmebaas oli kompromiteeritud.
Ei saa välistada, et kurjategijad suudavad laadida alla kasutajate andmebaasi, mis oli salvestatud master.php.net serveri SÜB-sse. master.php.net sisu on juba viidud uuele serverile main.php.net, mis on seadistatud nullist. Kõik arendajate paroolid, mida kasutati php.net infrastruktuuri juurde pääsemiseks, on lähtestatud ja algatatud on nende muutmise protsess spetsiaalse parooli taastamise vormi kaudu. Repositooriumid git.php.net ja svn.php.net jäävad lugemisrežiimi (arendus on viidud GitHubi).
Esimese pahavara commit'i avastamise järel, mille tegi PHP asutaja Rasmus Lerdorf oma kontoga, tehti järeldus, et tema konto on häkitud ning üks peamisi PHP arendajaid Nikita Popov tühistas muudatused ja keelas probleemsest konto commitimisõigused. Mõne aja pärast mõisteti, et keeldumine ei olnud mõistlik, kuna ilma digitaalsete allkirjadega commitide kinnitamiseta sai igaüks, kellel oli juurdepääs php-src repole, teha muudatusi, vale autori nime kasutades.
Siis saatis ründaja pahavara commit'i Nikita enda nimel. Gitolite'i logide analüüsi abil, mida kasutatakse repodele juurdepääsu korraldamiseks, tehti katse tuvastada osalist, kes tõeliselt muudatusi tegi. Hoolimata sellest, et kõik commit'id olid salvestatud, ei olnud kahte pahavara muudatust logis. Selgus, et infrastruktuur on komprromiteeritud, kuna commit'id lisati otse gitolite'i ühenduse ümbersuunamise kaudu.
Server git.php.net was promptly disabled, and the primary repository was migrated to GitHub. In the rush, it was overlooked that, besides SSH using gitolite, there was another access point allowing commits to be sent via HTTPS. In this case, the backend git-http-backend was used for interaction with Git, while authentication was performed through the Apache2 HTTP server, which verified credentials by querying a database hosted in the DBMS on serveril master.php.net. Access was allowed not only via keys but also via a regular password. An analysis of the HTTP server logs confirmed that malicious changes were made through HTTPS.
Logide uurimistööd tehes selgus, et ründajad ei pääsenud süsteemi esimesel katsel, vaid proovides alguses leida konto nime. Pärast õige nime tuvastamist pääsesid nad sisse esimesel katsel, st nad teadsid ette Rasmuse ja Nikita paroolid, kuid mitte nende kasutajanimesid. Kui ründajad suutsid andmebaasi juurde pääseda, siis pole selge, miks nad ei kasutanud kohe seal märgitud õiget kasutajanime. See vastuolu ei ole seni usaldusväärset seletust leidnud. Breach master.php.net näib olevat kõige tõenäolisem stsenaarium, kuna seal kasutati väga vana koodi ja vananenud operatsioonisüsteemi, mis polnud kaua aega uuendatud ja sisaldasid parandamata haavatavusi. serveril Vanad kood ja aegunud operatsioonisüsteem, mida ei ole juba pikka aega uuendatud, olid ära kasutatud.
Tehtud tegevustest on märgitud master.php.net serveri keskkonna uuendamine ja skriptide üleviimine uuele PHP 8 versioonile. Andmebaasi töötluseks on kood ümber kirjutatud, et kasutada parameetritega päringuid, mis keerukad SQL-koodi asendamises. Paroolide räsi salvestamiseks andmebaasis on kasutusele võetud bcrypt algoritm (varem salvestati paroolid usaldamatute MD5 räsidega). Olemasolevad paroolid on lähtestatud ja soovitatud seada uus parool parooli taastamise vormi kaudu. Kuna juurdepääs git.php.net ja svn.php.net repodele HTTPS kaudu oli seotud MD5 räsidega, otsustati jätta git.php.net ja svn.php.net ainult lugemisrežiimi ning viia kõik seal olevad PECL laiendite repod GitHubi, järgides põhiprojekti PHP mudelit.
Allikas: opennet.ru
