Artefaktförgiftning i GitHub Actions Importerar skadlig programvara via mjukvarupipelines

Källnod: 1769941

En angripare som skickar ändringar till ett arkiv med öppen källkod på GitHub kan orsaka att nedströms programvaruprojekt som inkluderar den senaste versionen av en komponent kompilerar uppdateringar med skadlig kod.

Det är enligt säkerhetsföretaget Legit Security för mjukvaruförsörjningskedjan, som sa i ett råd som publicerades den 1 december att denna svaghet med "artefaktförgiftning" kan påverka programvaruprojekt som använder GitHub Actions - en tjänst för att automatisera utvecklingspipelines - genom att utlösa byggprocessen när en förändring upptäcks i ett mjukvaruberoende. 

Sårbarheten är inte teoretisk: Legit Security simulerade en attack mot projektet som hanterar Rust, vilket fick projektet att kompilera om med en anpassad – och skadlig – version av det populära GCC-programbiblioteket, uppgav företaget i rådgivningen.

Problemet påverkar sannolikt ett stort antal projekt med öppen källkod eftersom underhållare vanligtvis kommer att köra tester på tillförd kod innan de faktiskt analyserar koden själva, säger Liav Caspi, teknisk chef för Legit Security.

– Det är ett vanligt mönster idag, säger han. "Många projekt med öppen källkod idag, efter en ändringsbegäran, kör de ett gäng tester för att validera begäran eftersom underhållaren inte vill behöva granska koden först. Istället kör den automatiskt tester."

Attacken drar fördel av den automatiserade byggprocessen genom GitHub Actions. När det gäller programmeringsspråket Rust kunde det sårbara mönstret ha tillåtit en angripare att exekvera kod på ett privilegierat sätt som en del av utvecklingspipelinen, stjäla förvarshemligheter och potentiellt manipulera kod, sa Legit Security.

"För att uttrycka det enkelt: i ett sårbart arbetsflöde kan alla GitHub-användare skapa en gaffel som bygger en artefakt," företaget anges i dess rådgivande. "Injicera sedan denna artefakt i den ursprungliga lagringsprocessen och modifiera dess utdata. Det här är en annan form av en attack för mjukvaruförsörjningskedjan, där byggresultatet modifieras av en angripare."

Sårbarheten möjliggör en attack liknande attacken mot införande av skadlig programvara som riktade sig mot CodeCov och, genom företagets programvara, dess nedströmskunder.

"[D]e bristen på inbyggd GitHub-implementering för kommunikation med artefakter över arbetsflöden ledde till att många projekt och GitHub Actions-communityt utvecklade osäkra lösningar för kommunikation över arbetsflöden och gjorde detta hot mycket utbrett", säger Legit Security i rådet.

GitHub bekräftade problemet och betalade en belöning för informationen, medan Rust fixade sin sårbara pipeline, uppgav Legit Security.

Källa: Legit Security

Programvaruförsörjningskedjan behöver säkerhet

Sårbarheten är den senaste säkerhetsfrågan som påverkar programvarans leveranskedjor. Industri och statliga myndigheter har i allt större utsträckning försökt stärka säkerheten för programvara med öppen källkod och programvara som tillhandahålls som en tjänst.

I maj 2021 släppte till exempel Biden-administrationen sin verkställande order om att förbättra nationens cybersäkerhet, en federal regel som bland annat kräver att regeringen ska kräver grundläggande säkerhetsstandarder för all programvara som de köper. På den privata industrisidan har Google och Microsoft utlovat miljarder dollar för att stärka säkerheten i ekosystemet med öppen källkod, som tillhandahåller koden som omfattar mer än tre fjärdedelar av den genomsnittliga applikationens kodbas.

Logisk, men sårbar

Säkerhetsproblemet tillhör en svårupptäckt klass av problem som kallas logiska problem, som inkluderar problem med behörigheter, potentialen för att forked repositories kan infogas i en pipeline och en brist på differentiering mellan gaffel- och basförråd.

Eftersom programvaruprojekt ofta använder automatiserade skript för att kontrollera kodinlämningar innan de vidarebefordras till underhållarna, kommer pull-förfrågningar att köras genom automatisering innan någon människa kontrollerar dem för skadlig kod. Även om automatiseringen sparar tid, bör den också betraktas som ett sätt för angripare att infoga skadlig kod i pipelinen.

"När du utvecklar öppen källkod är problemet större, eftersom du accepterar bidrag från vem som helst i världen", säger Caspi. "Du utför saker som du inte kan lita på."

GitHub erkände problemet och utökade sätten att utesluta bidrag från externa medarbetare från att automatiskt infogas i Actions pipeline. Företaget uppdaterade sina GetArtifact och ListArtifacts API:er med målet att tillhandahålla mer information för att avgöra om en artefakt kan lita på.

"Alla som gör något som Rust-projektet gjorde - att lita på input från en tredje part - då är de fortfarande sårbara", säger Caspi. "Det är ett logiskt problem. GitHub gjorde det enklare att skriva ett säkrare skript."

Tidsstämpel:

Mer från Mörk läsning