Dodavatelský řetězec
Co je typosquatting?
Typosquatting je útok, při kterém útočník zaregistruje název podobný populárnímu a čeká, až se v něm někdo přepíše. Začalo to u webových domén. V softwaru útočníci publikují škodlivé balíčky s názvy jako crossenv místo cross-env a jediný překlep v instalačním příkazu spustí jejich kód na počítači vývojáře nebo v CI pipeline.
Aktualizováno
Jak funguje typosquatting balíčků
- Výběr cíle. Útočník si vybere populární balíček, u kterého se i malý podíl překlepů nasčítá.
- Registrace podobného názvu. Liší se o písmeno, chybějící spojovník, prohozený znak nebo věrohodnou příponu.
- Skrytí škodlivého kódu. Balíček často obaluje ten skutečný, takže vše dál funguje a nic nevypadá podezřele.
- Spuštění při instalaci. Správci balíčků mohou během instalace spouštět skripty, takže kód poběží dřív, než ho kdokoli zavolá, a má přístup k proměnným prostředí a tokenům.
- Krádež a šíření. Ukradené přihlašovací údaje útočníkovi umožní publikovat další balíčky nebo se dostat do dalších systémů.
Běžné techniky typosquattingu
| Technika | Skutečný balíček | Napodobenina |
|---|---|---|
| Chybějící oddělovač | cross-env |
crossenv |
| Přidaná přípona | jquery |
jquery.js |
| Prohozená písmena | ffmpeg |
ffmepg |
| Vynechané písmeno | mongoose |
mongose |
| Přidaná předpona | sqlite |
node-sqlite |
Všechny výše uvedené napodobeniny pocházejí z jedné skutečné kampaně, kterou popisujeme dále.
Skutečný příklad: crossenv
V roce 2017 publikoval uživatel npm jménem hacktask balíček crossenv, který napodoboval
populární cross-env. Zachoval chování skutečného balíčku a zároveň odesílal proměnné prostředí každého,
kdo ho nainstaloval, na server útočníka. V buildu jsou právě proměnné prostředí místem, kde žijí tokeny.
Analýza společnosti Snyk zjistila, že šlo
o jeden z více než 30 škodlivých balíčků ze stejného účtu a že zůstal asi dva týdny bez povšimnutí, dokud si ho
nevšiml jeden inženýr.
Proč AI asistenti pro programování situaci zhoršují
AI asistent může navrhnout balíček, který neexistuje. Pokud útočník tento název zaregistruje, další člověk, který návrh přijme, nainstaluje malware. Někdy se tomu říká slopsquatting. Automatizovaní agenti, kteří instalují závislosti, aniž by název četl člověk, sázky dále zvyšují.
Typosquatting vs dependency confusion
Oba útoky zneužívají způsob, jakým se názvy balíčků vyhodnocují, ale chyba je jiná.
| Typosquatting | Dependency confusion | |
|---|---|---|
| Čí chyba | Člověk se v názvu přepíše | Systém buildu zvolí špatný registr |
| Název | Podobný veřejnému balíčku | Shodný se soukromým interním balíčkem |
| Jak uspěje | Někdo ho omylem nainstaluje | Přednost dostane veřejná verze s vyšším číslem |
| Hlavní obrana | Lockfily a kontrola nových závislostí | Balíčky se scope a konfigurace registru, která interní názvy drží v soukromí |
Dependency confusion se proslavil v roce 2021, kdy ho výzkumník Alex Birsan použil ke spuštění kódu ve více než 35 organizacích, včetně Apple, Microsoft a PayPal, v rámci programů bug bounty nebo se svolením.
Jak typosquattingu předejít
-
V CI instalujte z lockfilu. Používejte
npm cia jeho ekvivalenty. Překlep se pak může dostat dovnitř jen přes zkontrolovanou změnu. Viz co lockfile dělá a co ne. - Kontrolujte nové závislosti v pull requestech. Dívejte se na samotný název a diff lockfilu čtěte, místo abyste ho přeskakovali.
- Ověřujte před instalací. Porovnejte název s vlastní dokumentací projektu a buďte obezřetní u balíčku s malým počtem stažení, nedávným prvním vydáním nebo bez odkazu na repozitář.
- Omezte instalační skripty. Vypněte je všude, kde to váš build dovolí.
- S nasazením nových balíčků vyčkejte. Škodlivé balíčky se často odhalí a odstraní brzy po svém objevení.
- Omezte, kam se build může připojit. Build, který smí komunikovat jen se známými hostiteli, nemůže odeslat vaše tajné údaje útočníkovi, ani když se spustí škodlivý balíček. Viz egress policy pro GitHub Actions.
- Ověřujte každý návrh AI. Před instalací si potvrďte, že balíček existuje a je to ten, který jste měli na mysli.
Mějte na paměti, že typosquat nemá v den svého objevení žádné CVE, takže ho sken SCA založený na bezpečnostních upozorněních neoznačí. Více najdete v článku osvědčené postupy bezpečnosti softwarového dodavatelského řetězce.
Typosquatting domén
Původní forma útoku, nazývaná také URL hijacking, registruje doménu, například s překlepem v názvu banky nebo přihlašovací stránky. Návštěvníci, kteří adresu napíšou špatně, skončí na kopii webu vytvořené ke krádeži přihlašovacích údajů nebo k šíření malwaru. Obrana je jiná: zaregistrujte běžné překlepy vlastních domén, sledujte registrace podobných domén a používejte správce hesel, který na špatné doméně údaje automaticky nevyplní.
Jak CRACI omezuje škody
CRACI nové škodlivé balíčky neodhaluje podle chování ani reputace, k tomu použijte firewall pro balíčky nebo nástroj pro analýzu chování. CRACI je ale dokáže zadržet. Jako váš runner pro GitHub Actions vynucuje egress policy, která blokuje spojení, která váš build nepotřebuje, takže balíček, který krade tajné údaje, je nemá kam odeslat, i když útok ještě nikdo neviděl. Každý balíček, který job stáhl, je zaznamenaný, takže jakmile je útok známý, zjistíte, které buildy ho stáhly, a vydání se zveřejněným CVE jsou označena a kontrolní brány politik (policy gates) je mohou zablokovat. Viz co je útok na dodavatelský řetězec.
Typosquatting: časté dotazy
Co je typosquatting jednoduše řečeno?
Jde o registraci názvu, který vypadá skoro stejně jako populární název, třeba balíčku nebo webu, a čekání, až se v něm někdo přepíše. Napodobenina pak doručí malware nebo ukradne přihlašovací údaje.
Jaký je příklad typosquattingu?
V roce 2017 napodoboval npm balíček crossenv populární cross-env. Fungoval jako skutečný balíček a zároveň odesílal proměnné prostředí uživatelů na server útočníka.
Jaký je rozdíl mezi typosquattingem a dependency confusion?
Typosquatting spoléhá na to, že se člověk přepíše v názvu veřejného balíčku. Dependency confusion používá přesný název soukromého balíčku a spoléhá na to, že systém buildu místo něj stáhne veřejnou verzi.
Je typosquatting nezákonný?
Publikování malwaru nebo krádež přihlašovacích údajů jsou ve většině zemí nezákonné. Typosquatting domén může také porušovat známkové právo, například americký zákon Anticybersquatting Consumer Protection Act.
Co je slopsquatting?
Varianta, při které útočník zaregistruje název balíčku, který si AI asistenti mají tendenci vymýšlet. Kdo navržený balíček nainstaluje, dostane kód útočníka.
Jak typosquatting odhalit?
Kontrolujte nové závislosti podle názvu a metadat a používejte nástroj, který porovnává názvy balíčků s populárními nebo analyzuje chování. Skenery založené na bezpečnostních upozorněních pomohou až poté, co byl balíček nahlášen.
Zadržte balíček, který jste nezachytili
Blokujte odchozí spojení, která vaše buildy nepotřebují, a uchovávejte záznam o každém balíčku, který stáhly.
Rezervujte si demo