Supply chain
Che cos'è il typosquatting?
Il typosquatting è un attacco che registra un nome simile a uno molto diffuso e aspetta che qualcuno lo digiti male. È nato con i domini dei siti web. Nel software, gli attaccanti pubblicano pacchetti malevoli con nomi come crossenv invece di cross-env, e un solo errore di battitura in un comando di installazione esegue il loro codice sulla macchina di uno sviluppatore o in una pipeline CI.
Aggiornato il
Come funziona il typosquatting dei pacchetti
- Scelta del bersaglio. L'attaccante sceglie un pacchetto molto diffuso, dove anche una piccola percentuale di errori di battitura produce numeri consistenti.
- Registrazione di un nome simile. Differisce per una lettera, un trattino mancante, un carattere invertito o un suffisso plausibile.
- Occultamento del payload. Spesso il pacchetto incapsula quello vero, così tutto continua a funzionare e nulla sembra fuori posto.
- Esecuzione all'installazione. I package manager possono eseguire script durante l'installazione, quindi il codice viene eseguito prima che qualcuno lo chiami, con accesso a variabili d'ambiente e token.
- Furto e diffusione. Le credenziali rubate permettono all'attaccante di pubblicare altri pacchetti o di raggiungere altri sistemi.
Tecniche comuni di typosquatting
| Tecnica | Pacchetto reale | Imitazione |
|---|---|---|
| Separatore mancante | cross-env |
crossenv |
| Suffisso aggiunto | jquery |
jquery.js |
| Lettere invertite | ffmpeg |
ffmepg |
| Lettera omessa | mongoose |
mongose |
| Prefisso aggiunto | sqlite |
node-sqlite |
Tutte le imitazioni qui sopra provengono da una stessa campagna reale, descritta di seguito.
Un esempio reale: crossenv
Nel 2017, un utente npm di nome hacktask ha pubblicato crossenv, imitando il popolare
cross-env. Manteneva il comportamento del pacchetto reale e inviava anche al server dell'attaccante le variabili
d'ambiente di chi lo installava. In una build, le variabili d'ambiente sono il posto in cui si trovano i token.
L'analisi di Snyk ha rilevato che era uno di oltre
30 pacchetti malevoli dello stesso account e che è passato inosservato per circa due settimane, finché un ingegnere non lo
ha notato.
Perché gli assistenti di programmazione IA peggiorano la situazione
Un assistente IA può suggerire un pacchetto che non esiste. Se un attaccante registra quel nome, la persona successiva che accetta il suggerimento installa il malware. Questo fenomeno è talvolta chiamato slopsquatting. Gli agenti automatici che installano dipendenze senza che una persona ne legga il nome alzano ulteriormente la posta in gioco.
Typosquatting e dependency confusion
Entrambi sfruttano il modo in cui vengono risolti i nomi dei pacchetti, ma l'errore è diverso.
| Typosquatting | Dependency confusion | |
|---|---|---|
| Di chi è l'errore | Una persona digita male un nome | Un sistema di build sceglie il registry sbagliato |
| Il nome | Simile a quello di un pacchetto pubblico | Identico a quello di un pacchetto privato interno |
| Come riesce | Qualcuno lo installa per errore | Una versione pubblica con un numero più alto ha la precedenza |
| Difesa principale | Lockfile e revisione delle nuove dipendenze | Pacchetti con scope e una configurazione del registry che mantiene privati i nomi interni |
La dependency confusion è diventata famosa nel 2021, quando il ricercatore Alex Birsan l'ha usata per eseguire codice all'interno di oltre 35 organizzazioni, tra cui Apple, Microsoft e PayPal, nell'ambito di programmi di bug bounty o con autorizzazione.
Come prevenire il typosquatting
-
Installi da un lockfile in CI. Usi
npm cie i suoi equivalenti. Un errore di battitura può così arrivare solo tramite una modifica revisionata. Veda che cosa fa e che cosa non fa un lockfile. - Riveda le nuove dipendenze nelle pull request. Guardi il nome stesso e legga il diff del lockfile invece di saltarlo.
- Controlli prima di installare. Confronti il nome con la documentazione del progetto e diffidi di un pacchetto con pochi download, una prima pubblicazione recente o nessun link al repository.
- Limiti gli script di installazione. Li disattivi dove la Sua build lo consente.
- Attenda prima di adottare nuovi pacchetti. I pacchetti malevoli vengono spesso scoperti e rimossi poco dopo la loro comparsa.
- Limiti ciò che una build può raggiungere. Una build che può comunicare solo con host noti non può inviare i Suoi secret a un attaccante, anche se viene eseguito un pacchetto dannoso. Veda policy di egress per GitHub Actions.
- Controlli ogni suggerimento dell'IA. Verifichi che un pacchetto esista e sia quello che intendeva prima di installarlo.
Tenga presente che un pacchetto di typosquatting non ha alcuna CVE il giorno in cui compare, quindi una scansione SCA basata sugli advisory non lo segnalerà. Per saperne di più, veda le best practice per la sicurezza della software supply chain.
Typosquatting dei domini
La forma originale dell'attacco, detta anche URL hijacking, registra un dominio che storpia il nome di una banca o di una pagina di accesso. I visitatori che digitano male l'indirizzo finiscono su una copia del sito creata per rubare credenziali o distribuire malware. Le difese sono diverse: registrare le storpiature più comuni dei propri domini, monitorare le registrazioni di domini simili e usare un gestore di password, che non compila automaticamente i dati sul dominio sbagliato.
Come CRACI limita i danni
CRACI non rileva nuovi pacchetti malevoli in base al comportamento o alla reputazione, quindi per questo usi un firewall per pacchetti o uno strumento di analisi del comportamento. Ciò che fa è contenerli. Come runner GitHub Actions, applica una policy di egress che blocca le connessioni di cui la Sua build non ha bisogno, così un pacchetto che ruba secret non ha dove inviarli, anche quando nessuno ha mai visto quell'attacco. Ogni pacchetto scaricato da un job resta registrato, quindi una volta noto un attacco può vedere quali build lo hanno introdotto, e le release con una CVE pubblicata vengono segnalate e possono essere bloccate dai policy gate. Veda che cos'è un attacco alla supply chain.
Typosquatting: domande frequenti
Che cos'è il typosquatting in parole semplici?
Consiste nel registrare un nome quasi identico a uno molto diffuso, come quello di un pacchetto o di un sito web, e aspettare che qualcuno lo digiti male. L'imitazione diffonde quindi malware o ruba credenziali.
Qual è un esempio di typosquatting?
Nel 2017, il pacchetto npm crossenv ha imitato il popolare cross-env. Funzionava come il pacchetto reale e inviava anche al server dell'attaccante le variabili d'ambiente degli utenti.
Qual è la differenza tra typosquatting e dependency confusion?
Il typosquatting si basa su una persona che digita male il nome di un pacchetto pubblico. La dependency confusion usa il nome esatto di un pacchetto privato e si basa su un sistema di build che scarica invece una versione pubblica.
Il typosquatting è illegale?
Pubblicare malware o rubare credenziali è illegale nella maggior parte dei Paesi. Il typosquatting dei domini può inoltre violare il diritto dei marchi, come lo statunitense Anticybersquatting Consumer Protection Act.
Che cos'è lo slopsquatting?
Una variante in cui un attaccante registra un nome di pacchetto che gli assistenti IA tendono a inventare. Chiunque installi il pacchetto suggerito riceve il codice dell'attaccante.
Come si rileva il typosquatting?
Riveda le nuove dipendenze per nome e metadati e usi uno strumento che confronti i nomi dei pacchetti con quelli più diffusi o ne analizzi il comportamento. Gli scanner basati sugli advisory aiutano solo dopo che il pacchetto è stato segnalato.
Contenga il pacchetto che non ha intercettato
Blocchi le connessioni in uscita di cui le Sue build non hanno bisogno e conservi un registro di ogni pacchetto scaricato.
Prenota una demo