NixOS-i jaotises kasutatava nixpkgs pakettide repositooriumi lisamiseks on vĂ€lja pakutud korduvate koostamiste reĆŸiim, mis vĂ”imaldab tuvastada koodis tagaukse kasutuselevĂ”tu juhtumeid, mis meenutavad XZ projekti intsidenti. Esitatud kaitsemeetod vĂ”imaldab avastada versiooni lĂ€htekoodi arhiivides puuduvad muudatused, mis ei ole koodirepositooriumites.
Meetodi pĂ”himĂ”te seisneb selles, et uue rakenduse versiooni lĂ€htekood koostatakse kaks korda â esmalt git-repositooriumist alla laaditud koodist ja seejĂ€rel valmis arhiivides jagatava koodi pĂ”hjal. Kui koostamise tulemusena saadud binaarfailid erinevad, tekib kahtlus varjatud muudatuste olemasolus kas repositooriumis vĂ”i koodiga arhiivifailis.
Tuletame meelde, et XZ projekti puhul ei sisaldanud koodirepositoorium kahtlasi muudatusi. Tagaukse tekitamiseks vajalikud kahjulikud komponendid toodi testkomplekti failide kaudu, mida kasutati XZ dekompilaatori Ă”ige töö kontrollimiseks. Tagauks aktiveerus ĂŒlesehitusprotsessi tasemel ning XZ lĂ€hedakood kattus repositooriumi koodiga. Tagaukse aktiveerimise m4-makrosid Automake tööriistade jaoks sisaldusid ainult valmis koodiarhiivis ja neid ei olnud repositooriumis.
XZ-sse pandi tagauks sisse hĂ€kker, kes saavutas projektis hooldaja staatuse. Tagaukse integreerimine ei mĂ€rgatud kohe, kuna distributsioonid koguvad enamasti pakette, laadides koodi valmis arhiividest, sest koodi allalaadimisel vĂ”ib piirduda ĂŒhe kontrollsummaga arhiivifaili terviklikkuse kontrollimiseks ja kasutada peegleid. Koodi kontrollimisel keskendutakse peamiselt repositooriumi sisu analĂŒĂŒsimisele, seetĂ”ttu ei pruugi arhiivides olevad mitteilmsed erinevused alati kohe vĂ€lja tulla.
Failide arhiivide ja vĂ€ljalĂ”igete, mis vastavad vĂ€ljaannetega, vastavuse kontrollimise lihtsustamiseks, on mĂ”ned avatud projektid, nagu PostgreSQL, kasutusele vĂ”tnud korduva arhiivide genereerimise sĂŒsteemi. Antud juhul pakutakse tööriistu, mis vĂ”imaldavad teil ise oma arhiivi koodeksist koguda, mis on tĂ€ielikult kooskĂ”las allalaadimiseks saadaval oleva valmis arhiiviga. Kui iseseisvalt loodud arhiiv ja pĂ”hiprojektist saadud arhiiv erinevad, tĂ€histab see hoidla vĂ”i standardse arhiivi kompromiteerimist.
Probleem on selles, et selline meetod on praktikas haruldane, samas kui paljud projektid jÀtkavad arhiveerimist lisaartefaktidega, mis puuduvad pÔhihoidlas, nagu man-lehed, dokumentatsioon, nÀited, pakettide loomiseks mÔeldud skriptid ja tÀiendavad koostamisfailid. Selline olukord tekib peamiselt ajaloolistel pÔhjustel ja versioonide loomise protsesside eripÀrade tÔttu. Lihtne vastavuse kontrollimine hoidla sisuga ja arhiiviga ei sobi sel juhul.
VÀljapÀÀsuna on ettepanek koguda vÀljaande binaarfailid nii hoidlast (nÀiteks saab kasutada GitHubis automaatselt genereeritud arhiivi versioonitagi jaoks) kui ka hooldaja ettevalmistatud arhiivist, seejÀrel vÔrreldes tulemusi. Katse korras on sellise kontrolli sisseviimine praegu ettepanek ainult paketi «xz» jaoks. Kui katse osutub edukaks, plaanitakse kontrolli kasutada ka teistes pakettides nixpkgs.
Allikas: opennet.ru
