Raportu pri la kompromiso de la git-deponejo kaj uzantbazo de la PHP-projekto

La unuaj rezultoj de la analizo de okazaĵo rilata al la identigo de du malicaj komitaĵoj en la Git-deponejo de PHP-projekto kun malantaŭa pordo aktivigita dum sendado de peto kun speciale desegnita Uzanta Agent-kapo estis publikigitaj. Dum studado de la spuroj de la agado de la atakantoj, oni konkludis, ke la servilo git.php.net mem, sur kiu troviĝis la git-deponejo, ne estis hakita, sed la datumbazo kun la kontoj de la projektaj programistoj estis endanĝerigita. .

Eblas, ke la atakantoj povis elŝuti la uzantdatumbazon konservitan en la DBMS sur la servilo master.php.net. La enhavo de master.php.net jam estis migrita al la nova servilo main.php.net instalita de nulo. Ĉiuj programisto-pasvortoj uzataj por aliri la php.net-infrastrukturon estis rekomencigitaj kaj la procezo de ŝanĝado de ili estis komencita per speciala pasvorta reakiro. La deponejoj git.php.net kaj svn.php.net restas nurlegeblaj (disvolviĝo estis movita al GitHub).

Post la malkovro de la unua malica kompromiso farita per la konto de Rasmus Lerdorf, la fondinto de PHP, oni supozis, ke lia konto estis hakita kaj Nikita Popov, unu el la ŝlosilaj PHP-programistoj, nuligis la ŝanĝojn kaj blokis la komitrajtojn por la problema konto. Post iom da tempo, la ekkompreno, ke la blokado ne havas sencon, ĉar sen konfirmo de kommits uzante ciferecan subskribon, ĉiu partoprenanto kun aliro al la deponejo php-src povis fari ŝanĝon anstataŭigante fikcian aŭtoran nomon.

Poste, la atakantoj sendis malican transdonon nome de Nikita mem. Analizante la protokolojn de la gitolita servo, uzata por organizi aliron al deponejoj, oni provis determini la partoprenanton, kiu efektive faris la ŝanĝojn. Malgraŭ la inkludo de kontado por ĉiuj komitaĵoj, estis neniuj enskriboj en la protokolo por du malicaj ŝanĝoj. Evidentiĝis, ke estis kompromiso de la infrastrukturo, ĉar kommits estis aldonitaj rekte, preterirante la konekton per gitolito.

La servilo git.php.net estis senprokraste malŝaltita, kaj la ĉefa deponejo estis transdonita al GitHub. Rapide, oni forgesis, ke por aliri la deponejon, krom SSH uzante gitolite, estis alia enigo, kiu permesis al vi sendi kommitaĵojn per HTTPS. En ĉi tiu kazo, la git-http-backend estis uzata por interagi kun Git, kaj aŭtentigo estis farita per la Apache2 HTTP-servilo, kiu kontrolis akreditaĵojn per aliro al la datumbazo gastigita en la DBMS sur la servilo master.php.net. Ensaluto estis permesita ne nur per ŝlosiloj, sed ankaŭ per regula pasvorto. Analizo de la http-servilaj protokoloj konfirmis, ke malicaj ŝanĝoj estis aldonitaj per HTTPS.

Studante la protokolojn, estis rivelita, ke la atakantoj ne konektis la unuan fojon, sed komence provis trovi la kontnomon, sed post identigi ĝin, ili ensalutis je la unua provo, t.e. ili anticipe sciis la pasvortojn de Rasmus kaj Nikita, sed ne sciis iliajn ensalutojn. Se la atakantoj povis akiri aliron al la DBMS, estas neklare kial ili ne tuj uzis la ĝustan ensaluton specifitan tie. Ĉi tiu diferenco ankoraŭ ne ricevis fidindan klarigon. La hako de master.php.net estas konsiderata la plej verŝajna scenaro, ĉar ĉi tiu servilo uzis tre malnovan kodon kaj malmodernan OS, kiu ne estis ĝisdatigita dum longa tempo kaj havis neflakitajn vundeblecojn.

La agoj prenitaj inkluzivas la reinstalon de la servila medio master.php.net kaj la translokigon de skriptoj al la nova versio de PHP 8. La kodo por labori kun la DBMS estis modifita por uzi parametrajn demandojn, kiuj malfaciligas la anstataŭigon de SQL-kodo. La bcrypt-algoritmo estas uzata por stoki pasvortajn haŝiŝojn en la datumbazo (antaŭe, pasvortoj estis konservitaj per nefidinda MD5 haŝiŝo). Ekzistantaj pasvortoj estas rekomencigitaj kaj oni petas vin agordi novan pasvorton per la formo de reakiro de pasvorto. Ĉar aliro al la deponejoj git.php.net kaj svn.php.net per HTTPS estis ligita al MD5-haŝiŝoj, oni decidis lasi git.php.net kaj svn.php.net en nurlegebla reĝimo, kaj ankaŭ movi ĉiujn. ceteraj al ili PECL-etendaj deponejoj sur GitHub, similaj al la ĉefa PHP-deponejo.

fonto: opennet.ru

Aldoni komenton