Raportoni mbi kompromisin e depove git dhe bazës së përdoruesit të projektit PHP

Janë publikuar rezultatet e para të analizës së një incidenti në lidhje me identifikimin e dy kryerjeve me qëllim të keq në depon e Git të një projekti PHP me një derë të pasme të aktivizuar kur dërgoni një kërkesë me një titull të Agjentit të Përdoruesit të krijuar posaçërisht. Gjatë studimit të gjurmëve të aktiviteteve të sulmuesve, u konkludua se vetë serveri git.php.net, në të cilin ishte vendosur depoja e git, nuk ishte hakuar, por baza e të dhënave me llogaritë e zhvilluesve të projektit ishte komprometuar. .

Është e mundur që sulmuesit të kenë mundur të shkarkojnë bazën e të dhënave të përdoruesve të ruajtur në DBMS në serverin master.php.net. Përmbajtja e master.php.net tashmë është migruar në serverin e ri main.php.net të instaluar nga e para. Të gjithë fjalëkalimet e zhvilluesve të përdorur për të hyrë në infrastrukturën php.net u rivendosën dhe procesi i ndryshimit të tyre u nis përmes një formulari të veçantë të rikuperimit të fjalëkalimit. Depot e git.php.net dhe svn.php.net mbeten vetëm për lexim (zhvillimi është zhvendosur në GitHub).

Pas zbulimit të kryerjes së parë me qëllim të keq të bërë përmes llogarisë së Rasmus Lerdorf, themeluesit të PHP, u supozua se llogaria e tij ishte hakuar dhe Nikita Popov, një nga zhvilluesit kryesorë të PHP-së, i ktheu ndryshimet dhe bllokoi të drejtat e kryerjes për llogarinë problematike. Pas ca kohësh, u kuptua se bllokimi nuk kishte kuptim, pasi pa verifikimin e kryerjeve duke përdorur një nënshkrim dixhital, çdo pjesëmarrës me akses në depo php-src mund të bënte një ndryshim duke zëvendësuar një emër autori fiktiv.

Më pas, sulmuesit dërguan një kryerje me qëllim të keq në emër të vetë Nikitës. Duke analizuar regjistrat e shërbimit gitolite, të përdorura për të organizuar aksesin në depo, u bë një përpjekje për të përcaktuar pjesëmarrësin që bëri në të vërtetë ndryshimet. Pavarësisht përfshirjes së kontabilitetit për të gjitha kryerjet, nuk kishte asnjë hyrje në regjistër për dy ndryshime me qëllim të keq. U bë e qartë se kishte një kompromis të infrastrukturës, pasi u shtuan direkt angazhimet, duke anashkaluar lidhjen me gitolite.

Serveri git.php.net u çaktivizua menjëherë dhe depoja kryesore u transferua në GitHub. Me nxitim, u harrua që për të hyrë në depo, përveç SSH duke përdorur gitolite, kishte edhe një hyrje tjetër që ju lejonte të dërgoni angazhime përmes HTTPS. Në këtë rast, git-http-backend u përdor për të bashkëvepruar me Git, dhe vërtetimi u krye duke përdorur serverin Apache2 HTTP, i cili verifikoi kredencialet duke hyrë në bazën e të dhënave të vendosur në DBMS në serverin master.php.net. Hyrja lejohej jo vetëm me çelësa, por edhe me një fjalëkalim të rregullt. Analiza e regjistrave të serverit http konfirmoi se ndryshimet me qëllim të keq u shtuan përmes HTTPS.

Gjatë studimit të regjistrave, u zbulua se sulmuesit nuk u lidhën herën e parë, por fillimisht u përpoqën të gjenin emrin e llogarisë, por pasi e identifikuan atë, ata hynë në përpjekjen e parë, d.m.th. ata i dinin fjalëkalimet e Rasmus dhe Nikitës paraprakisht, por nuk i dinin hyrjet e tyre. Nëse sulmuesit ishin në gjendje të fitonin akses në DBMS, është e paqartë pse ata nuk përdorën menjëherë hyrjen e saktë të specifikuar atje. Kjo mospërputhje nuk ka marrë ende një shpjegim të besueshëm. Hakimi i master.php.net konsiderohet si skenari më i mundshëm, pasi ky server përdorte kod shumë të vjetër dhe një OS të vjetëruar, i cili nuk ishte përditësuar për një kohë të gjatë dhe kishte dobësi të papatchuara.

Veprimet e ndërmarra përfshijnë riinstalimin e mjedisit të serverit master.php.net dhe transferimin e skripteve në versionin e ri të PHP 8. Kodi për të punuar me DBMS është modifikuar për të përdorur pyetje të parametrizuara që ndërlikojnë zëvendësimin e kodit SQL. Algoritmi bcrypt përdoret për të ruajtur hash fjalëkalimet në bazën e të dhënave (më parë, fjalëkalimet ruheshin duke përdorur një hash jo të besueshëm MD5). Fjalëkalimet ekzistuese rivendosen dhe ju kërkohet të vendosni një fjalëkalim të ri përmes formularit të rikuperimit të fjalëkalimit. Meqenëse qasja në magazinat git.php.net dhe svn.php.net nëpërmjet HTTPS ishte e lidhur me hash MD5, u vendos që të liheshin git.php.net dhe svn.php.net në modalitetin vetëm për lexim, dhe gjithashtu të zhvendoseshin të gjitha ato të mbetura për ta, depot e zgjerimit PECL në GitHub, të ngjashme me depo kryesore të PHP.

Burimi: opennet.ru

Shto një koment