Avaldatud on esimesed tulemused PHP projekti git-repo seonduva intsidenti analüüsimisest, kus tuvastati kaks pahatahtlikku commit'i, millel on tagaukse funktsioon, mis aktiveerub spetsiaalse User Agent päise koosseisuga saadetud päringu puhul. Ründajate tegevuse jälgede uurimisel jõuti järeldusele, et otseselt serverit git.php.net, millel git-repo asus, ei olnud häkitud, vaid PHP projekti arendajate kontode andmebaas oli kompromiteeritud.
Ei välistata, et kurjategijad said laadida alla kasutajate andmebaasi, mis oli salvestatud andmebaasi serveris master.php.net. Sisaldus master.php.net on juba kantud üle uuele serverile main.php.net, mis on loodud nullist. Kõik arendajate paroolid, mida kasutati php.net infrastruktuuri juurdepääsuks, on lähtestatud ja algatatud on protsess nende vahetamiseks spetsiaalse parooli taastamise vormi kaudu. Git.php.net ja svn.php.net repod jäävad saadaval ainult lugemisrežiimis (arendus on viidud GitHubi).
Pärast esimest pahatahtlikku commit'i, mis tehti Rasmuse Lerdorfi, PHP asutaja, konto kaudu, tekkis oletus, et tema konto on häkitud ja Nikita Popov, üks PHP võtme arendajatest, käskis muudatused tagasi võtta ja blokeeris probleemse konto commitimisõigused. Mõne aja pärast tuli arusaamine, et blokeerimisest ei olnud mõtet, kuna digi allkirjade kontrollimise puudumisel sai igaüks, kellel oli juurdepääs php-src'ile, teha muudatuse, kasutades vale autorinime.
Seejärel saatsid ründajad pahatahtliku commit'i Nikita nimel. Gitolite teenuse logide analüüsi kaudu, mida kasutati repodele juurdepääsu korraldamiseks, tehti katse määrata osaleja, kes tõeliselt muutuse tegi. Hoolimata kõigi commit'ide jälgimise aktiveerimisest, ei olnud kahel pahatahtlikul muudatusel logis kirjeid. Selgus, et infrastruktuur on kompromiteeritud, kuna commit'id olid lisatud otse, mööda gitolite'i ühendust.
Kiirelt katkestati server git.php.net, ja peamine registri viidi GitHubi. Hädas jäi tähelepanuta, et registrile pääsemiseks oli lisaks SSH-le gitolite'i abil veel üks sissepääs, mis võimaldas commitide saatmist HTTPS-i kaudu. Antud juhul kasutati Gitiga suhtlemiseks backend'i git-http-backend, ning autentimine toimus Apache2 HTTP-serveri kaudu, mis kontrollis õigusi andmebaasi kaudu, mis asus andmebaasi halduses. serveris master.php.net. Sissepääsu lubati mitte ainult võtmepõhiselt, vaid ka tavalise parooliga. HTTP-serveri logide analüüs kinnitas, et pahatahtlikud muudatused lisati HTTPS-i kaudu.
Logide uurimisel selgus, et ründajad ei pääsenud sisse esimesel katsel, vaid proovisid alguses kontonime arvata, kuid pärast õige nime tuvastamist pääsesid nad sisse esimesel katsel, st nad teadsid eelnevalt Rasmu ja Nikita paroole, kuid mitte nende logineid. Kui ründajad suudsid pääseda andmebaasi, siis on arusaamatuks, miks nad kohe ei kasutanud seal määratud õiget logini. Seda vastuolu ei ole seni usaldusväärselt selgitatud. master.php.net'i häkkimist peetakse tõenäolisemaks stsenaariumiks, kuna seal serveris kasutati väga vana koodi ja vananenud operatsioonisüsteemi, mida pole pikka aega uuendatud ja milles on parendamata turvaauke.
Tehtud tegevustest märgitakse serveri master.php.net keskkonna uuesti installimist ja skriptide viimist uuele PHP 8 versioonile. Andmebaasiga töötamiseks muudetud kood on kohandatud kasutama parameetrilisi päringuid, mis raskendavad SQL-koodi sisestamist. Paroolide hashide säilitamiseks andmebaasis kasutatakse bcrypt algoritmi (varem hoiti paroole usaldusväärse MD5 hash'iga). Olemasolevad paroolid on lähtestatud ja pakutud on uut parooli seadmist parooli taastamise vormi kaudu. Kuna pääs registritele git.php.net ja svn.php.net HTTPS-i kaudu oli seotud MD5 hash'idega, otsustati jätta git.php.net ja svn.php.net ainult lugemisrežiimi, ning edastada kõik PECL laiendite registrid, mis seal veel alles on, GitHubi, nagu põhiregister PHP-l.
Allikas: opennet.ru
