Google har introducerat ramverket SLSA (Supply-chain Levels for Software Artifacts), som sammanfattar den befintliga erfarenheten av att skydda utvecklingsinfrastruktur frÄn attacker som sker under kodskrivning, testning, byggande och distribution av produkten.
Utvecklingsprocesser blir allt mer komplexa och beroende av externa verktyg, vilket skapar gynnsamma förutsÀttningar för attacker kopplade till kompromettering av sjÀlva utvecklingsprocessen (supply chain-attacker, som vanligtvis syftar till att införa skadliga Àndringar under kodskrivning, byta ut distribuerade komponenter och beroenden).
Ramverket omfattar 8 typer av attacker relaterade till hot om införande av skadliga Àndringar under kodutveckling, byggen, testning och distribution av produkten.

- A. Införande av Àndringar i koden som innehÄller bakdörrar eller dolda fel som leder till sÄrbarheter.
Exempel pĂ„ attack: "Hypocrite Commits" â ett försök att föra in patcher med sĂ„rbarheter i Linux-kĂ€rnan.
Föreslagen skyddsÄtgÀrd: oberoende granskning av varje Àndring av tvÄ utvecklare.
- B. Kompromettering av plattformen för kÀllkodshantering.
Exempel pÄ attack: införande av skadliga commits med en bakdörr i Git-repositoryt för PHP-projektet efter att utvecklarnas lösenord lÀckts.
Föreslagen skyddsÄtgÀrd: FörbÀttring av sÀkerheten pÄ kÀllkodsplattformen (i PHP-fallet skedde attacken via en sÀllan anvÀnd HTTPS-grÀnssnitt som tillÀt Àndringar vid inloggning med lösenord utan att kontrollera SSH-nyckeln, medan osÀkra MD5-anvÀndes för lösenordshashning).
- C. Införande av Àndringar vid överföring av kod till byggsystemet eller kontinuerlig integration (kod som byggs överensstÀmmer inte med koden i repositoryt).
Exempel pÄ attack: införande av en bakdörr i Webmin genom att göra Àndringar i bygginfrastrukturen, vilket ledde till anvÀndning av filer med kod som skiljde sig frÄn filerna i repositoryt.
Föreslagen skyddsÄtgÀrd: Kontroll av integritet och identifiering av kÀllan till koden som kommer till byggsystemet. servern.
- D. Kompromettering av byggplattformen.
Exempel pÄ attack: SolarWinds-attacken, dÀr en bakdörr infördes i SolarWinds Orion-produkten under byggsteget.
Föreslagen skyddsmetod: implementering av utökade sÀkerhetsÄtgÀrder pÄ byggplattformen.
- E. Spridning av skadlig kod genom dÄliga beroenden.
Exempel pÄ attack: införande av en bakdörr i det populÀra biblioteket event-stream genom att lÀgga till en ofarlig beroende som i ett av uppdateringarna av detta beroende inkluderade skadlig kod (den skadliga Àndringen Äterspeglades inte i git-repositoriet, utan fanns endast i den fÀrdiga MNP-paketet).
Föreslagen skyddsmetod: rekursiv tillÀmpning av SLSA-krav pÄ alla beroenden (i fallet med event-stream skulle en kontroll ha avslöjat en kodsammanstÀllning som inte överensstÀmde med innehÄllet i huvud-Git-repositoriet).
- F. Laddning av artefakter som inte skapats i CI/CD-systemet.
Exempel pÄ attack: tillÀgg av skadlig kod i CodeCov-skriptet, vilket gjorde det möjligt för angripare att hÀmta information som lagrades i kundernas kontinuerliga integrationssystemmiljöer.
Föreslagen skyddsmetod: kontroll av kÀllan och integriteten hos artefakter (i fallet med CodeCov kunde det ha avslöjats att det Bash Uploader-skript som levererades frÄn codecov.io-webbplatsen inte stÀmde överens med koden frÄn projektets repository).
- G. Kompromettering av paketrepository.
Exempel pÄ attack: forskare lyckades sÀtta upp speglar för nÄgra populÀra paketrepositoryer i syfte att sprida skadliga paket genom dem.
Föreslagen skyddsmetod: kontroll av att spridda artefakter Àr byggda frÄn deklarerade kÀllkoder.
- H. Förvirring av anvÀndaren för att installera fel paket.
Exempel pÄ attack: anvÀndning av typkollapsning (NPM, RubyGems, PyPI) för att placera paket i repository som liknar namnen pÄ populÀra applikationer (till exempel, coffe-script istÀllet för coffee-script).
För att blockera de angivna hoten erbjuder SLSA en uppsÀttning rekommendationer samt verktyg för automatisering av skapande av metadata för revision. SLSA sammanfattar typiska angreppssÀtt och introducerar begreppet skyddsnivÄer. Varje nivÄ stÀller specifika krav pÄ infrastrukturen, vilket garanterar integriteten hos de artefakter som anvÀnds vid utveckling. Ju högre nivÄ av SLSA som stöds, desto fler skyddsÄtgÀrder har implementerats och desto bÀttre Àr infrastrukturen skyddad mot typiska attacker.
- SLSA 1 â krĂ€ver att byggprocessen Ă€r helt automatiserad och genererar metadata (âprovenanceâ) om hur artefakterna samlades, inklusive information om kĂ€llkoden, beroenden och byggprocessen (ett exempel pĂ„ en metadata-generator för revision föreslĂ„s för GitHub Actions). SLSA 1 inkluderar inte skydd mot ondsinta Ă€ndringar, utan identifierar endast koden pĂ„ enklast möjliga sĂ€tt och tillhandahĂ„ller metadata för hantering av sĂ„rbarheter och riskanalys.
- SLSA 2 â utvidgar den första nivĂ„n med kravet pĂ„ anvĂ€ndning av versionshanteringssystem och byggtjĂ€nster som genererar autentiserad metadata. AnvĂ€ndningen av SLSA 2 gör det möjligt att spĂ„ra kĂ€llan till koden och förhindrar obehöriga Ă€ndringar av koden, om pĂ„litliga byggtjĂ€nster anvĂ€nds.
- SLSA 3 â bekrĂ€ftar att kĂ€llkoden och byggplattformen uppfyller standardernas krav som sĂ€kerstĂ€ller att koden kan revideras och att den tillhandahĂ„llna metadata Ă€r intakt. Det förutsĂ€tts att revisorer kan certifiera plattformar för att sĂ€kerstĂ€lla att de uppfyller standardkraven.
- SLSA 4 â den högsta nivĂ„n som kompletterar de föregĂ„ende nivĂ„erna med följande krav:
- Obligatorisk granskning av alla Àndringar av tvÄ olika utvecklare.
- Alla steg i byggprocessen, koden och beroenden mÄste deklareras fullstÀndigt, alla beroenden mÄste extraheras och verifieras separat, och byggprocessen mÄste utföras utan nÀtverksÄtkomst.
- AnvĂ€ndandet av en process för reproducerbar byggning â möjligheten att upprepa byggprocessen sjĂ€lvstĂ€ndigt och försĂ€kra sig om att den körbara filen Ă€r byggd frĂ„n den angivna kĂ€llkoden.

KĂ€lla: opennet.ru

