PyTorch è uno dei toolkit di apprendimento automatico più popolari e ampiamente utilizzati in circolazione.
(Non saremo attratti da dove si trova nella classifica dell'intelligenza artificiale - come con molti strumenti open source ampiamente utilizzati in un campo competitivo, la risposta sembra dipendere da chi chiedi e da quale toolkit usano se stessi.)
Originariamente sviluppato e rilasciato come progetto open source da Facebook, ora Meta, il software è stato consegnato alla Linux Foundation alla fine del 2022, che ora lo gestisce sotto l'egida della PyTorch Foundation.
Purtroppo, il progetto è stato compromesso mediante un attacco alla catena di approvvigionamento durante le festività natalizie alla fine del 2022, tra il giorno di Natale [2022-12-25] e il giorno prima di Capodanno [2022-12-30].
Gli aggressori hanno creato malevolmente un pacchetto Python chiamato torchtriton
su PyPI, il popolare repository Python Package Index.
Il nome torchtriton
è stato scelto in modo che corrispondesse al nome di un pacchetto nel sistema PyTorch stesso, portando a una situazione pericolosa spiegato dal team di PyTorch (il corsivo è nostro) come segue:
[A] pacchetto di dipendenza dannoso (
torchtriton
) […] è stato caricato nel repository di codice Python Package Index (PyPI) con lo stesso nome di pacchetto di quello che inviamo nell'indice dei pacchetti notturni PyTorch. Poiché l'indice PyPI ha la precedenza, questo pacchetto dannoso veniva installato al posto della versione dal nostro repository ufficiale. Questo design consente a qualcuno di registrare un pacchetto con lo stesso nome di uno che esiste in un indice di terze parti epip
installerà la loro versione per impostazione predefinita.
Il programma pip
, a proposito, era conosciuto come pyinstall
, ed è apparentemente uno scherzo ricorsivo che è l'abbreviazione di pip installs packages
. Nonostante il suo nome originale, non è per l'installazione di Python stesso: è il modo standard per gli utenti Python di gestire librerie software e applicazioni scritte in Python, come PyTorch e molti altri strumenti popolari.
Pwned da un trucco della catena di approvvigionamento
Chiunque sia stato abbastanza sfortunato da installare la versione pwned di PyTorch durante il periodo di pericolo quasi certamente si è ritrovato con malware per il furto di dati impiantato sul proprio computer.
Secondo PyTorch, breve ma utile analisi del malware, gli aggressori hanno rubato alcuni, la maggior parte o tutti i seguenti dati significativi dai sistemi infetti:
- Informazioni di sistema, inclusi nome host, nome utente, utenti noti sul sistema e contenuto di tutte le variabili di ambiente del sistema. Le variabili di ambiente sono un modo per fornire dati di input di sola memoria a cui i programmi possono accedere all'avvio, spesso inclusi dati che non dovrebbero essere salvati su disco, come chiavi crittografiche e token di autenticazione che danno accesso a servizi basati su cloud. Da cui viene estratto l'elenco degli utenti conosciuti
/etc/passwd
, che, fortunatamente, in realtà non contiene password o hash delle password. - La tua configurazione Git locale. Questo è rubato da
$HOME/.gitconfig
e in genere contiene informazioni utili sulla configurazione personale di chiunque utilizzi il popolare sistema di gestione del codice sorgente Git. - Le tue chiavi SSH. Questi vengono rubati dalla directory
$HOME/.ssh
. Le chiavi SSH in genere includono le chiavi private utilizzate per connettersi in modo sicuro tramite SSH (secure shell) o utilizzando SCP (secure copy) ad altri server sulle proprie reti o nel cloud. Molti sviluppatori mantengono almeno alcune delle loro chiavi private non crittografate, in modo che gli script e gli strumenti software che utilizzano possano connettersi automaticamente ai sistemi remoti senza fermarsi a chiedere ogni volta una password o una chiave di sicurezza hardware. - I primi 1000 altri file nella tua home directory hanno una dimensione inferiore a 100 kilobyte. La descrizione del malware PyTorch non dice come viene calcolato il "primo elenco di 1000 file". Il contenuto e l'ordine degli elenchi di file dipende dal fatto che l'elenco sia ordinato alfabeticamente; se le sottodirectory vengono visitate prima, durante o dopo l'elaborazione dei file in qualsiasi directory; se i file nascosti sono inclusi; e se viene utilizzata una casualità nel codice che si fa strada attraverso le directory. Probabilmente dovresti presumere che qualsiasi file al di sotto della soglia di dimensione potrebbe essere quello che finisce per essere rubato.
A questo punto, citeremo la buona notizia: solo coloro che recuperavano la cosiddetta versione "notturna", o sperimentale, del software erano a rischio. (Il nome "nightly" deriva dal fatto che è l'ultima build, in genere creata automaticamente alla fine di ogni giornata lavorativa.)
La maggior parte degli utenti di PyTorch probabilmente si attaccherà la cosiddetta versione “stabile”, che non è stata colpita da questo attacco.
Inoltre, dal rapporto di PyTorch, sembra che il file eseguibile del malware Triton mirava specificamente agli ambienti Linux a 64 bit.
Supponiamo quindi che questo programma dannoso venga eseguito solo su computer Windows se è stato installato il sottosistema Windows per Linux (WSL).
Non dimenticare, tuttavia, che le persone che hanno maggiori probabilità di installare "nightlies" regolari includono sviluppatori di PyTorch stesso o di applicazioni che lo utilizzano, forse inclusi i tuoi sviluppatori interni, che potrebbero avere accesso basato su chiave privata alla build aziendale , server di test e di produzione.
Furto di dati DNS
Curiosamente, il malware Triton non esfiltra i suoi dati (il termine gergale militaristico che l'industria della sicurezza informatica ama usare invece di rubare or copiare illegalmente) utilizzando HTTP, HTTPS, SSH o qualsiasi altro protocollo di alto livello.
Invece, crittografa e codifica i dati che vuole rubare in una sequenza di quelli che sembrano "nomi di server" che appartengono a un nome di dominio controllato dai criminali.
Ciò significa che, effettuando una sequenza di ricerche DNS, i truffatori possono estrarre una piccola quantità di dati in ogni richiesta falsa.
Questo è lo stesso tipo di trucco usato da Gli hacker di Log4Shell alla fine del 2021, che ha fatto trapelare le chiavi di crittografia eseguendo ricerche DNS per "server" con "nomi" che erano appena il valore della tua chiave di accesso AWS segreta, saccheggiata da una variabile di ambiente in memoria.
Quindi quella che sembrava una ricerca DNS innocente, anche se inutile, per un "server" come S3CR3TPA55W0RD.DODGY.EXAMPLE
perderebbe silenziosamente la tua chiave di accesso con il pretesto di una semplice ricerca indirizzata al server DNS ufficiale elencato per il DODGY.EXAMPLE
dominio.
DEMO LIVE DI LOG4SHELL CHE SPIEGA L'ESFILTRAZIONE DEI DATI TRAMITE DNS
Se non riesci a leggere chiaramente il testo qui, prova a utilizzare la modalità Schermo intero o guarda direttamente su Youtube.
Fai clic sull'ingranaggio nel video player per velocizzare la riproduzione o per attivare i sottotitoli.
Se i truffatori possiedono il dominio DODGY.EXAMPLE
, possono dire al mondo a quale server DNS connettersi quando eseguono quelle ricerche.
Ancora più importante, anche le reti che filtrano rigorosamente le connessioni di rete basate su TCP utilizzando HTTP, SSH e altri protocolli di condivisione dei dati di alto livello...
…a volte non filtrano affatto le connessioni di rete basate su UDP utilizzate per le ricerche DNS.
L'unico aspetto negativo per i truffatori è che le richieste DNS hanno una dimensione piuttosto limitata.
I nomi dei singoli server sono limitati a 64 caratteri da un set di 37 (AZ, 0-9 e il trattino o il trattino) e molte reti limitano i singoli pacchetti DNS, comprese tutte le richieste, le intestazioni e i metadati allegati, a soli 512 byte ciascuno.
Supponiamo che sia per questo che il malware in questo caso ha iniziato cercando le tue chiavi private, quindi si è limitato a un massimo di 1000 file, ciascuno più piccolo di 100,000 byte.
In questo modo, i truffatori riescono a rubare molti dati privati, in particolare comprese le chiavi di accesso al server, senza generare un numero ingestibile di ricerche DNS.
Un numero insolitamente elevato di osservatori DNS potrebbe essere notato per ragioni operative di routine, anche in assenza di qualsiasi controllo applicato specificamente per scopi di sicurezza informatica.
Cosa fare?
PyTorch ha già preso provvedimenti per arrestare questo attacco, quindi se non sei ancora stato colpito, quasi sicuramente non verrai colpito ora, perché il malintenzionato torchtriton
package su PyPI è stato sostituito con un deliberatamente "dud", pacchetto vuoto con lo stesso nome.
Ciò significa che qualsiasi persona o qualsiasi software che ha tentato di installare torchtriton
da PyPI dopo il 2022-12-30T08:38:06Z, sia per caso che per progettazione, non riceverebbe il malware.
PyTorch ha pubblicato un pratico elenco di IoC, o indicatori di compromesso, che puoi cercare nella tua rete.
Ricorda, come accennato in precedenza, che anche se quasi tutti i tuoi utenti si attengono alla versione "stabile", che non è stata interessata da questo attacco, potresti avere sviluppatori o appassionati che sperimentano "nightlies", anche se usano la versione stabile anche il rilascio.
Secondo PyTorch:
- Il malware viene installato con il nome del file
triton
. Per impostazione predefinita, ti aspetteresti di trovarlo nella sottodirectorytriton/runtime
nella directory dei pacchetti del tuo sito Python. Dato che i nomi dei file da soli sono indicatori di malware deboli, tuttavia, considera la presenza di questo file come una prova di pericolo; non trattare la sua assenza come un cessato allarme. - Il malware in questo particolare attacco ha la somma SHA256
2385b29489cd9e35f92c072780f903ae2e517ed422eae67246ae50a5cc738a0e
. Ancora una volta, il malware potrebbe essere facilmente ricompilato per produrre un checksum diverso, quindi l'assenza di questo file non è un segno di salute definitiva, ma puoi trattare la sua presenza come un segno di infezione. - Le ricerche DNS utilizzate per il furto di dati terminavano con il nome di dominio
H4CK.CFD
. Se disponi di registri di rete che registrano le ricerche DNS per nome, puoi cercare questa stringa di testo come prova che i dati segreti sono trapelati. - Apparentemente le risposte DNS dannose sono arrivate a, e le risposte, se ce ne sono state, provenivano da un server DNS chiamato
WHEEZY.IO
. Al momento, non siamo in grado di trovare alcun numero IP associato a quel servizio e PyTorch non ha fornito alcun dato IP che collegherebbe il traffico DNS a questo malware, quindi non siamo sicuri di quanto siano utili queste informazioni per la caccia alle minacce al momento [2023-01-01T21:05:00Z].
Fortunatamente, supponiamo che la maggior parte degli utenti di PyTorch non ne sarà stata colpita, perché non usano le build notturne o perché non hanno lavorato durante il periodo di vacanza, o entrambi.
Ma se sei un appassionato di PyTorch che armeggia con le build notturne e se hai lavorato durante le vacanze, allora anche se non riesci a trovare alcuna prova chiara che sei stato compromesso...
… potresti comunque prendere in considerazione la possibilità di generare nuove coppie di chiavi SSH come precauzione e aggiornare le chiavi pubbliche che hai caricato sui vari server a cui accedi tramite SSH.
Se sospetti di essere stato compromesso, ovviamente, non rimandare gli aggiornamenti delle chiavi SSH: se non li hai già fatti, falli subito!
- AI
- intelligenza artificiale
- blockchain
- geniale
- portafogli di criptovaluta
- cryptoexchange
- sicurezza informatica
- i criminali informatici
- Cybersecurity
- furto di dati
- Dipartimento di Sicurezza Nazionale
- portafogli digitali
- firewall
- Kaspersky
- linux
- machine learning
- il malware
- Mcafee
- ML
- Sicurezza nuda
- NextBLOC
- Platone
- platone ai
- Platone Data Intelligence
- Gioco di Platone
- PlatoneDati
- gioco di plato
- pytorch
- tritone
- VPN
- sicurezza del sito Web
- zefiro