Resúmenes

Apuntes universitarios en formato Markdown desde Obsidian.

Vulnerabilità dell’autenticazione

download Descargar MD

L'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.

  1. Token di accesso: Usato per accedere alle risorse senza reinviare le credenziali (es. OAuth 2.0).
  2. Scadenza: Token a breve termine (accesso) e a lungo termine (refresh token).
  3. Autenticazione stateless: Come i JWT, contengono informazioni crittografate sull'utente senza che il server debba mantenere lo stato della sessione.
  4. 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:password rubate 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.