Google esitas OSS Rebuild projekti, mille eesmärk on tuvastada peidetud muudatusi valmis paketides, mida avaldatakse hoidlates. OSS Rebuildi töö põhineb külluslike kogumite kontseptsioonil ja seisneb vastavuse kontrollimises hoidlas olevate pakettide ning referentsallikast, mis vastab paketi deklareeritud versioonile, ümberkogumise teel saadud pakettide vahel. Tööriista kood on kirjutatud Go keeles ja levitatakse Apache 2.0 litsentsi alusel.
Praeguseks on OSS Rebuildis rakendatud toimetamise tugi, et kontrollida pakette NPM (JavaScript/TypeScript), PyPI (Python) ja Crates.io (Rust) hoidlatest. Tulevikus plaanitakse toetatavate hoidlate arvu laiendada. Praktikas võimaldab tööriist tuvastada „supply chain“ tüüpi rünnakute variandid, kus pärast toetavate kontode kompromiteerimist või projekti sees toimunud diversiooni avaldatakse hoidlas pahatahtlik uuendus. Samuti jääb põhiprojekti allika kood korrektseks, pahatahtlikud muudatused viiakse ellu ainult valmis pakettides.
Süsteem koostab nii palju kui võimalik automaatselt stsenaariumi valitud paketi reproduktiivseks koostamiseks, kasutades heuristikameetodeid ja valides parameetreid, mis aitavad saavutada pakettides tarnitud artefaktide identiteeti. Kui hoidlas olevat paketti ei õnnestu automaatselt replikeerida, on võimalik käsitsi lisada koostamisspetsifikatsioon. Pärast paketi reproduktsiooni säilitab OSS Rebuild tööriist koostamise protsessi kirjelduse järgnevate paketi uusversioonide kontrollimiseks. Tooted avaldatakse täiendavaks verifitseerimiseks SLSA raamistiku abil.
Konkreetse paketi versiooni kontrollimise järel genereeritakse tunnustamisandmed, mida saavad teised kasutada juba kontrollitud pakettide hindamiseks. Kontrollimist saab teha kas käsurea utiliidi kaudu või eraldi pilvehotis salvestatud hash'i kontrollimisega. Pakettide kontrollimise infrastruktuuri saab üles seada enda serveris. Samuti on võimalik kasutada teavet Google’is läbi viidud kontrollide kohta, mis on tehtud tuhandete pakettide jaoks.
OSS Rebuild'i kaitseks erinevate rünnakute eest toovad näiteid, nagu tagavaravõtme lisamine XZ-sse, pahavara koodi sisestamine ametlikku JavaScripti kliendisse krüptovaluutale Solana ja muudatuste sisestamine through Actions'i muudetud failide töötleja:
- XZ projekti puhul ei sisaldanud kood repositooriumis kahtlusi, kuid tagavaravõtme moodustavad pahatahtlikud komponendid tarniti failides, mida kasutati XZ dekompressori korrektsuse testimiseks. Tagavaravõti aktiveeriti ehitustasandi tasemel, samas kui XZ lähtekood kattus repositooriumis oleva koodiga. Tagavaravõtit aktiveerivad m4-makrod Automake'i tööriistakomplektis oli lisatud ainult valmis arhiivi koos koodiga ning puudusid repositooriumis. Selliste rünnakute tuvastamiseks kasutab OSS Rebuild pakettide dünaamilist analüüsi, täideviimise teid ja kahtlasi toiminguid.
- Pahatahtlike muudatuste sisestamine @solana/web3.js teeki toimus seoses hooldaja konto kompromiteerimisega, kasutades sotsiaalsete petmisvõtete ja kalapüügi meetodeid. NPM repositooriumis avaldati uus versioon, mis sisaldas pahatahtlikke muudatusi. Projekti Git-repositooriumis seda versiooni ei loodud ja pahatahtlikud muudatused olid kohal ainult tulemuseks olevas paketis. Kaitse käesoleval juhul seisneb koodi tuvastamises paketis, mis puudub peamisest repositooriumist.
- Muudetud failide töötleja repositooriumi kompromiteerimine võimaldas rünnakut projektidele, mis kasutavad muudetud faile failide ja kaustade muudatuste jälgimiseks GitHub Actions'i pideva integreerimise infrastruktuuris. Kaitseks muudatuste sisestamise eest pärast ehituskeskkonna kompromiteerimist rakendab OSS Rebuild muutuste jälgimist ja kahtlast tegevust standardiseeritud kärbitud ehituskeskkondades.
Allikas: opennet.ru
