Li ser lihevkirina depoya git û bingeha bikarhêner a projeya PHP-ê rapor bikin

Encamên yekem ên analîza bûyerek têkildarî nasîna du kiryarên xerab ên di depoya Git a projeyek PHP-ê de ku bi paşvekêşana ku dema şandina daxwazek bi sernavê Agentek Bikarhêner a taybetî hatî sêwirandin ve hatî çalak kirin, hatine weşandin. Di çarçoveya lêkolîna şopên çalakiyên êrîşkeran de, hat encamdan ku servera git.php.net bixwe, ku depoya git li ser bû, nehat hackkirin, lê databasa bi hesabên pêşdebirên projeyê re têk çû. .

Mimkun e ku êrîşkaran databasa bikarhêner a ku di DBMS-ê de hatî hilanîn li ser servera master.php.net dakêşin. Naveroka master.php.net jixwe ji nû ve li servera nû ya main.php.net hatî saz kirin hatine veguheztin. Hemî şîfreyên pêşdebiran ên ku ji bo gihîştina binesaziya php.net hatine bikar anîn ji nû ve hatin vegerandin û pêvajoya guheztina wan bi forma vegerandina şîfreya taybetî hate destpêkirin. Depoyên git.php.net û svn.php.net tenê-xwendewar dimînin (pêşveçûn birin GitHub).

Piştî vedîtina yekem sûcdarkirina xirab a ku bi hesabê Rasmus Lerdorf, damezrînerê PHP-ê hatî çêkirin, hate texmîn kirin ku hesabê wî hatî hack kirin û Nikita Popov, yek ji pêşdebirên sereke yên PHP-ê, guhertin paşde vegerandin û mafên berpirsiyariyê asteng kirin. hesabê pirsgirêk. Piştî demekê, têgihîştin ku astengkirin ne wate ye, ji ber ku bêyî verastkirina pêkanînan bi karanîna îmzeyek dîjîtal, her beşdarek ku bigihîje depoya php-src dikare bi cîhgirtina navek nivîskarê xeyalî guhertinek çêbike.

Dûv re, êrîşkaran li ser navê Nikita bi xwe kiryarek xirab şandin. Bi analîzkirina têketinên karûbarê gitolite, ku ji bo organîzekirina gihîştina depoyan tê bikar anîn, hewl hat dayîn ku beşdarê ku bi rastî guhertin çêkiriye were destnîşankirin. Tevî tevlêbûna hesabê ji bo hemî kiryaran, ji bo du guhertinên xerab di têketinê de tune. Eşkere bû ku lihevhatinek binesaziyê heye, ji ber ku peywir rasterast hatine zêdekirin, girêdana bi gitolite derbas kirin.

Pêşkêşkara git.php.net di cih de hate asteng kirin, û depoya bingehîn ji GitHub re hate veguheztin. Bi lez û bez, hate ji bîr kirin ku ji bo gihîştina depoyê, ji bilî SSH ku gitolite bikar tîne, têketinek din jî hebû ku destûrê dide we ku hûn bi rêya HTTPS-ê peywiran bişînin. Di vê rewşê de, git-http-backend hate bikar anîn da ku bi Git re têkilî daynin, û verastkirin bi karanîna servera Apache2 HTTP-ê hate kirin, ku pêbaweriyan bi gihandina databasa ku di DBMS-ê de li ser servera master.php.net hatî mêvandar kirin verast kir. Têketin ne tenê bi kilîtan, lê bi şîfreyek birêkûpêk jî destûr bû. Analîza têketinên servera http piştrast kir ku guhertinên xerab bi rêya HTTPS-ê hatine zêdekirin.

Di dema lêkolîna têketinê de derket holê ku êrîşkar cara yekem bi hev venebûne, lê di destpêkê de hewl dane navê hesabê bibînin, lê piştî tespîtkirina wê, di hewla yekem de têketinê, yanî. wan şîfreyên Rasmus û Nikita berê dizanibûn, lê têketinên wan nizanin. Ger êrîşkaran karîbûn xwe bigihînin DBMS-ê, ne diyar e çima wan tavilê têketina rast a ku li wir hatî destnîşan kirin bikar neanîn. Vê nakokiyê hêj ravekirinek pêbawer negirtiye. Hackkirina master.php.net senaryoya herî muhtemel tê hesibandin, ji ber ku vê serverê kodek pir kevn û OS-ya kevnare bikar anî, ku ji demek dirêj ve nehat nûve kirin û qelsiyên nepatchkirî hebûn.

Çalakiyên hatin kirin ji nû ve sazkirina hawîrdora servera master.php.net û veguheztina nivîsan bo guhertoya nû ya PHP 8-ê vedihewîne. Koda xebata bi DBMS-ê re hate guheztin da ku pirsên parameterkirî bikar bîne, ku cîgirkirina koda SQL tevlihev dike. Algorîtmaya bcrypt ji bo hilanîna haşeyên şîfreyê di databasê de tê bikar anîn (berê, şîfre bi karanîna haşek MD5-a nebawer dihatin hilanîn). Şîfreyên heyî têne vegerandin û ji we tê xwestin ku hûn şîfreyek nû bi forma vegerandina şîfreyê saz bikin. Ji ber ku gihandina depoyên git.php.net û svn.php.net bi rêya HTTPS ve bi haşên MD5 ve girêdayî bû, biryar hate girtin ku git.php.net û svn.php.net di moda tenê-xwendinê de bihêlin, û her weha hemî biguhezînin. yên mayî ji wan re depoyên dirêjkirina PECL li ser GitHub, mîna depoya sereke ya PHP-ê.

Source: opennet.ru

Add a comment