Teknologi

Sådan sniger ondsindet kode sig ind i den software, du stoler på, via forsyningskæden

Susan Hill

Et angreb på forsyningskæden bryder ikke ind i den software, du bruger. Det forgifter en af de dele, softwaren er bygget af, og venter så på, at den almindelige opdateringsproces bærer den ind på din maskine. Appen installeres uden problemer, signaturen passer stadig, og opdateringen kommer via den officielle kanal. Den ondsindede kode rejser med. Det er netop denne ombytning, der gør teknikken så effektiv: den forvandler den tillid, der får software til at virke, til det punkt, der bliver udnyttet.

Næsten intet af det, du kører i dag, er skrevet helt og holdent af den virksomhed, hvis navn står på det. En enkelt app kan trække hundredvis eller tusindvis af open source-pakker med sig, hver vedligeholdt af fremmede og hver med flere pakker bag sig. Udviklere læser sjældent den kode; de stoler på registret, den kom fra, og det versionsnummer, der følger med. Den, der sniger sig ind i et hvilket som helst led i kæden, når på én gang alle nedstrøms, og derfor kan en enkelt forgiftet komponent ramme titusindvis af projekter, før nogen opdager det.

Indgangene samler sig i nogle få mønstre. Typosquatting placerer en ondsindet pakke med et navn ét tastetryk fra det populære og venter på tastefejlen. Afhængighedsforvirring udnytter, hvordan byggeværktøjer slår navne op, og narrer dem til at hente en offentlig pakke i stedet for virksomhedens private. Kontoovertagelse kaprer en rigtig vedligeholders loginoplysninger og udsender malware som en rutineopdatering; i begyndelsen af 2026 udsendte den vidt udbredte pakke axios kortvarigt en kompromitteret version, efter at hovedvedligeholderens maskine var blevet brudt via social manipulation. Og forgiftning af byggekæden retter sig mod de automatiske systemer, der samler og udgiver softwaren, hvor et enkelt korrumperet trin når hvert projekt, der afhænger af det.

Byggekæden er blevet det mest eftertragtede mål, netop fordi den ligger opstrøms alt andet. Da den populære GitHub Actions-komponent tj-actions/changed-files blev kompromitteret i 2025, omskrev angriberne dens versionsmærker, så de pegede på ondsindet kode, og trak hemmeligheder ud af byggeloggene fra mere end tyve tusind kodelagre: adgangsnøgler, tokens og private nøgler, alt sammen i klartekst. En senere kampagne, som forskere døbte Megalodon, gjorde GitHub Actions til en selvspredende bagdør, der nåede 5.561 kodelagre på cirka seks timer. Maskinen, der bygger din software, kan undergraves lige så let som softwaren selv.

Værktøjerne, som udviklere bruger hver dag, ligger også inden for virkningsfeltet. GlassWorm, der blev fundet første gang i slutningen af 2025, spredte sig via udvidelser til Visual Studio Code i markedspladserne OpenVSX og Microsoft. Den skjulte sin last med usynlige Unicode-tegn, så de ondsindede linjer bogstavelig talt var ulæselige i editoren og slap forbi den menneskelige gennemgang. Når den var installeret, stjal den loginoplysninger til npm, GitHub og Git og brugte dem til automatisk at inficere flere pakker og udvidelser, det træk der definerer en orm. Fordi editorer opdaterer udvidelser stille i baggrunden, modtog ofrene de forgiftede versioner uden at klikke på noget. En anden forgiftet VS Code-udvidelse blev brugt til at stjæle omkring 3.800 af GitHubs egne interne kodelagre.

Det, der gør disse angreb så svære at gribe, er, at hvert enkelt trin ser legitimt ud. Pakken er signeret. Opdateringen kommer fra det rigtige register. Vedligeholderkontoen er ægte. Traditionelle forsvar leder efter filer, der allerede er kendt som skadelige, og åbenlys malware, men angreb på forsyningskæden gemmer sig i betroet, forventet og ofte usynlig kode, der ankommer præcis når og hvordan software skal ankomme. Værre endnu: det gamle sikkerhedsråd om at opdatere med det samme er netop den mekanisme, angriberen regner med. For første gang er det ikke længere entydigt sikkert at installere den nyeste version.

Forsvarerne er nået til enighed om en håndfuld metoder, der virker. Låsefiler fastgør hver afhængighed til en præcis, verificeret version, så en installer kun henter det, der er gennemgået, frem for blot det nyeste. At slå automatiske installationsscripts fra skærer den mest almindelige vej over, hvor en ondsindet pakke kører kode i det øjeblik, den lander. At fastgøre GitHub Actions til en bestemt commit-hash i stedet for et bevægeligt mærke gør tricket med at omskrive mærker virkningsløst. En softwarestykliste, en detaljeret liste over hver komponent i et byg, lader et team inden for minutter vide, om det er udsat, når den næste hændelse afsløres. Mange af de organisationer, der slap fra de seneste angreb, gjorde intet eksotisk: de byggede fra en indtjekket låsefil og arbejdede bag en registerproxy, der satte nyudgivne pakker i karantæne.

For folk, der ikke skriver kode, er beskyttelsen mest indirekte, men lektien er det ikke. Softwarens forsyningskæde er i dag en kampplads i front, og det er virksomhederne, der bygger apperne på din telefon og bærbare, der skal sikre den. Det fornuftige svar er hverken panik eller den gamle refleks om at opdatere alt, så snart en notifikation dukker op. Det er at foretrække software fra hold, der offentliggør, hvad de leverer, og hvordan de bygger det, og at behandle en betroet kilde som noget, der skal fortjenes ved hvert led, snarere end en egenskab, der glider ned ad kæden af sig selv.

Branchens svar tager form omkring proveniens: et kryptografisk bevis for, hvor et stykke kode kommer fra, og hvordan det blev bygget, kontrolleret automatisk, før noget som helst installeres. Det er den samme idé, der sikrede webtrafikken for en generation siden, nu anvendt på softwarens eget samlebånd. Indtil det bevis er universelt, forbliver hver installation en tillidshandling over for mennesker, du aldrig kommer til at møde.

Debat

Der er 0 kommentarer.