Incident zamjene commit-a u Linux kernel grani od Kesa Cooka

Linus Torvalds je zahtijevao od administratora kernel.org da odmah blokira račun Kesa Cooka, bivšeg glavnog sistemskog administratora kernel.org i vođu Ubuntu Security Team-a, koji upravlja 14 podsustava povezanih s sigurnošću u jezgru. Konstantin Ryabtsev, koji je odgovoran za infrastrukturni rad kernel.org, izvršio je blokadu. Povod za blokadu bio je pull zahtjev za uključivanje promjena u granu jezgre 6.16, koji se oslanjao na git repozitorij u kojem je izmijenjena informacija o autorstvu nekih commitova.

U Keso održavanom git repozitoriju nalazile su se lažne promjene u kojima su u polju autora i committera bili navedeni "Linus Torvalds", ali Linus ih nije dodavao. Na primjer, pod imenom Linusa u Kesoovoj grani nalazio se commit koji je ponavljao drugi commit u Linusovoj grani, ali s drugačijim SHA1 hashom. Oba commita izgledaju identično, osim informacija o potpisu.

Promjene nisu izgledale kao slučajna pogreška prilikom izvođenja operacije "git rebase", jer su sadržavale netočnu informaciju o autoru commita. Linus Torvalds smatrao je to znakom potencijalno zlonamjerne aktivnosti i pokrenuo je blokadu prihvaćanja bilo kakvih promjena od Kesa, do razjašnjavanja uzroka takvih manipulacija i potvrde da sustav Kesa nije bio kompromitiran.

Kes je odgovorio da ne razumije kako je do takvog nešto moglo doći. Prije toga je imao problema prilikom pokušaja spajanja nekoliko svojih git grana, nakon čega je pokušao riješiti ih operacijom "git rebase", no čini se da to nije pomoglo. Sve se to događalo uslijed kvara SSD diska koji je davao greške tijekom kopiranja. Kes je smatrao da je nakon kvara uspio obnoviti stanje svojih repozitorija, ali očito to nije slučaj. Za obnovu cjelovitosti, Kes namjerava ponovo stvoriti svoje grane iz odvojenih patch-eva. Kao najvjerojatniji uzrok promjene autora, Kes smatra neuspješnu pokušaj obnove repozitorija nakon oštećenja.

Linus nije bio zadovoljan ovakvim objašnjenjem, smatrajući da promjene u povijesti commitova u Kessovom repozitoriju snažno liče na namjerne akcije, a ne na slučajnu grešku. Rebase povijesti promjena s operacijom „git rebase“ mogao bi objasniti promjenu autora commitova, ali Linus ne može shvatiti kako bi se takva operacija „git rebase“ mogla izvesti greškom.

Prepisivanje jednog ili dva commita moglo bi se još uvijek pripisati grešci, ali u Kessovom repozitoriju je prepisano više od šest tisuća merge commitova, od kojih je 330 autorovao Linus, pri čemu ti commitovi nisu došli iz Linusovog git stabla. Izvršene promjene više liče na rad skripte nego na rezultat oštećenja informacija na diskovnom pogonu, jer zahtijevaju zasebno ponovno kreiranje kopije svakog commita.

Kes je uvjerio Linusa da to nije učinio namjerno i da ne bi provodio takve eksperimente bez upozorenja (na primjer, prethodni eksperiment o izazivanju kolizija commitova bio je dogovoren s Linusom). Ove sedmice je izvodio nekoliko ručnih operacija s repozitorijem i sada će pokušati shvatiti što je pošlo po zlu i reproducirati problem. Na primjer, Kes je izvodio operaciju rebase za git stabla for-next/hardening i for-linus/hardening, koristeći, za razliku od prethodnih sličnih transformacija, granu „master“, a ne rc2. Tokom te operacije je vršio izmjene u skriptama za provjeru push zahtjeva.

Dodatak: Kes Cook objavio je još jednu poruku u kojoj je izjavio da je najvjerojatnije problem nastao zbog korištenja alata „git-filter-repo“, koji vrši prepisivanje povijesti commitova u repozitoriju, zajedno s komandom „b4 trailers“, namijenjenoj za dobivanje i primjenu trailera na commitove (na primjer, „Signed-off-by:“).

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster