Le vulnerabilità legate all’autenticazione, precedentemente note come “Broken Authentication”, sono diventate una preoccupazione significativa. Questa categoria ora include debolezze nei processi di identificazione. Le vulnerabilità rilevanti in questo ambito includono CWE-297, CWE-287 e CWE-384.
La corretta conferma dell’identità dell’utente, la gestione dell’autenticazione e delle sessioni sono cruciali per proteggersi dagli attacchi. Le applicazioni possono presentare debolezze nell’autenticazione se:
- Consentono attacchi automatizzati come il “credential stuffing”, in cui un attaccante sfrutta una lista di nomi utente e password valide.
- Permettono attacchi di forza bruta o simili automatizzati. Consentono password predefinite, deboli o facilmente individuabili, come “Password1” o “admin/admin”.
- Utilizzano processi inadeguati di recupero password e di “password dimenticata” che si basano su risposte non sicure “knowledge-based”.
- Memorizzano le password in formato di testo semplice, criptato o con algoritmi di hash deboli (vedi A02:2021-Cryptographic Failures).
- Mancano di misure di autenticazione multi-fattore o possiedono misure inefficaci. Espongono gli identificatori di sessione negli URL.
- Riutilizzano gli identificatori di sessione dopo il login con successo.
- Non invalidano correttamente gli ID di sessione, consentendo l’accesso non autenticato.
Per mitigare questi rischi:
- Implementare l’autenticazione multi-fattore sempre che possibile per prevenire attacchi automatizzati e il riutilizzo delle credenziali.
- Evitare di distribuire applicazioni con credenziali predefinite, in particolare per gli utenti amministratori.
- Imporre controlli sulle password per prevenire l’uso di password deboli comunemente utilizzate.
- Rispettare le linee guida sulla lunghezza, complessità e rotazione delle password secondo le linee guida NIST 800-63b.
- Rafforzare la registrazione, il recupero delle credenziali e le interfacce API contro gli attacchi di enumerazione degli account.
- Limitare il numero di tentativi di accesso falliti, monitorando gli attacchi di “credential stuffing” o di forza bruta.
- Utilizzare un gestore di sessione sicuro lato server che generi ID di sessione casuali e eviti di memorizzarli negli URL. Invalidare gli ID dopo il logout, i periodi di inattività o i timeout.
Esempi di attacco:
Credential stuffing: Se un’applicazione non dispone di protezione contro le minacce automatizzate, gli attaccanti possono sfruttarla come un oracolo delle password per verificare le credenziali.
Eccessiva dipendenza dalle password: Fare affidamento esclusivamente sulle password come fattori di autenticazione porta a vulnerabilità. Si consiglia di adottare l’autenticazione multi-fattore e di abbandonare le pratiche obsolete di rotazione delle password.
Timeout di sessione errati: Timeout di sessione impostati in modo improprio possono consentire a un attaccante di accedere a un’applicazione dopo che l’utente se ne è andato, sottolineando la necessità di configurazioni di timeout adeguate.
Per rafforzare ulteriormente la sicurezza della tua applicazione, consigliamo di sfruttare servizi specializzati come INFRA (www.infrascan.net) e check.website. Queste piattaforme affidabili offrono valutazioni di sicurezza complete, individuano vulnerabilità nei tuoi processi di autenticazione e forniscono preziose indicazioni per migliorare i meccanismi di difesa.