Asil pisanan saka analisis kedadean sing ana hubungane karo deteksi loro komit jahat ing repositori Git project PHP kanthi backdoor, diaktifake nalika panjalukan karo header Agen Panganggo sing dirancang khusus dikirim, wis diterbitake. Sajrone sinau babagan jejak aktivitas panyerang, disimpulake yen server git.php.net dhewe, ing ngendi repositori git, ora disusupi, nanging database karo akun pangembang proyek dikompromi.
Bisa uga panyerang bisa ngundhuh basis data pangguna sing disimpen ing DBMS ing server master.php.net. Isi master.php.net wis ditransfer menyang server main.php.net anyar, diinstal saka awal. Kabeh sandhi pangembang sing digunakake kanggo ngakses infrastruktur php.net wis direset lan proses pangowahan wis diwiwiti liwat formulir pemulihan sandi khusus. Repositori git.php.net lan svn.php.net tetep kasedhiya ing mode mung diwaca (pangembangan wis dipindhah menyang GitHub).
Sawise komit jahat pisanan ditemokake, digawe liwat akun Rasmus Lerdorf, pangadeg PHP, dianggep yen akun dheweke wis disusupi lan Nikita Popov, salah sawijining pangembang PHP utama, wis mbatalake owah-owahan kasebut lan mblokir hak komit kanggo akun masalah kasebut. Sawise sawetara wektu, sadhar yen pamblokiran ora ana gunane, amarga tanpa verifikasi komitmen kanthi tandha digital, peserta sing duwe akses menyang repositori php-src bisa ngganti kanthi ngganti jeneng pangarang fiktif.
Para penyerang banjur ngirim tumindak ala kanggo pihak Nikita dhewe. Kanthi nganalisa log layanan gitolite sing digunakake kanggo ngatur akses menyang repositori, upaya ditindakake kanggo nemtokake peserta sing bener-bener nggawe owah-owahan. Sanajan kalebu akuntansi kanggo kabeh komitmen, ora ana entri ing log kanggo rong owah-owahan angkoro. Dadi cetha yen ana kompromi saka infrastruktur, amarga komit ditambahake langsung, ngliwati sambungan liwat gitolite.
Server git.php.net cepet-cepet dipateni, lan repositori utama dipindhah menyang GitHub. Amarga kesusu, ora digatekake manawa, saliyane akses SSH nggunakake gitolite, ana login liyane kanggo repositori kasebut, sing ngidini commit dikirim liwat HTTPS. Ing kasus iki, git-http-backend digunakake kanggo interaksi karo Git, lan otentikasi ditindakake nggunakake server HTTP Apache2, sing verifikasi ijin kanthi ngakses database sing di-host ing server master.php.net. Mlebu ora mung diidinake nggunakake tombol nanging uga nggunakake sandhi biasa. Analisis log server HTTP ngonfirmasi manawa owah-owahan sing mbebayani ditambahake liwat HTTPS.
Pamriksaan log nuduhake yen para penyerang ora nyambung ing upaya pisanan, nanging luwih dhisik nyoba nebak jeneng akun kasebut. Sawise ngenali, dheweke mlebu log ing upaya pisanan. Iki tegese dheweke ngerti sandhi Rasmus lan Nikita luwih dhisik, nanging ora ngerti jeneng panganggone. Yen para penyerang bisa ngakses DBMS, ora jelas kenapa dheweke ora langsung nggunakake jeneng panganggo sing bener sing ditemtokake ing kana. Perbedaan iki durung bisa diterangake kanthi akurat. Peretasan master.php.net dianggep minangka skenario sing paling mungkin, amarga ing wektu iki. server Kode sing lawas banget lan OS sing wis ketinggalan jaman digunakake, sing wis suwe ora dianyari lan nduweni kerentanan sing durung ditambal.
Tumindak sing ditindakake kalebu nginstal maneh lingkungan server master.php.net lan nransfer skrip menyang PHP versi anyar 8. Kode kanggo nggarap DBMS wis ditulis maneh kanggo nggunakake pitakon parameter, sing nyebabake substitusi kode SQL. Algoritma bcrypt digunakake kanggo nyimpen hash sandi ing DB (sadurunge, sandhi disimpen nggunakake hash MD5 sing ora bisa dipercaya). Tembung sandhi sing wis ana wis direset lan tembung sandhi anyar wis ditawakake kanggo disetel liwat formulir pemulihan tembung sandhi. Wiwit akses menyang repositori git.php.net lan svn.php.net liwat HTTPS disambungake menyang hash MD5, diputusake ninggalake git.php.net lan svn.php.net ing mode mung-maca, lan uga nransfer kabeh repositori ekstensi PECL sing isih ana menyang GitHub, padha karo repositori PHP utama.
Source: opennet.ru
