Blizzard Authenticator Flow [ITA]

[LinK] WoW-Europe Forums discussion
[LinK] English Version (Potete commentare qui)

Video, o non è mai successo (cit.)

Si, sono giunto alla conclusione di non poter più tenere la mia bocca chiusa. La Blizzard è probabilmente ancora impegnata con l’espansione, e scommetto tutto quel che ho che non spenderanno del tempo nel risolvere un problema di sicurezza di cui nessuno è a conoscenza. Il che mi lascia due opzioni: lavarmene le mani o informare la gente e dir loro come prevenire una tragedia simile (mi è successo, so come ci si sente).

Prima di tutto, iniziamo con l’e-Mail che ho inviato alla Blizzard:

Reference: http://forums.wow-europe.com/thread.html?topicId=6365388840&sid=1

So, basically I don’t know how you could ever mess up a thing like this, but ok, let’s explain.

Once you fire up the Blizzard Authenticator, you paste it in the login screen and that’s it, the number is saved and it can’t be used anymore. Also, if not used within a certain time will eventually expire. And we all know this. The problem is, how did you implement this?

Once you use the code, it gets saved to the account. And that’s what screws up the security. As long as you have a single Authenticator for a single account, you’re safe, but when you start to use a single Authenticator (as you all suggested aswell) for multiple accounts, you are screwed. Example:

Account 1, generated code 123321, I log in and write the code down.
10 minutes later, Account 2, another generated code 321123, I log in.
20 minutes later, Account 3, 123321 or 321123 doesnt matter, I log in.
Or Account 1 with 321123, or Account 2 with 123321 for the matter. It doesn’t matter, they all work.

This is where your problem relies. You didn’t do the right thing. You didn’t have to save the generated codes by account, but by Key ID instead. If you don’t all the valid keys generated (and logged) for an account, may be used on the other account to. Authenticator beated by a keylogger, that’s the most ironic thing ever.

Here’s the deal: when a user logs in check the Authenticator ID saved with his account, and then in a new table save the code by AuthID, and not in the account data. This will probably increase collisions, but better having collisions than hacked accounts, don’t you think?

Looking for an early reply.

Sincerely yours,
Skizo

Ora, se avete letto e capito penserete “ok, quindi ti hanno risposto, no?”. Estratto dalla risposta automatica:

A causa dei grossi volumi di email ricevuti dalla sezione Hacks & Anti-Pirateria non è sempre possibile per noi rispondere individualmente a tutte le segnalazioni e questa potrebbe essere l’unica email che ricevete da noi riguardo la faccenda.

Come potete capire, la mia unica opzione era di aspettare una e-Mail che potrebbe non arrivare mai nel terrore che per il momento in cui arrivi sia già troppo tardi, o rilasciare le informazioni. Col sangue da giornalista che mi ritrovo, non potevo fare nulla di meno di ciò che sto facendo, ed ho aspettato anche troppo a lungo per farlo.

Così, in breve, cos’ha tutto questo a che fare con me? Avanti con le spiegazioni.

Le basi del Blizzard Authenticator

Blizzard Authenticator, così come tutti gli altri generatori di chiavi dello stesso tipo, funziona così: generate un codice, usate un codice, diventa impossibile usare lo stesso codice di nuovo. Questo previene gli hacks subiti a causa di keyloggers, perché anche se gli hacker sono in possesso del vostro username e della vostra password, non possono passare l’ultimo test, che è una chiave unica generata a singolo uso. Un sistema comune anche a diverse banche che effettuano transazioni online. Il BA fa la stessa cosa. Il problema sta nel come è stato realizzato.

Se avete un singolo account ed un singolo BA, siete al sicuro. Dormite tranquilli. Se invece avete più di un account come me, non vi è concesso dormire. Dov’è che si è infranta la sicurezza? Se non l’avete capito dall’e-Mail qui sopra, ve lo spiegherò in brevi termini:

  • Avete due account
  • Generate il codice 123456 per loggarvi con l’Account1
  • Il codice 123456 viene salvato per l’Account1
  • Dato che l’Account1 e l’Account2 condividono lo stesso BA ma il codice 123456 non è stato salvato per l’Account2, allora potrete usare il codice 123456 per il vostro altro account, infrangendo così la sicurezza di una chiave a singolo utilizzo.

Questo significa che se gli hackers diventano abbastanza veloci, mentre loggate col vostro account principale, potrebbero mandarsi il codice che avete usato e nel frattempo loggare con l’altro vostro account. Certo, richiede del tempismo e buone capacità, ma non credo che sia una ragione per rilassarsi.

Ci sono diverse soluzioni per questo comunque. La prima sarebbe far fare alla Blizzard un fix nelle loro tabelle. Dovrebbe funzionare così:

  • Avete due account
  • Generate il codice 123456 per loggarvi con l’Account1
  • L’Account1 usa il BA1
  • Il codice 123456 viene salvato per il BA1
  • L’Account2 usa anch’esso il BA1, per questo il codice 123456 non può essere utilizzato di nuovo per loggarsi con un altro account, così come il codice 654321 generato per loggarsi con l’Account2 non può essere utilizzato per loggarsi con l’Account1.
  • Faccia sorridente qui 🙂

Dato che è alquanto improbabile che succede in un prossimo futuro (sapete, corporazioni multinazionali…) sono arrivato a trovare un paio di suggerimenti che potreste usare per risolvere il problema la maggior parte delle volte (ci sono alcune eccezioni di cui io stesso sono a conoscenza, so che sono soltanto delle soluzioni temporanee).

  • Se avete molteplici account e molteplici Authenticators (proprio come me), vi suggerisco di unbindare (rimuovere il collegamento) tra il vostro BA e tutti gli account che possedete tranne uno, e di usare gli altri authenticators per ogni account. Un BA per un account, torna ad essere 100% sicuro.
  • Se invece non siete propensi a farlo (proprio come me) potete usare un piccolo giro durante il login. Diciamo che volete loggare col vostro Account1. Generate il codice, loggate con l’Account2, sloggate, riloggate con l’Account1 e lo stesso codice. Siete al sicuro.
  • Scocciate la Blizzard finché non risolvono il problema (ehi, scherzo). (No, forse no).
  • Pregate Dio se ci credete.

Non c’è molto altro da fare. Personalmente io uso il secondo metodo nella lista.

L’unica cosa che vi chiedo a questo punto è di passar parola. L’unico modo per essere sicuri a questo mondo è sapere cosa ci circonda. Se sapete dove il problema risiede allora sapete come risolverlo. Allo stesso tempo se la gente sa dove risiede la vulnerabilità, allora sanno come proteggere se stessi.

Nella speranza che non sia già troppo tardi.