Slack ammette di aver divulgato password con hash per tre mesi su PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Slack ammette di aver fatto trapelare password hash per tre mesi

Il popolare strumento di collaborazione Slack (da non confondere con il soprannome della distribuzione Linux più longeva al mondo, Slackware) ha appena riconosciuto una SNAFU di sicurezza informatica.

Secondo un notiziario intitolato Avviso sulla reimpostazione della password Slack, la società ha ammesso di aver inavvertitamente condiviso un eccesso di dati personali "quando gli utenti hanno creato o revocato un collegamento di invito condiviso per il proprio spazio di lavoro".

Dal 2022-04-17 al 2022-07-17 (supponiamo che entrambe le date siano inclusive), Slack ha affermato che i dati inviati ai destinatari di tali inviti includevano...

…aspettalo…

…il password con hash del mittente.

Cosa è andato storto?

L'avviso di sicurezza di Slack non spiega la violazione in modo molto chiaro, dicendo semplicemente questo “[t]la sua password con hash non era visibile a nessun client Slack; scoprirlo ha richiesto il monitoraggio attivo del traffico di rete crittografato proveniente dai server di Slack".

Immaginiamo che questo si traduca come segue:

“La maggior parte dei destinatari non si sarebbe accorta che i dati ricevuti includevano informazioni sulla password con hash, perché tali informazioni, sebbene incluse nei pacchetti di rete inviati, non sono mai state mostrate loro deliberatamente. E poiché i dati sono stati inviati tramite una connessione TLS, gli intercettatori non sarebbero stati in grado di annusarli lungo il percorso, perché non sarebbero stati decifrati fino a quando non avessero raggiunto l'altra estremità della connessione".

Questa è la buona notizia.

Ma i pacchetti di rete spesso includono dati che normalmente non vengono mai utilizzati o visti dai destinatari.

Le intestazioni HTTP ne sono un buon esempio, dato che sono pensate per essere istruzioni per il tuo browser, non dati da visualizzare nella pagina web che stai guardando.

E i dati irrilevanti o invisibili per gli utenti spesso finiscono comunque nei registri, specialmente nei registri del firewall, dove potrebbero essere conservati a tempo indeterminato.

Questa è la cattiva notizia.

Sale, hashish e stretch...

Secondo Slack, i dati trapelati non erano semplicemente hash, ma salato inoltre, il che significa che la password di ogni utente è stata prima mescolata insieme a dati casuali univoci per quell'utente prima che fosse applicata la funzione hash.

Gli hash sono essenzialmente funzioni matematiche "non reversibili" facili da calcolare in una direzione, ma non nell'altra.

Ad esempio, è facile calcolare che:

  SHA256("DUCK") = 7FB376..DEAD4B3AF008

Ma l'unico modo per lavorare "all'indietro". 7FB376..DEAD4B3AF008 a DUCK è lavorare in avanti da ogni possibile parola nel dizionario e vedi se qualcuno di loro esce con il valore che stai cercando di abbinare:

  SHA256("AARDVARK") = 5A9394..467731D0526A [X] SHA256("AARON") = C4DDDE..12E4CFE7B4FD [X] SHA256("ABACUS") = BEDDD8..1FE4DE25AAD7 [X] . . . 3400 saltato SHA256("BABBLE") = 70E837..CEAD4B1FA777 [X] SHA256("BADGER") = 946D0D..7B3073C1C094 [X] SHA256("BAGPIPE") = 359DBE..BE193FCCB111 [X] . . . 3200 ignorato SHA256("CABAL") = D78CF4..85BE02967565 [X] SHA256("CACHE") = C118F9..22F3269E7B32 [X] SHA256("CAGOULE") = 5EA530..5A26C5B56DCF [X] . . . 5400 saltato SHA256("DAB") = BBCC8E..E8B98CAB5128 [X] SHA256("DAFFODIL") = 75121D..D6401AB24A98 [X] SHA256("PERICOLO") = 0BD727..4C86037BB065 [X] . . . 3500 saltato SHA256("DUCK") =  7FB376..DEAD4B3AF008 [TROVATO!]

E includendo un salt per utente, che non deve essere segreto, ma semplicemente unico per ogni utente, ti assicuri che anche se due utenti scelgono la stessa password, non finiranno con lo stesso hash della password.

Puoi vedere l'effetto della salatura qui, quando cancelliamo la parola DUCK con tre diversi prefissi:

  SHA256("RANDOM1-DUCK") = E355DB..349E669BB9A2 SHA256("RANDOM2-DUCK") = 13D538..FEA0DC6DBB5C <-- La modifica di un solo byte di input produce un hash molto diverso SHA256("ARXXQ3H-DUCK") = 52AD92. .544208A19449

