Leverandørkjede
Hva er typosquatting?
Typosquatting er et angrep der noen registrerer et navn som ligger nær et populært navn, og venter på at noen skal skrive feil. Det begynte med domener for nettsteder. I programvare publiserer angripere ondsinnede pakker med navn som crossenv i stedet for cross-env, og én skrivefeil i en installasjonskommando kjører koden deres på en utviklers maskin eller i en CI-pipeline.
Oppdatert
Slik fungerer pakketyposquatting
- Velger et mål. Angriperen velger en populær pakke, der selv en liten andel skrivefeil monner.
- Registrerer et nesten likt navn. Det skiller seg med en bokstav, en manglende bindestrek, et byttet tegn eller et troverdig suffiks.
- Skjuler nyttelasten. Pakken pakker ofte inn den ekte, så alt fortsatt virker og ingenting ser galt ut.
- Kjører ved installasjon. Pakkebehandlere kan kjøre skript under installasjonen, så koden kjører før noen kaller den, med tilgang til miljøvariabler og tokens.
- Stjeler og sprer seg. Stjålet påloggingsinformasjon lar angriperen publisere flere pakker eller nå flere systemer.
Vanlige teknikker for typosquatting
| Teknikk | Ekte pakke | Etterligning |
|---|---|---|
| Manglende skilletegn | cross-env |
crossenv |
| Lagt til suffiks | jquery |
jquery.js |
| Byttede bokstaver | ffmpeg |
ffmepg |
| Utelatt bokstav | mongoose |
mongose |
| Lagt til prefiks | sqlite |
node-sqlite |
Alle etterligningene ovenfor kommer fra én reell kampanje, som beskrives nedenfor.
Et ekte eksempel: crossenv
I 2017 publiserte en npm-bruker ved navn hacktask pakken crossenv, som etterlignet den
populære cross-env. Den beholdt oppførselen til den ekte pakken og sendte i tillegg miljøvariablene til
den som installerte den, til angriperens server. I et bygg er det i miljøvariabler tokens ligger.
Snyks analyse fant at den var én av mer enn
30 ondsinnede pakker fra samme konto, og at den gikk ubemerket i rundt to uker, til en ingeniør oppdaget den.
Hvorfor AI-kodeassistenter gjør det verre
En AI-assistent kan foreslå en pakke som ikke finnes. Hvis en angriper registrerer det navnet, installerer neste person som godtar forslaget, skadevaren. Dette kalles noen ganger slopsquatting. Automatiserte agenter som installerer avhengigheter uten at et menneske leser navnet, øker risikoen ytterligere.
Typosquatting vs. dependency confusion
Begge utnytter hvordan pakkenavn løses, men feilen er en annen.
| Typosquatting | Dependency confusion | |
|---|---|---|
| Hvem som gjør feilen | En person skriver et navn feil | Et byggesystem velger feil register |
| Navnet | Nær en offentlig pakke | Identisk med en privat, intern pakke |
| Slik lykkes det | Noen installerer den ved et uhell | En offentlig versjon med høyere nummer får prioritet |
| Viktigste forsvar | Lockfiler og gjennomgang av nye avhengigheter | Scoped pakker og en registerkonfigurasjon som holder interne navn private |
Dependency confusion ble kjent i 2021, da forskeren Alex Birsan brukte det til å få kode til å kjøre inne i mer enn 35 organisasjoner, blant dem Apple, Microsoft og PayPal, under bug bounty-programmer eller med tillatelse.
Slik forhindrer du typosquatting
-
Installer fra en lockfile i CI. Bruk
npm ciog tilsvarende. En skrivefeil kan da bare komme inn gjennom en gjennomgått endring. Se hva en lockfile gjør og ikke gjør. - Gå gjennom nye avhengigheter i pull requests. Se på selve navnet, og les en diff av lockfilen i stedet for å hoppe over den.
- Sjekk før du installerer. Sammenlign navnet med prosjektets egen dokumentasjon, og vær på vakt mot en pakke med få nedlastinger, nylig første publisering eller ingen lenke til repositorium.
- Begrens installasjonsskript. Deaktiver dem der bygget ditt tillater det.
- Vent før du tar i bruk nye pakker. Ondsinnede pakker blir ofte funnet og fjernet kort tid etter at de dukker opp.
- Begrens hva et bygg kan nå. Et bygg som bare kan snakke med kjente verter, kan ikke sende hemmelighetene dine til en angriper, selv om en dårlig pakke kjører. Se egress-policy for GitHub Actions.
- Sjekk hvert AI-forslag. Bekreft at en pakke finnes og er den du mente, før du installerer den.
Husk at en typosquat ikke har noen CVE den dagen den dukker opp, så en SCA-skanning basert på advisories vil ikke flagge den. Du finner mer i beste praksis for sikkerhet i programvareleverandørkjeden.
Domenetyposquatting
Den opprinnelige formen for angrepet, også kalt URL hijacking, registrerer et domene, for eksempel en feilstavet side for en bank eller en pålogging. Besøkende som skriver adressen feil, havner på en kopi av nettstedet som er laget for å stjele påloggingsinformasjon eller levere skadevare. Forsvaret er et annet: Registrer vanlige feilstavinger av dine egne domener, overvåk registreringer som ligner, og bruk en passordbehandler, som ikke fyller ut automatisk på feil domene.
Slik begrenser CRACI skaden
CRACI oppdager ikke nye ondsinnede pakker ut fra oppførsel eller omdømme, så bruk en pakkebrannmur eller et verktøy for atferdsanalyse til det. Det CRACI gjør, er å demme dem inn. Som GitHub Actions-runneren din håndhever CRACI en egress-policy som blokkerer tilkoblinger bygget ditt ikke trenger, så en pakke som stjeler hemmeligheter, ikke har noe sted å sende dem, selv når ingen har sett angrepet før. Hver pakke en jobb hentet, er registrert, så når et angrep er kjent, kan du se hvilke bygg som trakk det inn, og utgivelser med en publisert CVE flagges og kan blokkeres av policy gates. Se hva er et leverandørkjedeangrep.
Typosquatting: ofte stilte spørsmål
Hva er typosquatting, enkelt forklart?
Det er å registrere et navn som ser nesten ut som et populært navn, for eksempel på en pakke eller et nettsted, og vente på at noen skal skrive feil. Etterligningen leverer så skadevare eller stjeler påloggingsinformasjon.
Hva er et eksempel på typosquatting?
I 2017 etterlignet npm-pakken crossenv den populære cross-env. Den virket som den ekte pakken og sendte i tillegg brukernes miljøvariabler til angriperens server.
Hva er forskjellen på typosquatting og dependency confusion?
Typosquatting er avhengig av at en person skriver navnet på en offentlig pakke feil. Dependency confusion bruker det nøyaktige navnet på en privat pakke og er avhengig av at et byggesystem henter en offentlig versjon i stedet.
Er typosquatting ulovlig?
Å publisere skadevare eller stjele påloggingsinformasjon er ulovlig de fleste steder. Domenetyposquatting kan også bryte varemerkelovgivning, for eksempel den amerikanske Anticybersquatting Consumer Protection Act.
Hva er slopsquatting?
En variant der en angriper registrerer et pakkenavn som AI-assistenter har en tendens til å finne på. Alle som installerer den foreslåtte pakken, får angriperens kode.
Hvordan oppdager du typosquatting?
Gå gjennom nye avhengigheter etter navn og metadata, og bruk et verktøy som sammenligner pakkenavn med populære navn eller analyserer oppførsel. Advisory-baserte skannere hjelper først når pakken er rapportert.
Isoler pakken du ikke fanget opp
Blokker de utgående tilkoblingene byggene dine ikke trenger, og behold en oversikt over hver pakke de hentet.
Book en demo