Perché Fineco ha un problema di sicurezza informatica

Perché Fineco ha un problema di sicurezza informatica

Ieri 12 Novembre, l’utente Giorgio Bonfiglio (@g_bonfiglio) ha pubblicato una serie di tweet rivolti alla Fineco SPA, riportando quella che sembra essere una vera e propria falla di progettazione nel sistema di sicurezza della banca.

Questi moniti riguardano un aspetto non indifferente del mondo dell’e-banking, ossia la sicurezza delle password di accesso dei clienti:

Già dal primo di una serie di tweet, si possono notare due punti principali delle discutibili scelte di Fineco nel limitare la scelta delle password:

  • Le password sono limitate a 8 caratteri di lunghezza;
  • Per verificare la robustezza della propria password si suggerisce di cercarla su Google, indicando che se si trovassero meno di 10 risultati, la password sarebbe sicura;

Non si dovrebbe perdere troppo tempo nel dire che 8 caratteri non è assolutamente una buona lunghezza per una password, anzi, dovrebbe trattarsi della lunghezza minima!

Quanto è facile crackare una password di 8 caratteri?

Ogni anno la velocità che i migliori computer in circolazione possono avere è quasi il doppio dell’anno precedente (vedi la curva di Moore), portandoci attualmente ad un livello di potenza tale che una password di 8 caratteri, indipendentemente dal tipo di caratteri utilizzati (maiuscole, minuscole, numeri e caratteri speciali), può essere “crackata” in tempi ridottissimi.

Dimostrazione di questo concetto è questo tweet, il quale riporta che con 8 schede grafiche NVIDIA di ultima generazione, il modello RTX 2080 base (i cui prezzi si aggirano intorno ai 600/750€ l’una) è possibile crackare con metodo brute force qualsiasi password composta da 8 caratteri in poco più di 2 ore e mezzo:

Inutile dire che con il modello ultra-potenziato delle schede grafiche citate, i tempi si ridurrebbero notevolmente.

Perché è sbagliato limitare la password a 8 caratteri?

Come giustamente degli utenti sotto al tweet principale hanno fatto notare, imporre un limite di creazione della password può essere un chiaro segno di qualcosa ben più grave della poca robustezza della stessa.

Ciò può far pensare, infatti, che le password vengano salvate nel database in chiaro!

Motivo di queste supposizioni è il fatto che, in un database, i campi di una tabella devono avere una lunghezza massima stabilita per motivi di sicurezza e consistenza del database stesso.

A livello generale non è sbagliato progettare un database così, ma quando si tratta di tutelare la segretezza delle informazioni, deve essere considerato anche l’offuscamento delle informazioni inserite nei campi.

A cosa mi riferisco?

Per salvare le password in una maniera convenzionale, si usa fare l’hash delle informazioni sensibili che devono essere inviate al server.

“Fare l’hash” di una stringa significa applicare una funzione matematica ai caratteri inseriti, restituendo come output della funzione una stringa da cui non sarà possibile risalire all’informazione iniziale.

Esempio su Linux:

$ md5sum <<< "Password1234"63c8184c76c1594aef6a57c295cb62cc

Ho applicato l’algoritmo di hash MD5 alla stringa “Password1234” e ho avuto come risultato “63c8184c76c1594aef6a57c295cb62cc”, una stringa apparentemente casuale da cui non è possibile risalire all’informazione iniziale.

Particolarità delle funzioni hash è il fatto che esse restituiscano sempre la stessa quantità di caratteri, indipendentemente dall’informazione inserita, che essa sia un file o una stringa.

Altri esempi:

$ md5sum <<< "thevirusdoublezero.com" 07af6423a81c8ab18f26e06ce97099d4
$ md5sum <<< "Fineco" 9029aa4060fa4a2af3bb036a7995eaa5
$ md5sum <<< "FINECO" 50d660be9ee93fce4f74ecd03f0031a0

Da notare come le due stringhe “Fineco” e “FINECO” abbiano restituito due output della funzione hash totalmente differenti l’uno dall’altro.

Le funzioni hash servono a verificare che un’informazione sia arrivata integra e uguale a quanto il sistema o programma si aspetta, occupandosi di uno dei tre aspetti della sicurezza delle informazioni, ossia l’integrità.

Ci sono altri algoritmi di hash, che producono output di lunghezze differenti, come lo SHA256, che produce una stringa lunga sempre 64 caratteri, o lo SHA1 che ne produce 40.
Nel caso di MD5, l’output sarà sempre di 32 caratteri.

Dove voglio arrivare con questo?

Se alle password venisse applicata una funzione hash di qualsiasi tipo, non ci sarebbe bisogno di limitare la lunghezza della password stessa, in quanto le funzioni di hashing restituiscono sempre la stessa quantità di caratteri, indipendentemente dalla lunghezza dell’informazione data in input.

Avendo limitato la lunghezza delle password, perciò, si può facilmente intuire che Fineco salvi le password dei clienti in chiaro.

…oppure stanno utilizzando un sistema obsoleto?

Come ho fatto presente nel thread di Bonfiglio, ci sarebbe tuttavia un’altra possibilità, ossia quella che Fineco stia ancora utilizzando un sistema IBM AIX datato 2002 (versioni 5.2 e 5.3 del sistema) o qualcosa di analogo, la cui funzione di hash, crypt(), aveva una limitazione di 8 caratteri come input.

Fonte, IBM stessa:

Suggerimenti poco pratici

