PyTorch: toolkit di Machine Learning proiettato da Natale a Capodanno PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

PyTorch: toolkit di Machine Learning utilizzato da Natale a Capodanno

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 e pip 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/.gitconfige 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

[Contenuto incorporato]

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.

Il pacchetto PyPI canaglia dopo l'intervento di PyTorch.

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 sottodirectory triton/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 2385b294­89cd9e35­f92c0727­80f903ae­2e517ed4­22eae672­46ae50a5cc738a0e. 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!


Timestamp:

Di più da Sicurezza nuda