Ciò significa anche che gli aggressori non possono creare un elenco precalcolato di hash probabili o creare una tabella di calcoli hash parziali, nota come tavolo arcobaleno, che può accelerare il controllo dell'hash. (Avrebbero bisogno di una hashlist nuova di zecca, o di un set unico di tabelle arcobaleno, per ogni possibile sale.)

In altre parole, le password con hash e salate non possono essere violate banalmente per recuperare l'input originale, specialmente se la password originale era complessa e scelta casualmente.

Quello che Slack non ha detto è se l'avrebbero fatto teso anche gli hash della password e, in tal caso, come.

Stiramento è un termine gergale che significa ripetere il processo di hashing della password più e più volte, ad esempio, 100,000 volte, al fine di estendere il tempo necessario per provare un gruppo di parole del dizionario rispetto ad hash di password noti.

Se occorresse un secondo per inserire 100,000 parole del dizionario attraverso un semplice processo salt-and-hash, gli aggressori che conoscono l'hash della tua password potrebbero provare 6 milioni di parole e derivate del dizionario diverse ogni minuto, o prendere più di un miliardo di tentativi ogni tre ore .

D'altra parte, se i calcoli salt-and-hash fossero allungati per richiedere un secondo ciascuno, il ritardo di un secondo in più quando si tenta di accedere ti causerebbe poco o nessun fastidio...

...ma ridurrebbe un utente malintenzionato a soli 3600 tentativi all'ora, rendendo molto meno probabile che avrebbe abbastanza tempo per indovinare qualsiasi cosa tranne le password più ovvie.

Sono noti diversi algoritmi salt-hash-and-stretch di tutto rispetto, in particolare PBKDF2, bcrypt, scrypt ed Argon2, il tutto può essere regolato per aumentare il tempo necessario per provare a indovinare le singole password al fine di farlo ridurre la redditività dei cosiddetti dizionari e attacchi di forza bruta.

A attacco del dizionario significa che stai provando solo password probabili, come ogni parola da cui riesci a pensare aardvark a zymurgy, e poi arrendersi. UN attacco a forza bruta significa provare ogni possibile input, anche strani e impronunciabili, da AAA..AAAA a ZZZ..ZZZZ (o da 0000..000000 a FFFF..FFFFFF se pensi in termini esadecimali byte per byte).

Cosa fare?

Slack lo dice 1 su 200 dei suoi utenti (0.5%, presumibilmente in base ai record di quanti collegamenti di invito condivisi sono stati generati nel periodo di pericolo) e che costringerà quegli utenti a reimpostare le proprie password.

Qualche consiglio in più:

  • Se sei un utente Slack, potresti anche reimpostare la tua password anche se non sei stato avvisato dall'azienda. Quando un’azienda ammette di essere stata negligente con il proprio database di password divulgando gli hash, potresti anche presumere che il tuo sia stato interessato, anche se l’azienda pensa che non lo sia. Non appena cambi la password, rendi il vecchio hash inutilizzabile per gli aggressori.
  • Se non stai utilizzando un gestore di password, prendi in considerazione l'idea di acquistarne uno. Un gestore di password aiuta scegli le password corrette, assicurandoti così che la tua password finisca molto, molto in basso nell'elenco delle password che potrebbero essere violate in un incidente come questo. Gli aggressori in genere non possono eseguire un vero attacco di forza bruta, perché ci sono troppe password possibili da provare. Quindi, provano prima le password più probabili, come parole o ovvie combinazioni di parole e numeri, diventando più lunghe e complesse man mano che l'attacco procede. Un gestore di password può ricordare una password casuale di 20 caratteri con la stessa facilità con cui puoi ricordare il nome del tuo gatto.
  • Attiva 2FA se puoi. 2FA, o autenticazione a due fattori, significa che hai bisogno non solo della tua password per accedere, ma anche di un codice monouso che cambia ogni volta. Questi codici vengono generalmente inviati (o generati dal) tuo telefono cellulare e sono validi solo per pochi minuti ciascuno. Ciò significa che anche se i cybercriminali decidono di violare la tua password, da soli non è sufficiente che prendano il controllo del tuo account.
  • Scegli un algoritmo salt-hash-and-stretch affidabile quando gestisci tu stesso le password.. Nel malaugurato caso in cui il database delle tue password venga violato, sarai in grado di fornire ai tuoi clienti dettagli precisi sull'algoritmo e sulle impostazioni di sicurezza che hai utilizzato. Ciò aiuterà gli utenti ben informati a giudicare da soli quanto sia probabile che i loro hash rubati possano essere stati violati nel tempo a disposizione degli aggressori finora.

Timestamp:

Di più da Sicurezza nuda