La lezione che impariamo dalla compromissione di PyTorch

Durante le festività natalizie, momento in cui l’igiene informatica è vistosamente più blanda del resto dell’anno, attori malevoli hanno approfittato di questa situazione per compromettere uno degli elementi chiave per la ricerca sull’intelligenza artificiale: PyTorch che, in questo caso ha poche “colpe”. Il problema delle dipendenze è qualcosa di più grande.

Dipendenza malevola in PyTorch versione nightly

Di recente, gli attori delle minacce hanno compromesso un repository di codice in PyPI, il più grande Indice di Pacchetti Python (quelli che installiamo nei nostri progetti con l’installer pip, per intenderci), finendo per installare una dipendenza dannosa sul progetto PyTorch.

Gli hacker hanno creato un pacchetto Python chiamato torchtriton su PyPI, che è identico al nome di un pacchetto nel sistema PyTorch stesso, solo che gli impatti sono altamente malevoli:

  • Il pacchetto contiene l’eseguibile del malware Triton che si rivolge specificamente agli ambienti Linux a 64 bit.
  • Il malware ruba dati sensibili, incluse informazioni di sistema come nome host, nome utente, configurazione Git locale, chiavi SSH e i primi 1.000 altri file nella home directory di dimensioni inferiori a 100 KB.
  • Invece di esfiltrare i dati, il malware li comprime, li codifica in una sequenza di quelli che sembrano nomi di server appartenenti a un nome di dominio (h4ck[.]cfd) controllato dai criminali.
  • I server compromessi perdono le chiavi di accesso con il pretesto di una semplice ricerca diretta al server DNS ufficiale wheezy[.]io.

Il team di PyTorch avverte coloro che hanno scaricato e installato PyTorch-nightly su Linux tramite pip tra il 25 dicembre 2022 e il 30 dicembre 2022, dovrebbero disinstallarlo.

Dovrebbe essere sostituito con binari nightly datati 30 dicembre 2022 e successivi.

“I pacchetti PyTorch-nightly Linux installati tramite pip durante quel periodo hanno installato una dipendenza, torchtriton, che è stata compromessa nel repository di codice Python Package Index (PyPI) e ha eseguito un binario dannoso”, dice l’avviso. “Questo è ciò che è noto come attacco alla catena di approvvigionamento e influisce direttamente sulle dipendenze per i pacchetti che sono ospitati su indici di pacchetti pubblici”.

Gli utenti dei pacchetti stabili di PyTorch non sono interessati da questo problema.

Il problema delle dipendenze

PyTorch, utilizzando la dipendenza torchtriton da progetto, non ha molte altre responsabilità su questo grave incidente informatico. In effetti l’unica colpa è appunto, quella di utilizzare da progetto questa dipendenza. Il problema risiede infatti a monte, la compromissione è avvenuta nel repository di pacchetti Python, il più importante e famoso al mondo, calando di conseguenza poi il problema, direttamente al progetto di PyTorch (così come a qualsiasi altro progetto che utilizzi questa dipendenza).

Invito a riflettere sul meccanismo delle dipendenze: in pratica, qualsiasi progetto mettiamo in piedi, a meno che ogni volta non si voglia reinventare la ruota, deve ereditare delle dipendenze terze. In quel momento e in qualsiasi altro momento della vita del nostro progetto, non possiamo sapere cosa succeda nel dietro le quinte delle dipendenze che stiamo utilizzando. Questo vale per tantissimi progetti software che utilizziamo quotidianamente e per tantissime altre dipendenze che ognuno di questi software sfrutta.

Utilizzare solo le versioni stable sia delle dipendenze che dei progetti finali che installiamo, potrebbe essere una mitigazione valida, anche se non garantirà nemmeno questo di evitare di incorrere in problemi come questi.

Oltre al fatto di aver rimosso il pacchetto dannoso torchtriton, il gestore PyPI sta cercando di migliorare la sicurezza.

La scorsa estate infatti, ha iniziato a richiedere l’implementazione dell’autenticazione a due fattori (2FA) per i progetti ritenuti critici, definiti come qualsiasi progetto nell’uno per cento più alto dei download degli ultimi sei mesi. I manutentori idonei di progetti critici possono ottenere due chiavi di sicurezza gratuite per configurare 2FA.

Dietro PyTorch c’è Meta

Dal 2016, quando Facebook ha cominciato a collaborare con la comunità IA per creare il framework PyTorch per la ricerca sull’intelligenza artificiale, migliaia di collaboratori hanno sviluppato più di 150.000 progetti utilizzando PyTorch, che è diventata così una delle piattaforme leader per la ricerca e la produzione in tutta la comunità AI. A settembre 2022, Mark Zuckerberg ha annunciato che il progetto PyTorch si trasformerà nella fondazione senza scopo di lucro PyTorch Foundation che farà parte della Linux Foundation, un consorzio tecnologico la cui missione principale è lo sviluppo collaborativo di software open source.