Programmazione

Slopsquatting: quando l'AI inventa un pacchetto e qualcuno lo registra prima di te

Il typo non serve più: basta che il tuo assistente AI si inventi il nome giusto, e qualcuno l'ha già registrato per te.

Il tuo assistente AI si inventa un pacchetto (e qualcuno l'ha già registrato)

Il typosquatting classico punta sul tuo errore di battitura: registri "expres" vicino a "express" e aspetti che le dita scivolino. Lo slopsquatting (termine coniato da Seth Larson della Python Software Foundation) ribalta il meccanismo: non serve nessun errore umano. Chiedi al tuo coding assistant un modo pulito per gestire l'OAuth2 (il protocollo standard per autorizzare un'app ad accedere a un servizio senza passargli la password), e lui ti suggerisce pip install requests-oauth2-helper. Il nome suona plausibile, la sintassi è quella giusta — peccato che quel pacchetto non sia mai esistito. Il modello l'ha "allucinato" (cioè generato con sicurezza pur non essendo reale), e se un attaccante lo ha notato prima di te, quel nome ora esiste davvero su PyPI o npm, pieno di codice malevolo.

Qui la vittima designata non è chi sbaglia a scrivere, ma chi si fida ciecamente del suggerimento e digita il nome esatto, carattere per carattere, copiandolo da una fonte in cui ripone più fiducia delle proprie dita. L'errore è già stato commesso a monte, dal modello, e tu lo stai solo riproducendo fedelmente in un terminale con permessi di scrittura sul tuo sistema.

Perché funziona così bene: le allucinazioni si ripetono

Uno studio USENIX Security 2025 ("We Have a Package for You!") ha generato 576.000 frammenti di codice con 16 LLM diversi in Python e JavaScript, controllando ogni pacchetto suggerito: il 19,7% — circa uno su cinque — semplicemente non esisteva. In totale sono stati registrati 205.474 nomi di pacchetti diversi, tutti inventati. I modelli commerciali se la cavano meglio (5,2% di media), quelli open source peggio (21,7%), ma nessuno ne esce pulito.

La parte che rende l'attacco redditizio, però, è un'altra: 500 prompt che avevano prodotto un pacchetto fasullo sono stati rilanciati altre dieci volte ciascuno. Il 43% dei nomi inventati è tornato fuori identico in ogni singola run, il 58% è comparso più di una volta. Non è rumore casuale, è comportamento stabile del modello — il che significa che un attaccante non deve registrare centinaia di migliaia di nomi a caso: gli basta osservare gli output più comuni, tenere quelli "appiccicosi" e registrare solo quelli. Il modello fa la ricognizione al posto suo.

Esempi pratici

Fonti: https://dev.to