Google har introducerat projektet OSS Rebuild, som syftar till att identifiera dolda Àndringar i fÀrdiga paket som publiceras i repon. OSS Rebuilds arbete Àr baserat pÄ konceptet reproducibla byggen och handlar om att kontrollera att paketet som finns i repon stÀmmer överens med paketet som erhÄllits genom ombyggnad frÄn den angivna kÀllkoden som motsvarar den angivna paketversionen. Kodverktyget Àr skrivet i Go och distribueras under Apache 2.0-licensen.
För nÀrvarande har OSS Rebuild stöd för verifiering av paket frÄn repon som NPM (JavaScript/TypeScript), PyPI (Python) och Crates.io (Rust). I framtiden planerar man att utöka antalet stödda repon. I praktiken möjliggör verktyget att identifiera attacker av typen "supply chain", dÀr efter att konton har komprometterats eller intriger har intrÀffat i projektet, publiceras en skadlig uppdatering i repon. Vid detta tillfÀlle förblir koden i det ursprungliga repon korrekt, medan skadliga Àndringar endast införs i de fÀrdiga paketen.
Systemet skapar automatiskt ett skript för reproducerbart bygge av det valda paketet, med hjÀlp av heuristik och genom att vÀlja parametrar som möjliggör identiska artefakter i paketet. Om det inte gÄr att reproducera paketet som finns i repon automatiskt, kan man manuellt lÀgga till byggspecifikationen. NÀr paketet har kunnat reproduceras, sparar OSS Rebuilds verktyg en beskrivning av byggprocessen för framtida verifiering av nya versioner av paketet. Dessutom publiceras information för verifiering med hjÀlp av SLSA-ramverket.
Efter att verifieringen av en specifik version av paketet genomförts, genereras certifieringsdata som kan anvÀndas av andra för att bedöma redan verifierade paket. Verifieringen kan genomföras genom att köra kommandoradsverktyget eller genom att jÀmföra hash-vÀrdet som sparats i en separat molnlagring. Infrastruktur för paketverifiering kan sÀttas upp pÄ egen servern. Dessutom kan man fÄ information om verifieringar som utförs av Google för flera tusen paket.
Exempel pÄ olika attackmetoder som OSS Rebuild skulle kunna skydda mot inkluderar att lÀgga till en baksida i XZ, införa skadlig kod i den officiella JavaScript-klienten för kryptovalutan Solana och att införa Àndringar genom changed-files-handlaren.
- I fallet med projektet XZ innehöll koden i repositoryt inga misstÀnkta Àndringar, medan de komponenter som skapade baksidan levererades inuti filer som anvÀndes i testsviten för att kontrollera korrektheten av XZ:s avinstallerare. Baksidan aktiverades pÄ byggsystemnivÄ, och sjÀlva koden för XZ överensstÀmde med koden i repositoryt. Aktiverande baksida m4-makron för Automake-verktyget inkluderades endast i den fÀrdiga arkivfilen med koden och saknades i repositoryt. För att upptÀcka sÄdana attacker i OSS Rebuild tillÀmpas dynamisk analys av paketartefakter, exekveringsvÀgar och misstÀnkta operationer.
- Införandet av skadliga Àndringar i biblioteket @solana/web3.js intrÀffade pÄ grund av en kompromiss av den ansvariga personens konto, med hjÀlp av metoder för social ingenjörskonst och phishing. En ny utgÄva med skadliga Àndringar publicerades i NPM-repositoryt. I projektets Git-repository skapades inte denna utgÄva, och de skadliga Àndringarna fanns endast i det resulterande paketet. Skyddet i detta fall bestÄr av att identifiera kod i paketet som saknas i det primÀra repositoryt.
- Kompromiss av repositoryt för changed-files möjliggjorde en attack pÄ projekt som anvÀnder changed-files för att spÄra förÀndringar av filer och kataloger i en GitHub Actions-baserad kontinuerlig integrationsinfrastruktur. För att skydda mot förÀndringsinförande efter en kompromiss av byggmiljön, tillÀmpas spÄrning av förÀndringar och misstÀnkt aktivitet i standardiserade nedskurna byggmiljöer i OSS Rebuild.
KĂ€lla: opennet.ru