A condimento del limite degli 8 caratteri, Fineco si prende il disturbo di “suggerire” quali meccanismi facilitino il ricordarsi una password complessa, come per esempio associare delle frasi alla propria password, o mischiare lettere e numeri grazie anche all’uso di omografia.

Di per sé questi non sono concetti sbagliati per aiutarsi a ricordare una password lunga, ma nel caso di 8 caratteri, questi perdono davvero di significato!

Esempio di frase:

  • “Nel mezzo di cammin” diventa “nmdc1234”;

Esempio di omografia:

  • “Colore” diventa “Co1or3” (la lettera “elle” diventa il numero “1” e la “e” diventa il numero “3”);

Dulcis in fundo, viene suggerito di cercare la propria password su Google, per assicurarsi che escano meno di 10 risultati.

A parte che, nel caso in cui la propria password fosse sicura, non dovrebbero uscire risultati a prescindere, ma ci sono diversi strumenti che permettono la verifica della robustezza e sicurezza della propria password.

Per dirne un paio:

HOW SECURE IS MY PASSWORD?

https://howsecureismypassword.net/

“How Secure is my Password?” è un servizio che calcola, con funzioni matematiche che non sto a spiegare, quanto impiegherebbero dei presunti hacker per “indovinare” la vostra password andando “a tentativi”.

Have I Been PWNED?

https://haveibeenpwned.com/Passwords

“Have I Been PWNED?”, che potremmo tradurre più o meno precisamente in “Sono stato posseduto?”, è un servizio gestito e mantenuto da Troy Hunt, che permette di verificare la presenza del proprio indirizzo di posta elettronica all’interno di data breach noti.

Il servizio offre anche un controllo sulla password inserita nel box, verificandone la presenza all’interno del proprio database.
Se la password digitata è comparsa all’interno di un data breach, allora verrà mostrato un avviso sullo schermo.
Se la password inserita non è presente nel database del sito, sarà un segno che la propria password non è stata ancora trovata in database esposti o data breach noti, ma ciò non vuol dire che sia sicura!

Di seguito, qualche esempio della robustezza delle password prese in esempio.

Scrivendo la parola password:

Oltre a dirci l’ovvio, ossia che la password “password” verrebbe indovinata “istantaneamente”, ci dice anche i motivi, che sono:

  • È comune, è tra le top 5 più utilizzate;
  • È solo una parola, facilmente ottenibile anche da un dizionario di lingua;
  • È corta, considerando come standard i 15/16 caratteri;
  • Non varia, sono solo caratteri alfanumerici;

Proviamo con Pa$$w0rd:

Questa volta ci sono caratteri alfanumerici maiuscoli e minuscoli, numeri e caratteri speciali, cosa potrebbe andare storto?

  • La password è corta

Cadiamo sempre sul discorso dei primi paragrafi: avere una password corta non è più sicuro, non importa quanto sia complessa.

Proviamo con la mega password proposta da Fineco, colo55rE:

Accidenti, Fineco non avrebbe superato il controllo di sicurezza…

La password Colo55rE risulta essere sia corta lunga 8 caratteri, sia priva di varietà, non avendo simboli, dando ad un malintenzionato soltanto 2 ore di tempo per poterla indovinare.

Proviamo la seconda, nmdc1234:

Peggio di prima… 1 minuto per essere trovata!

Si tratta di una password corta, composta da una parola e da una sequenza di numeri (due fattori che riducono sostanzialmente i tempi di attacco, perché si potrebbe indovinare combinando parole di un dizionario e sequenze di numeri decimali) e priva di simboli.

Provo a scrivere la password che uso io per fare il login su Google:

Non è di certo una gara.

Un utente scopre l’amara verità

Potreste pensare “ma se io mettessi una password più lunga di 8 caratteri?” come ha fatto @lellefood:

Secondo voi riuscirà a loggarsi anche solo scrivendo i primi 8 caratteri della propria password?

Guess what? Sì.

Non è la prima volta che ci sono problemi di sicurezza

Come fa notare l’utente @_0wl, Fineco non sembra essere nuova a questi problemi di sicurezza informatica.

Infatti, sembra che 10 anni fa Fineco avesse optato per un mix di HTTP e HTTPS per “motivi di performance”, cifrando esclusivamente il traffico che comprendesse l’invio di password.

Bonfiglio aggiunge (ahimè) che loro furono tra gli ultimi siti di e-banking ad implementare una soluzione 100% HTTPS…

Ma chi ha fatto questo sistema?

Se si cerca su Google la super password colo55rE, si troveranno due risultati interessanti:

La prima pagina è un articolo di un blog risalente a Settembre 2013, mentre la seconda è la pagina di riepilogo della sicurezza di Fineco Bank.

Diamo un’occhiata al blog.

http://ischiainvest.blogspot.com/2013/09/le-regole-di-sicurezza-per-chi-ha-un.html

Sono le esatte parole che compaiono nella pagina di creazione della password di Fineco!

Fineco...
... e il blog di Vincenzo Cuomo

Quindi Fineco avrebbe “rubato” questa esaustiva guida sul come creare una password robusta dall’articolo di un certo Vincenzo Cuomo datato 2013?

Cerchiamo qualche altra informazione…

Evidentemente no.

Questo Vincenzo Cuomo è/è stato un consulente finanziario presso FinecoBank.

Non si può escludere, date le coincidenze con il suo vecchio blog, che egli sia stato coinvolto anche nella progettazione delle policy di sicurezza del sistema.

Mostra i Commenti