Toimitusketju
Mitä typosquatting on?
Typosquatting on hyökkäys, jossa rekisteröidään suositun nimen kaltainen nimi ja odotetaan, että joku kirjoittaa sen väärin. Se alkoi verkkosivustojen verkkotunnuksista. Ohjelmistoissa hyökkääjät julkaisevat haitallisia paketteja nimillä kuten crossenv eikä cross-env, ja yksikin kirjoitusvirhe asennuskomennossa ajaa heidän koodinsa kehittäjän koneella tai CI/CD-putkessa.
Päivitetty
Miten pakettien typosquatting toimii
- Kohteen valinta. Hyökkääjä valitsee suositun paketin, jossa pienikin kirjoitusvirheiden osuus kertautuu.
- Lähes saman nimen rekisteröinti. Nimi eroaa yhdellä kirjaimella, puuttuvalla yhdysmerkillä, vaihtuneella merkillä tai uskottavalla päätteellä.
- Hyötykuorman piilottaminen. Paketti usein käärii oikean paketin sisäänsä, joten kaikki toimii yhä eikä mikään näytä oudolta.
- Ajo asennuksen yhteydessä. Paketinhallintatyökalut voivat ajaa skriptejä asennuksen aikana, joten koodi ajetaan ennen kuin kukaan kutsuu sitä, ja sillä on pääsy ympäristömuuttujiin ja tokeneihin.
- Varastaminen ja leviäminen. Varastetuilla tunnistetiedoilla hyökkääjä voi julkaista lisää paketteja tai päästä muihin järjestelmiin.
Yleiset typosquatting-tekniikat
| Tekniikka | Oikea paketti | Jäljitelmä |
|---|---|---|
| Puuttuva erotin | cross-env |
crossenv |
| Lisätty pääte | jquery |
jquery.js |
| Vaihdetut kirjaimet | ffmpeg |
ffmepg |
| Pudotettu kirjain | mongoose |
mongose |
| Lisätty etuliite | sqlite |
node-sqlite |
Kaikki yllä olevat jäljitelmät ovat peräisin yhdestä oikeasta kampanjasta, joka kuvataan seuraavaksi.
Todellinen esimerkki: crossenv
Vuonna 2017 npm-käyttäjä nimeltä hacktask julkaisi paketin crossenv, joka jäljitteli suosittua
cross-env-pakettia. Se säilytti oikean paketin toiminnan ja lähetti lisäksi asentajansa
ympäristömuuttujat hyökkääjän palvelimelle. Buildissa tokenit ovat juuri ympäristömuuttujissa.
Snykin analyysin mukaan se oli yksi yli
30 haitallisesta paketista samalta tililtä, ja se jäi huomaamatta noin kaksi viikkoa, kunnes eräs insinööri huomasi
sen.
Miksi tekoälyavusteiset koodausavustajat pahentavat tilannetta
Tekoälyavustaja voi ehdottaa pakettia, jota ei ole olemassa. Jos hyökkääjä rekisteröi tuon nimen, seuraava ehdotuksen hyväksyjä asentaa haittaohjelman. Tätä kutsutaan joskus nimellä slopsquatting. Automaattiset agentit, jotka asentavat riippuvuuksia ilman että ihminen lukee nimen, nostavat panoksia entisestään.
Typosquatting vs. dependency confusion
Molemmat hyödyntävät sitä, miten pakettien nimet ratkaistaan, mutta virhe on eri.
| Typosquatting | Dependency confusion | |
|---|---|---|
| Kenen virhe | Ihminen kirjoittaa nimen väärin | Build-järjestelmä valitsee väärän rekisterin |
| Nimi | Lähellä julkista pakettia | Sama kuin yksityisellä, sisäisellä paketilla |
| Miten se onnistuu | Joku asentaa sen vahingossa | Suuremmalla versionumerolla varustettu julkinen versio menee edelle |
| Tärkein puolustus | Lukitustiedostot ja uusien riippuvuuksien katselmointi | Scopatut paketit ja rekisterimääritys, joka pitää sisäiset nimet yksityisinä |
Dependency confusion tuli tunnetuksi vuonna 2021, kun tutkija Alex Birsan sai sen avulla koodia ajoon yli 35 organisaatiossa, kuten Applella, Microsoftilla ja PayPalilla, bug bounty -ohjelmien puitteissa tai luvan kanssa.
Miten typosquatting estetään
-
Asenna CI:ssä lukitustiedostosta. Käytä komentoa
npm cija sen vastineita. Kirjoitusvirhe voi silloin tulla vain katselmoidun muutoksen kautta. Katso, mitä lukitustiedosto tekee ja mitä ei. - Katselmoi uudet riippuvuudet pull requesteissa. Katso itse nimeä ja lue lukitustiedoston diff ohittamisen sijaan.
- Tarkista ennen asennusta. Vertaa nimeä projektin omaan dokumentaatioon ja suhtaudu varauksella pakettiin, jolla on vähän latauksia, tuore ensijulkaisu tai ei linkkiä repositorioon.
- Rajoita asennusskriptejä. Poista ne käytöstä, missä buildisi sen sallii.
- Odota ennen uusien pakettien käyttöönottoa. Haitalliset paketit löydetään ja poistetaan usein pian niiden ilmestymisen jälkeen.
- Rajoita, mihin buildi pääsee. Buildi, joka voi kommunikoida vain tunnettujen palvelinten kanssa, ei voi lähettää salaisuuksiasi hyökkääjälle, vaikka huono paketti ajettaisiin. Katso GitHub Actionsin egress-käytäntö.
- Tarkista jokainen tekoälyn ehdotus. Varmista ennen asennusta, että paketti on olemassa ja että se on juuri se, jota tarkoitit.
Muista, että typosquat-paketilla ei ole CVE:tä sinä päivänä, kun se ilmestyy, joten tietoturvatiedotteisiin perustuva SCA-skannaus ei merkitse sitä. Lisää aiheesta: ohjelmistotoimitusketjun tietoturvan parhaat käytännöt.
Verkkotunnusten typosquatting
Hyökkäyksen alkuperäinen muoto, jota kutsutaan myös URL-kaappaukseksi, rekisteröi verkkotunnuksen, kuten väärin kirjoitetun pankin tai kirjautumissivun osoitteen. Osoitteen väärin kirjoittavat kävijät päätyvät sivuston kopioon, joka on tehty tunnistetietojen varastamiseen tai haittaohjelmien levittämiseen. Puolustuskeinot ovat erilaiset: rekisteröi omien verkkotunnustesi yleiset kirjoitusvirheversiot, valvo samannäköisten nimien rekisteröintejä ja käytä salasanojen hallintaohjelmaa, joka ei täytä tietoja automaattisesti väärään verkkotunnukseen.
Miten CRACI rajoittaa vahinkoja
CRACI ei tunnista uusia haitallisia paketteja käyttäytymisen tai maineen perusteella, joten käytä siihen pakettipalomuuria tai käyttäytymisen analyysityökalua. Sen sijaan se rajaa niiden vaikutuksen. GitHub Actions -runnerinasi se valvoo egress-käytäntöä, joka estää yhteydet, joita buildisi ei tarvitse, joten salaisuuksia varastavalla paketilla ei ole minne lähettää niitä, vaikka kukaan ei olisi nähnyt hyökkäystä aiemmin. Jokainen jobin hakema paketti on kirjattu, joten kun hyökkäys tulee tunnetuksi, näet, mitkä buildit hakivat sen, ja julkaistun CVE:n sisältävät versiot merkitään ja ne voidaan estää käytäntöporteilla. Katso, mikä toimitusketjuhyökkäys on.
Typosquatting: usein kysytyt kysymykset
Mitä typosquatting on yksinkertaisesti sanottuna?
Se on sellaisen nimen rekisteröintiä, joka näyttää lähes samalta kuin suosittu nimi, kuten paketti tai verkkosivusto, ja odottamista, että joku kirjoittaa sen väärin. Jäljitelmä sitten toimittaa haittaohjelman tai varastaa tunnistetietoja.
Mikä on esimerkki typosquattingista?
Vuonna 2017 npm-paketti crossenv jäljitteli suosittua cross-env-pakettia. Se toimi kuten oikea paketti ja lähetti lisäksi käyttäjien ympäristömuuttujat hyökkääjän palvelimelle.
Mitä eroa on typosquattingilla ja dependency confusionilla?
Typosquatting perustuu siihen, että ihminen kirjoittaa julkisen paketin nimen väärin. Dependency confusion käyttää yksityisen paketin täsmälleen samaa nimeä ja perustuu siihen, että build-järjestelmä hakee sen sijaan julkisen version.
Onko typosquatting laitonta?
Haittaohjelmien julkaiseminen ja tunnistetietojen varastaminen on laitonta useimmissa maissa. Verkkotunnusten typosquatting voi myös rikkoa tavaramerkkilainsäädäntöä, kuten Yhdysvaltain Anticybersquatting Consumer Protection Actia.
Mitä slopsquatting on?
Muunnelma, jossa hyökkääjä rekisteröi paketin nimen, jonka tekoälyavustajat taipuvat keksimään. Jokainen, joka asentaa ehdotetun paketin, saa hyökkääjän koodin.
Miten typosquatting havaitaan?
Katselmoi uudet riippuvuudet nimen ja metatietojen perusteella ja käytä työkalua, joka vertaa pakettien nimiä suosittuihin nimiin tai analysoi käyttäytymistä. Tietoturvatiedotteisiin perustuvat skannerit auttavat vasta, kun paketista on raportoitu.
Rajaa paketti, joka pääsi läpi
Estä lähtevät yhteydet, joita buildisi eivät tarvitse, ja pidä kirjaa jokaisesta paketista, jonka ne hakivat.
Varaa demo