Truffle Security avaldas rĂŒnnakuskeemid mitmete tĂŒĂŒpiliste GitHubi repositooriumide töötlusmeetodite kohta, mis vĂ”imaldavad andmeid vĂ€lja tĂ”mmata kaugrepositooriumitest, millel on avalikud forkid vĂ”i millel on mĂ”ni forkk loodud.
JuhtimisevĂ”imekus kommitide hĂ€sĆĄide kaudu kĂ”igis seotud repositooriumide forkides tuleneb sellest, et GitHub salvestab kĂ”iki pĂ”hirepositooriumi ja forkide objekte koos, et optimeerida ja vĂ€ltida dubleerimist, eraldades vaid loogiliselt kommitide kuuluvuse. See salvestamisviis vĂ”imaldab vaadata mis tahes kommiti mis tahes forkis pĂ”hirepositooriumis, kui sellele on selgelt nĂ€idatud hĂ€sĆĄ URL-is. NĂ€iteks vĂ”ib kasutaja luua fork repositooriumist "/torvalds/linux" ja lisada sinna igasugust koodi, mille jĂ€rel see kood muutub saadavaks otse hĂ€sĆĄ-linkina repositooriumis "/torvalds/linux". Repositooriumi kustutamise korral jÀÀvad andmed kaugrepositooriumist kergesti ligipÀÀsetavaks kommiti hĂ€sĆĄi kaudu, kui vĂ€hemalt ĂŒks avalik fork on olemas.
Pakutakse kolme stsenaariumi, mis esindavad turvaohtu:
- Esimene stsenaarium kĂ€sitleb olukordi, kus arendajad loovad avalike repode koopiad, teevad neis muudatusi, katsetavad ja seejĂ€rel kustutavad. Peale koodi lekke, mis pole mĂ”eldud avaldamiseks, kujutab ohtu olukord, kus katsetades lisatakse nĂ€idifailide koodi töötavaid API ligipÀÀsuvĂ”tmeid. Sel juhul vĂ”ib rĂŒndaja saavutada ligipÀÀsu eemaldatud forki kaudu pĂ”hirepositooriumi suunatud commit hash'i jĂ€rgi. NĂ€iteks suudeti pakutud viisil teadlastel mÀÀrata 30 töötavat API ligipÀÀsuvĂ”tit, uurides kolme masinĂ”ppega seotud repot, millel on suur hulk forke.
- Teine stsenaarium kĂ€sitleb andmete ligipÀÀsu saamise vĂ”imalust pĂ€rast esmase hoidla kustutamist, kui selle hoidla kohta on loodud harud. NĂ€iteks tuuakse juhtum, kus ĂŒhe ettevĂ”tte avalikus hoidlus avaldati juhuslikult ĂŒhe töötaja suletud vĂ”tmed, mis andsid tĂ€ieliku ligipÀÀsu kĂ”igile selle ettevĂ”tte hoidlatele GitHubis. EttevĂ”te kustutas hoidla, mille kaudu andmed lekkisid, kuid vĂ”tmed jĂ€id endiselt kergesti kĂ€tte saadavaks, kui neid otsiti commit'i hash'i abil harudest.

- Kolmas stsenaarium on seotud projektide arendamise mudeliga, kus pĂ”hiversioon areneb avalikus hoidlas ja laiendatud omadustega versioon privaatsetes. Kui ettevĂ”te algselt arendas projekti privaatsetes hoidlates, kuid seejĂ€rel avas koodi ja tĂ”i projekti avalikku hoidlasse, jĂ€tkates siiski suletud sise- vĂ”i laiendatud versiooni arendamist privaatse fork'iga, on vĂ”imalik juurde pÀÀseda privaatse forki lisatud muudatustele commit'i hash'ide kaudu avaliku hoidla kaudu. Samas on juurdepÀÀs vĂ”imalik ainult nendele muudatustele, mis lisati privaatsele fork'ile enne pĂ”hihoidla ĂŒleviimist avalikuks (privaatsete ja avalike hoidlate salvestised on eraldi, kuid kui kaks hoidlat olid privaatset, salvestati commit'id koos, seega jĂ€id need hoidlasse pĂ€rast selle ĂŒleviimist avalikuks).

Trikk, mis vĂ”imaldab ligipÀÀsu reposti forkide commit'idele peamiste reposte kaudu, on tuntud juba aastaid ja seda kasutatakse perioodiliselt erinevate nali ja arendajate petmiseks (nĂ€iteks naljamehed loovad sageli selliselt mulje, et nad paigutavad Linuxi tuuma reposti backdoore GitHubis). Nende naljade vastu vĂ”itlemiseks on GitHub lisanud hoiatuse, et taotletud commit ei kuulu kĂ€esoleva reposti harudesse ja vĂ”ib kuuluda forkile. Samuti peeti forkide kaudu commit'idele juurdepÀÀsu vĂ”imalust sĂŒĂŒtuks, kuna andmete saamiseks eemaldates ja privaatsetes forkides on vajalik commit'i hash'i teadmine.
Kommiidi hÀÀlekoode, mis pĂ”hinevad SHA-1 algoritmil ja sisaldavad 32 sĂŒmbolit, on keeruline leida, kuid oletati, et see pole vajalik. GitHub toetab lĂŒhendatud kommiidi tuvastamist, mis vĂ”imaldab viidatud muudatusi adresseerida kommiidi hÀÀlekoode esimestelt sĂŒmbolitelt, kui puuduvad kattumised teiste kommiitidega. LĂŒhendatud hÀÀlekoode adresseerimiseks on minimaalne sĂŒmbolite arv 4, mis vastab 65 tuhande kombinatsiooni (16^4) genereerimisele. Samas ei pruugi genereerimine olla vajalik, kuna GitHub API vĂ”imaldab ĂŒhendada töötlejad sĂŒndmuste tabamiseks, mida kasutavad kolmandad osalised, kellel on arhiveeritud tĂ€ielik logi kĂ”igist toimingutest, kus kommiid hÀÀlekoodid jÀÀvad alles ka pĂ€rast hoidlate kustutamist.
Allikas: opennet.ru


