Riassunti
Appunti universitari in formato Markdown da Obsidian.
Vulnerabilità dell’autenticazione
download Scarica MDL'autenticazione è il processo di verifica dell'identità di un utente o di un client. I siti web sono potenzialmente esposti a chiunque sia connesso a Internet. Ciò rende i meccanismi di autenticazione robusti parte integrante di un'efficace sicurezza Web.
Esistono tre tipi principali di autenticazione:
- qualcosa che sai, come una password o la risposta a una domanda di sicurezza (fattori di conoscenza);
- qualcosa che hai, ovvero un oggetto fisico come un telefono cellulare o un token di sicurezza (fattori di possesso);
- qualcosa che sei o fai, ad esempio, i tuoi dati biometrici o modelli di comportamento (fattori di inerenza).
Differenza tra autenticazione e autorizzazione
- L'autenticazione è il processo di verifica che un utente sia chi dichiara di essere.
- L'autorizzazione implica la verifica se a un utente è consentito fare qualcosa.
Autenticazione basata su password
Gli utenti forniscono credenziali (nome utente e password) che il sistema confronta con quelle memorizzate.
Strategie di attacco e contromisure:
- Attacchi al dizionario offline: Uso di elenchi di password comuni confrontati con hash rubati. Contromisura: impedire l'accesso ai file delle password.
- Attacchi specifici all'account: Phishing o ingegneria sociale mirata. Contromisura: blocco dell'account dopo 5 tentativi falliti.
- Attacchi alle password più diffuse: Tentativi di usare password deboli (es.
"123456") su molti account. Contromisura: inibire l'uso di password comuni. - Workstation hijacking: Accesso fisico a una sessione già aperta. Contromisura: invalidare le sessioni dopo un periodo di inattività.
Password con hash e salt
Una password con hash è trasformata in una stringa univoca non reversibile.
- Salting: Aggiunta di un valore casuale (il "salt") prima dell'hashing per rendere uniche le password simili e prevenire attacchi con "rainbow table".
- Bcrypt: Un moderno schema di hashing che include una variabile di costo per rallentare il cracking brute-force.
Token Protocol
Insieme di procedure che utilizzano stringhe uniche (token) invece delle sole password.
- Token di accesso: Usato per accedere alle risorse senza reinviare le credenziali (es. OAuth 2.0).
- Scadenza: Token a breve termine (accesso) e a lungo termine (refresh token).
- Autenticazione stateless: Come i JWT, contengono informazioni crittografate sull'utente senza che il server debba mantenere lo stato della sessione.
- Revoca: Necessità di invalidare token in caso di compromissione.
Vulnerabilità comuni
- Brute-force: Tentativi automatizzati per indovinare credenziali. Può essere facilitato da nomi utente prevedibili (es. email aziendali o "admin").
- Enumerazione dello username: Identificare se un nome utente è valido osservando differenze nei:
- Codici di stato HTTP.
- Messaggi di errore.
- Tempi di risposta (es. il server impiega più tempo se l'utente esiste perché deve controllare la password).
- Protezione brute-force difettosa: Blocchi IP che possono essere aggirati ruotando l'IP o blocchi account che possono essere sfruttati per l'enumerazione.
- Credential stuffing: Uso di coppie
username:passwordrubate da altri siti.
Autenticazione multifattoriale (2FA)
Aggiunge un livello di sicurezza richiedendo un secondo fattore.
- Bypass semplici: A volte il sito carica la pagina "protetta" subito dopo il primo passaggio, senza verificare il completamento del secondo.
- Logica difettosa: Ad esempio, poter modificare il cookie dell'account durante l'invio del codice 2FA per accedere all'account di un'altra vittima.
- Attacchi SMS: Soggetti ad abusi tramite intercettazione o SIM swapping.
Reimpostazione password
Processo intrinsecamente pericoloso.
- Tramite URL: Deve usare token ad alta entropia. Se l'URL usa solo parametri indovinabili (es.
?user=victim), un aggressore può cambiare la password di chiunque. - Password brute-force via password change: Sfruttare moduli di modifica password che espongono il nome utente in campi nascosti.