Informeu sobre el compromís del repositori git i la base d'usuaris del projecte PHP

S'han publicat els primers resultats de l'anàlisi d'una incidència relacionada amb la identificació de dos commits maliciosos al repositori Git d'un projecte PHP amb una porta posterior activada quan s'envia una sol·licitud amb una capçalera d'Agent d'usuari especialment dissenyada. En el curs d'estudiar els rastres de les activitats dels atacants, es va concloure que el propi servidor git.php.net, on es trobava el repositori git, no va ser piratejat, sinó que es va comprometre la base de dades amb els comptes dels desenvolupadors del projecte. .

És possible que els atacants hagin pogut descarregar la base de dades d'usuaris emmagatzemada al SGBD al servidor master.php.net. El contingut de master.php.net ja s'ha migrat al nou servidor main.php.net instal·lat des de zero. Es van restablir totes les contrasenyes de desenvolupadors utilitzades per accedir a la infraestructura php.net i es va iniciar el procés de canvi mitjançant un formulari especial de recuperació de contrasenyes. Els repositoris git.php.net i svn.php.net romanen de només lectura (el desenvolupament s'ha mogut a GitHub).

Després del descobriment de la primera confirmació maliciosa feta a través del compte de Rasmus Lerdorf, el fundador de PHP, es va suposar que el seu compte havia estat piratejat i Nikita Popov, un dels desenvolupadors clau de PHP, va anul·lar els canvis i va bloquejar els drets de commit per a el compte problemàtic. Després d'un temps, es va adonar que el bloqueig no tenia sentit, ja que sense la verificació de les confirmacions mitjançant una signatura digital, qualsevol participant amb accés al repositori php-src podria fer un canvi substituint un nom d'autor fictici.

A continuació, els atacants van enviar un commit maliciós en nom del mateix Nikita. Mitjançant l'anàlisi dels registres del servei gitolite, utilitzat per organitzar l'accés als repositoris, es va intentar determinar el participant que realment va fer els canvis. Malgrat la inclusió de la comptabilitat per a totes les confirmacions, no hi havia entrades al registre per a dos canvis maliciosos. Va quedar clar que hi havia un compromís de la infraestructura, ja que s'hi van afegir commits directament, obviant la connexió via gitolite.

El servidor git.php.net es va tancar ràpidament i el repositori principal es va traslladar a GitHub. Amb les presses, es va passar per alt que, a més de l'accés SSH mitjançant gitolite, hi havia un altre inici de sessió per al repositori, que permetia enviar commits per HTTPS. En aquest cas, es va utilitzar el git-http-backend per a la interacció amb Git i l'autenticació es va realitzar mitjançant el servidor HTTP Apache2, que verificava els permisos accedint a una base de dades allotjada a servidor master.php.net. L'inici de sessió no només es va permetre mitjançant claus, sinó també mitjançant una contrasenya normal. L'anàlisi dels registres del servidor HTTP va confirmar que els canvis maliciosos es van afegir mitjançant HTTPS.

Un examen dels registres va revelar que els atacants no es van connectar al primer intent, sinó que primer van intentar endevinar el nom del compte. Després d'identificar-lo, van iniciar sessió al primer intent. Això significa que coneixien les contrasenyes de Rasmus i Nikita per endavant, però no els seus noms d'usuari. Si els atacants van poder accedir al SGBD, no està clar per què no van utilitzar immediatament el nom d'usuari correcte especificat allà. Aquesta discrepància encara no s'ha explicat de manera fiable. El pirateig de master.php.net es considera l'escenari més probable, ja que en aquest moment. servidor Es va utilitzar codi molt antic i un sistema operatiu obsolet, que no s'havia actualitzat durant molt de temps i tenia vulnerabilitats sense pedaços.

Les accions realitzades inclouen la reinstal·lació de l'entorn del servidor master.php.net i la transferència d'scripts a la nova versió de PHP 8. S'ha modificat el codi per treballar amb el SGBD per utilitzar consultes parametritzades que dificulten la substitució del codi SQL. L'algoritme bcrypt s'utilitza per emmagatzemar hash de contrasenyes a la base de dades (anteriorment, les contrasenyes s'emmagatzemaven amb un hash MD5 poc fiable). Les contrasenyes existents es restableixen i se us demana que establiu una nova contrasenya mitjançant el formulari de recuperació de contrasenya. Atès que l'accés als repositoris git.php.net i svn.php.net mitjançant HTTPS estava lligat a hash MD5, es va decidir deixar git.php.net i svn.php.net en mode només de lectura i també moure-ho tot. els restants als dipòsits d'extensió PECL a GitHub, similar al dipòsit principal de PHP.

Font: opennet.ru

Compreu allotjament fiable per a llocs amb protecció DDoS, servidors VPS VDS 🔥 Compra allotjament web fiable amb protecció DDoS, servidors VPS VDS | ProHoster