Ci sono attacchi informatici che si notano per la loro violenza, e altri che colpiscono per la pazienza. SleeperGem appartiene alla seconda categoria. Il pacchetto Dendreo era fermo dal 2017. Il plugin fastlane-plugin-run_tests_firebase_testlab, legato ai test su Firebase, non riceveva un aggiornamento dal 2019. Poi, il 18 e 19 luglio, qualcuno li ha tirati fuori dal cassetto insieme a un terzo pacchetto nuovo di zecca, che nel nome imita alla perfezione il Git Credential Manager ufficiale di Microsoft, e ha iniziato a pubblicarli su RubyGems come se niente fosse.
Quello che succede dopo l'installazione è il punto davvero interessante della storia. Il pacchetto non fa subito danni: prima guarda dove si trova. Se capisce di essere dentro una pipeline di build automatizzata - il tipo di ambiente controllato dove i team di sicurezza tengono d'occhio ogni comportamento anomalo - non fa nulla e si spegne. Ma se si accorge di trovarsi su una macchina vera, quella di uno sviluppatore in carne e ossa, allora scarica un secondo pezzo di codice da un server Forgejo controllato dagli attaccanti e installa un demone pensato per restare lì il più a lungo possibile. In certi casi arriva anche a controllare se l'utente può usare sudo senza password, e quando è così si rilancia con permessi da amministratore, piazzando una copia della shell di sistema camuffata da un banale strumento di rete.
C'è una frase di un ricercatore di Aikido Security che vale la pena riportare, perché spiega meglio di qualunque report tecnico perché la campagna si chiami proprio così: un account RubyGems silenzioso da sei o sette anni non insospettisce nessuno, ed è esattamente per questo che diventa il bersaglio perfetto. Non stiamo parlando quindi di account creati ad hoc e lasciati in incubazione per anni, ma di profili autentici, reali, semplicemente dimenticati - e proprio per questo perfetti da dirottare senza che nessuno se ne accorga.
Chi ha installato anche solo uno di questi tre pacchetti farebbe bene a non limitarsi a disinstallarlo. Ormai bisogna considerare considerati compromessi sia il dispositivo sia ogni credenziale che ci è passata sopra: va rimosso il demone (di solito nascosto in una cartella dentro la home dell'utente), va ripulita ogni traccia di persistenza, va controllata l'eventuale presenza della shell camuffata, e vanno cambiate tutte le password.
Il fatto che se ne parli così poco tempo dopo un altro episodio simile - un'estensione del browser che rubava credenziali e le impacchettava in gem apparentemente innocui - dice qualcosa che forse dovremmo prendere più sul serio: la fiducia che riponiamo ogni giorno in migliaia di librerie open source scaricate senza pensarci due volte sta diventando il vero anello debole della sicurezza informatica. E più un ecosistema cresce, più diventa comodo, meno viene messo in discussione.