Rapportu nantu à u cumprumissu di u repository git è a basa d'utilizatori di u prughjettu PHP

I primi risultati di l'analisi di un incidente in relazione à l'identificazione di dui commits maliziusi in u repository Git di un prughjettu PHP cù una backdoor attivata quandu invià una dumanda cù un capu d'Agente d'Usuariu apposta sò stati publicati. In u cursu di studià e tracce di l'attività di l'attaccanti, hè statu cunclusu chì u servitore git.php.net stessu, nantu à quale u repositariu git era situatu, ùn era micca pirate, ma a basa di dati cù i cunti di i sviluppatori di u prughjettu hè stata cumprumessa. .

Hè pussibule chì l'attaccanti puderanu scaricà a basa di dati d'utilizatori guardata in u DBMS in u servitore master.php.net. U cuntenutu di master.php.net hè digià migratu à u novu servitore main.php.net installatu da zero. Tutti i password di sviluppatore utilizati per accede à l'infrastruttura php.net sò stati resettati è u prucessu di cambià hè statu iniziatu per mezu di una forma speciale di ricuperazione di password. I repositori git.php.net è svn.php.net restanu solu di lettura (u sviluppu hè statu spustatu in GitHub).

Dopu à a scuperta di u primu impegnu maliziusu fattu per mezu di u contu di Rasmus Lerdorf, u fundatore di PHP, si supponeva chì u so contu era statu pirateatu è Nikita Popov, unu di i sviluppatori chjave PHP, hà ritruvatu i cambiamenti è bluccatu i diritti di cummissione per u contu problematicu. Dopu qualchì tempu, a realizazione hè ghjunta chì u bluccatu ùn hà micca sensu, postu chì senza verificazione di commits cù una firma digitale, ogni participante cù accessu à u repository php-src puderia fà un cambiamentu sustituendu un nome d'autore fittizio.

Dopu, l'attaccanti anu mandatu un commit maliziusu in nome di Nikita stessu. Analizendu i logs di u serviziu di gitolite, utilizatu per urganizà l'accessu à i repositori, un tentativu hè statu fattu per determinà u participante chì hà fattu i cambiamenti. Malgradu l'inclusione di contabilità per tutti l'impegni, ùn ci era micca entrate in u logu per dui cambiamenti maliziusi. Hè diventatu chjaru chì ci era un cumprumissu di l'infrastruttura, postu chì i commits sò stati aghjuntu direttamente, bypassing the connection via gitolite.

U servitore git.php.net hè statu prontamente disattivatu, è u repositoriu primariu hè statu trasferitu à GitHub. In una fretta, era scurdatu chì per accede à u repository, in più di SSH cù gitolite, ci era un altru input chì vi permette di mandà commits via HTTPS. In questu casu, u git-http-backend hè stata utilizata per interagisce cù Git, è l'autentificazione hè stata realizata cù u servitore HTTP Apache2, chì verificava i credenziali accedendu à a basa di dati ospitata in u DBMS in u servitore master.php.net. U login era permessu micca solu cù e chjave, ma ancu cù una password regulare. L'analisi di i logs di u servitore http hà cunfirmatu chì i cambiamenti maliziusi sò stati aghjuntu via HTTPS.

Quandu studià i logs, hè statu revelatu chì l'attaccanti ùn anu micca cunnessu a prima volta, ma inizialmente hà pruvatu à truvà u nome di u contu, ma dopu l'identificà, anu cunnessu in u primu tentativu, i.e. cunniscianu i password di Rasmus è Nikita in anticipu, ma ùn cunnosci micca i so logins. Se l'attaccanti anu pussutu acquistà l'accessu à u DBMS, ùn hè micca chjaru perchè ùn anu micca utilizatu immediatamente u login currettu specificatu quì. Sta discrepanza ùn hà ancu ricevutu una spiegazione affidabile. U pirate di master.php.net hè cunsideratu u scenariu più prubabile, postu chì stu servitore hà utilizatu codice assai vechju è un OS obsoletu, chì ùn era micca aghjurnatu per un bellu pezzu è avia vulnerabilità senza parche.

L'azzioni pigliati includenu a reinstallazione di l'ambienti di u servitore master.php.net è u trasferimentu di scripts à a nova versione di PHP 8. U codice per travaglià cù u DBMS hè statu mudificatu per utilizà queries parametrizzate chì complicanu a sustituzzioni di u codice SQL. L'algoritmu bcrypt hè utilizatu per almacenà l'hash di password in a basa di dati (in precedenza, i password eranu almacenati cù un hash MD5 inaffidabile). I password esistenti sò resettati è vi sò invitati à stabilisce una nova password attraversu a forma di ricuperazione di password. Siccomu l'accessu à i repositori git.php.net è svn.php.net via HTTPS hè stata ligata à l'hash MD5, hè statu decisu di lascià git.php.net è svn.php.net in modu di sola lettura, è ancu spustà tutti. i restanti à elli i repositori di estensione PECL in GitHub, simili à u repositoriu PHP principale.

Source: opennet.ru

Add a comment