TL;DR – la data di nascita o il numero di previdenza sociale non è una buona idea per garantire l'accesso ai dati.
Puzzle : qual è la differenza tra le due immagini qui sotto?
Ma cominciamo dall'inizio. Sfortunatamente, come spesso accade nel mondo IT, la convenienza non va di pari passo con la sicurezza. Penso che questa volta fosse simile. Tuttavia, esiste una serie di dati sensibili in cui non è necessario scendere a compromessi. Tali dati includono, ma non si limitano a, informazioni sulla nostra salute.
Allarmato da un messaggio del mio amico Kacpra su come viene concesso l'accesso ai risultati di laboratorio, ho deciso di indagare più in dettaglio sulla soluzione responsabile di questo.
Come puoi vedere nella grafica sopra – per accedere al tuo risultato attraverso la funzionalità di "accesso semplificato" hai bisogno di due informazioni:
- ID ordine, dove i numeri d'ordine successivi sono in aumento;
- ordinare la data di nascita della persona [day=X&month=X&year=X]
In base a determinate ipotesi, il numero di combinazioni di date di nascita che possono essere assegnate a un ID ordine è solo di circa 19.000 combinazioni. Non è difficile indovinare che non è un grosso problema generare tutte queste combinazioni e verificare se corrispondono al numero dell'ordine.
Si è scoperto che le mie ipotesi erano corrette e dopo diverse centinaia di enumerazioni sono riuscite a abbinare i dati di accesso:
Ciò ha permesso informazioni sensibili sui pazienti come:
- nome;
- nome;
- pesel;
- data di nascita;
- indirizzo di residenza;
- il risultato delle prove;
Un altro esempio di tentativo di enumerazione riuscito:
Non appena ho confermato la mia suscettibilità, ho segnalato questo errore al software responsabile, insieme alle raccomandazioni di riparazione:
Cosa fare, come vivere?
Una delle misure di sicurezza più comuni contro questo tipo di attacchi è implementare captcha. Dopo diversi tentativi (ad esempio tre) falliti di accedere ai dati dell'ordine, all'utente dell'applicazione verrà chiesto di riscrivere il codice captcha visualizzato. Si prega di notare, tuttavia, che l'implementazione di tale meccanismo è solo (o fino a quando) un rallentamento dell'aggressore, che nei casi più semplici sarà in grado di accarezzare ulteriormente la data di nascita con scanner OCR o servizi di lettura captcha dedicati.
Una caratteristica di sicurezza migliore e consigliata è quella di accedere ai risultati dell'ordine attraverso una password casuale sufficientemente lungache arriverà al numero di telefono del cliente.
Fortunatamente, il bug è stato risolto abbastanza rapidamente implementando il meccanismo reCAPTCHA da google: