Kees Cook, endine kernel.org'i peamine sĂŒsteemiadministraator ja Ubuntu Security Team'i juht, demonstreeris vĂ”imalust luua töötlus, mille lĂŒhendatud identifikaator kattub varasemalt Linuxi tuumas lisatud töötlusega. Eksperiment viidi lĂ€bi tĂ”endina 16-mĂ€rgiste töötluse lĂŒhendatud identifikaatorite kasutuselevĂ”tu mĂ”istlikkusele Linuxi tuumas, mis oli varem arutelul tuuma arendajate postitusloendis, kuid ei olnud Linus Torvaldsi poolt heaks kiidetud.
LĂŒhendatud identifikaatorid luuakse SHA-1 rĂ€sist esimesed 12 mĂ€rki (48 bitti 160 bitist) eemaldades. Kuna tuumas SHA-1 rĂ€siga identifitseeritavate objektide arv on ĂŒletanud 13 miljonit, on 12-mĂ€rgiste prefikside kasutamisel kokkulangemise tĂ”enĂ€osus muutunud ajakĂŒsimuseks. NĂ€iteks on tuumas juba lisatud objekte, mille 11-mĂ€rgised identifikaatorid kattuvad. Samuti mainitakse, et 12-mĂ€rgiste identifikaatorite kattumist on juba registreeritud oktoobris, kuid enne patĆĄi saatmist tuvastas utiliit checkpatch probleemid.
LĂŒhendatud identifikaatoreid kasutatakse lĂŒhikeste linkide avaldamiseks töötlustele ja need on nĂ€idatud ka muudatuste saatmisel 'Fixes' sildiga, viidates töötlusele, mille probleem on saadetud patĆĄis lahendatud (nĂ€iteks 'Fixes: e21d2170f366'). Kokkupuuded, kus mitu erinevat muudatust on seotud ĂŒhe lĂŒhendatud identifikaatoriga, vĂ”ivad rikkuda tööriistu, mis analĂŒĂŒsivad ja kontrollivad muudatusi, arvestades 'Fixes' siltide sisu. NĂ€iteks arvestatakse neid silte check_fixes töötlejas, mida rakendatakse linux-next harus, samuti haavatavuste parandamise ja patĆĄide eluiga jĂ€lgivate analĂŒĂŒsi skriptides.
Linus Torvalds suhtus skepsisega ettepanekusse suurendada lĂŒhikeste identifikaatorite minimaalset suurust, kuna tegelikult on commit'ide arv hoidlas mĂ€rgatavalt vĂ€iksem kui objektide arv (umbes 1/8). TĂ”enĂ€oliselt, kui juhuslikud kattumised tekivad, siis need toimuvad commit'i ja mĂ”ne teise objekti vahel (nĂ€iteks blob'i vĂ”i haru vahel). Tema arvates on lĂŒhikesed identifikaatorid lĂŒhikesed just selleks, et olla arusaadavad, loetavad ja hĂ”lpsasti tsiteeritavad, ning nende suuruse suurendamiseks pole praegu objektiivseid pĂ”hjuseid.
Ăks arendajatest pakkus vĂ€lja, et saab vĂ€hendada suurust, suurendades mĂ€rgatavate bittide arvu, kasutades uut formaati, mis pĂ”hineb Base36 kodeeringul (mĂ€rgid 0-9a-z) asemele kuuekohalistele numbritele. Linuse arvates toob selline muudatus rohkem probleeme kui lahendusi. NĂ€iteks tuleb uue formaadi toetuse lisamiseks olemasolevatesse utiliitidesse ja luua formaadi identifikaator, et eristada vana ja uut formaati.
KĂ€esoleva probleemi demonstreerimiseks, et lĂŒhikeste identifikaatorite probleem ei ole teoreetiline ja seda ei tohi edasi lĂŒkata, koostas Kees Cook muutuse tuumadokumentatsioonis, mille lĂŒhikese identifikaatori (1da177e4c3f4) kokku langes tuuma haru loomise commit'iga 2.6.12-rc2. Kattuvuse leidmiseks kulus 6 tundi arvutuskĂ€iku NVIDIA GeForce RTX 3080 GPU sĂŒsteemis.
Leidmine viidi lĂ€bi lucky-commit tööriista abil â sihitud plaastri tekstile lisati juhuslikke tĂŒhikuid, kuni 12- tĂ€hine SHA-1 eelvorming kattus tuumas juba olemasolevate commit'ide eelvormingutega. Kees arvates on probleemiks mitte niivĂ”rd juhuslikud kattumised, kuivĂ”rd lĂŒhikeste identifikaatorite kuritarvitamise vĂ”imalus kahjulikes eesmĂ€rkides, nĂ€iteks mĂ”ne kontrolli ĂŒletamiseks.
Allikas: opennet.ru
