Mae canlyniadau cychwynnol ymchwiliad i'r digwyddiad yn ymwneud â darganfod dau ymrwymiad maleisus mewn storfa Git prosiect PHP yn cynnwys drws cefn a actifadwyd gan gais gyda phennawd Asiant Defnyddiwr wedi'i grefftio'n arbennig wedi'u cyhoeddi. Daeth dadansoddiad o olion yr ymosodwr i'r casgliad nad oedd y gweinydd git.php.net sy'n cynnal y storfa Git wedi'i hacio, ond bod y gronfa ddata sy'n cynnwys cyfrifon datblygwyr y prosiect wedi'i chyfaddawdu.
Mae'n bosibl bod ymosodwyr wedi gallu lawrlwytho'r gronfa ddata defnyddwyr a oedd wedi'i storio yn system rheoli cronfa ddata gweinydd master.php.net. Mae cynnwys master.php.net eisoes wedi'i fudo i'r gweinydd main.php.net newydd, a osodwyd o'r dechrau. Mae pob cyfrinair datblygwr a ddefnyddiwyd i gael mynediad i seilwaith php.net wedi'i ailosod, ac mae proses ailosod cyfrinair wedi'i chychwyn trwy ffurflen adfer cyfrinair arbennig. Mae ystorfeydd git.php.net a svn.php.net yn parhau i fod yn ddarllen-yn-unig (mae datblygiad wedi'i symud i GitHub).
Ar ôl i'r ymrwymiad maleisus cyntaf gael ei ddarganfod, a wnaed trwy gyfrif Rasmus Lerdorf, sylfaenydd PHP, tybiwyd bod ei gyfrif wedi'i hacio, a bod Nikita Popov, un o brif ddatblygwyr PHP, wedi rholio'r newidiadau yn ôl ac wedi rhwystro'r caniatâd ymrwymo ar gyfer y cyfrif tramgwyddus. Ar ôl peth amser, sylweddolwyd bod y blocio yn ddibwrpas, gan y gallai unrhyw un â mynediad i'r storfa php-src fod wedi gwneud newid gan ddefnyddio awdur ffuglennol heb ddilysu ymrwymiad trwy lofnod digidol.
Yna anfonodd yr ymosodwyr ymrwymiad maleisus yn dynwared Nikita ei hun. Drwy ddadansoddi logiau'r gwasanaeth gitolite, a ddefnyddir i gael mynediad i'r ystorfeydd, gwnaed ymgais i adnabod y defnyddiwr a wnaeth y newidiadau mewn gwirionedd. Er gwaethaf galluogi olrhain ymrwymiadau, ni chanfuwyd unrhyw gofnodion log ar gyfer y ddau newid maleisus. Daeth yn amlwg bod y seilwaith wedi'i beryglu, gan fod yr ymrwymiadau wedi'u hychwanegu'n uniongyrchol, gan osgoi'r cysylltiad gitolite.
Caewyd y gweinydd git.php.net yn gyflym, a symudwyd y brif storfa i GitHub. Yn y frys, anwybyddwyd bod mewngofnodi arall ar gyfer y storfa, yn ogystal â mynediad SSH gan ddefnyddio gitolite, gan ganiatáu anfon ymrwymiadau dros HTTPS. Yn yr achos hwn, defnyddiwyd y git-http-backend ar gyfer rhyngweithio â Git, a pherfformiwyd dilysu gan ddefnyddio'r gweinydd HTTP Apache2, a oedd yn gwirio caniatâd trwy gael mynediad at gronfa ddata a gynhelir ar gweinydd master.php.net. Caniatawyd mewngofnodi nid yn unig gan ddefnyddio allweddi ond hefyd gan ddefnyddio cyfrinair rheolaidd. Cadarnhaodd dadansoddiad o logiau'r gweinydd HTTP fod y newidiadau maleisus wedi'u hychwanegu trwy HTTPS.
Datgelodd archwiliad o'r logiau nad oedd yr ymosodwyr wedi cysylltu ar yr ymgais gyntaf, ond yn gyntaf wedi ceisio dyfalu enw'r cyfrif. Ar ôl ei adnabod, fe wnaethon nhw fewngofnodi ar yr ymgais gyntaf. Mae hyn yn golygu eu bod nhw'n gwybod cyfrineiriau Rasmus a Nikita ymlaen llaw, ond nid eu henwau defnyddwyr. Os oedd yr ymosodwyr yn gallu cael mynediad i'r DBMS, nid yw'n glir pam na wnaethon nhw ddefnyddio'r enw defnyddiwr cywir a nodwyd yno ar unwaith. Nid yw'r anghysondeb hwn wedi'i egluro'n ddibynadwy eto. Ystyrir mai hacio master.php.net yw'r senario mwyaf tebygol, ar hyn o bryd. gweinydd Defnyddiwyd cod hen iawn a system weithredu hen ffasiwn, nad oedd wedi'i ddiweddaru ers amser maith ac oedd â gwendidau heb eu trwsio.
Mae'r camau a gymerwyd yn cynnwys ailosod amgylchedd gweinydd master.php.net a mudo sgriptiau i'r fersiwn newydd o PHP 8. Mae'r cod rheoli cronfa ddata wedi'i ailysgrifennu i ddefnyddio ymholiadau wedi'u paramedru, sy'n cymhlethu chwistrelliad SQL. Defnyddir yr algorithm bcrypt bellach i storio hashiau cyfrinair yn y gronfa ddata (yn flaenorol, roedd cyfrineiriau'n cael eu storio gan ddefnyddio'r hash MD5 gwan). Mae cyfrineiriau presennol wedi'u hailosod, ac anogir defnyddwyr i osod cyfrinair newydd trwy'r ffurflen adfer cyfrinair. Gan fod mynediad i'r ystorfeydd git.php.net a svn.php.net dros HTTPS wedi'i gysylltu â hashiau MD5, penderfynwyd gadael git.php.net a svn.php.net mewn modd darllen yn unig, a bydd yr holl ystorfeydd estyniad PECL sy'n weddill arnynt yn cael eu symud i GitHub, yn debyg i'r brif ystorfa PHP.
Ffynhonnell: opennet.ru
