Mask sprider skadlig kod via NPM och förgiftar sårbarhetsskannern Trivy
Angripare tar över GitHub-konto hos Aqua Security och gör leveranskedjan till distributionsnät, på iranskt inställda system växlar den till filradering med Kamikaze
Bilder
Photo of Dan Goodin
arstechnica.com
En självförökande skadlig kod har förgiftat öppen källkod och lagt in en destruktiv last som riktar in sig på system som är inställda för Iran, rapporterar Ars Technica. Forskare som följer gruppen, som fått namnet TeamPCP, säger att operationen utvecklades från opportunistiska intrång i molnmiljöer till ett angrepp mot leveranskedjan som under en kort period påverkade ”i stort sett alla versioner” av Trivy, en sårbarhetsskanner som används brett. Detta skedde efter att angriparna fått privilegierad åtkomst till ett konto på GitHub hos Aqua Security.
Hur angreppet fungerar är centralt, eftersom det utnyttjar hur modern programvara byggs: genom att sätta samman beroenden i stället för att skriva allt från grunden. När en maskin väl infekterats letar masken efter åtkomstpolletter till npm-arkivet och publicerar sedan nya versioner av de paket som polletten ger rätt att ändra, med den skadliga koden inbakad i uppdateringsflödet. Säkerhetsföretaget Aikido observerade att masken hann angripa 28 paket på under en minut. I praktiken blir varje komprometterad utvecklarmiljö eller byggkedja för kontinuerlig integrering och leverans en distributionskanal.
TeamPCP använde också en ovanlig styrmekanism som var avsedd att stå emot nedstängningar: en så kallad behållare i Internet Computer Protocol, beskriven som en komponent i stil med ett smart kontrakt, som kunde peka infekterade system mot skiftande nätadresser där skadliga körbara filer låg. Infekterade maskiner ”ringde hem” till behållaren ungefär var 50:e minut. Aikido uppgav att behållaren senare togs ned, vilket undergrävde angriparnas försök att göra lednings- och styrinfrastrukturen svår att störa.
Under helgen fick skadekoden en andra personlighet. På system som var satta till iransk tidszon eller på annat sätt konfigurerade för användning i Iran växlade masken från stöld av inloggningsuppgifter till förstörelse och rullade ut en last som utvecklarna kallade ”Kamikaze”. I Kubernetes-miljöer kunde den lägga ut en så kallad DaemonSet för att radera varje nod i ett kluster; utanför Kubernetes kunde den försöka en mer trubbig radering av filsystemet. Forskarna säger att de ännu inte bekräftat skador i verkliga system, men att kodvägen var uttrycklig.
Händelsen blottlägger en strukturell svaghet i leveranskedjorna för öppen källkod: ekosystemet bygger på antagandet att paketutgivare och deras konton förblir okapade, och att användare nedströms uppdaterar snabbt eftersom uppdateringar vanligtvis är något gott. Angripare har lärt sig att behandla detta förtroende som ett distributionsnät. Ju mer automatiserad kedjan är – kontinuerlig integrering, automatiska beroendeuppdateringar, byggande av behållare – desto mindre mänsklig friktion finns som kan stoppa en skadlig utgåva.
Det visar också hur geopolitiska avsikter kan byggas in i kod utan att passera riksdagar, sanktionsmyndigheter eller domstolar. En raderare som kontrollerar om en maskin är konfigurerad för Iran är ett politiskt beslut som verkställs i maskinhastighet, utan möjlighet att överklaga och utan att en vanlig utvecklare kan förutse att en beroendeuppdatering bär med sig en politisk last.
Trivy används för att hitta sårbarheter. Under ett kort fönster kan en uppdatering av Trivy i stället ha varit själva sårbarheten.