Come valutare il livello di sicurezza della generazione dell'ID di sessione?

3

Per alcune settimane abbiamo osservato una collisione nella generazione dell'ID di sessione, con il risultato che due operatori collegati in modo indipendente a un'applicazione web di test condividono la stessa sessione. Abbiamo esaminato il problema e abbiamo esercitato la generazione dell'ID di sessione per generare tra 500.000 e 1 000 000 ID di sessione con varie impostazioni di generazione. Alcune impostazioni sono volutamente cattive, per ottenere alcuni riferimenti di valori errati . Il risultato di questo esperimento è di 5 file contenenti ID sessione (stringhe esadecimali), uno su una riga, ogni file contenente tra 500.000 e 1 000 000 di record.

Quali indicatori numerici posso derivare da queste serie e utilizzare come proxy della qualità della sicurezza che significa per me (1) sapere quanto sono improbabili le collisioni e (2) quanto sia difficile la previsione della sessione.

    
posta Penelopa Koyfman 22.07.2015 - 12:24
fonte

1 risposta

2

Dopo i tuoi commenti, sembra strano che tu abbia dei duplicati se in realtà stai utilizzando /dev/urandom come origine di entropia e ID di sessione sufficientemente lunghi.

  • Sei sicuro che PHP sia configurato correttamente ? A partire da PHP 5.4.0, le impostazioni predefinite di PHP sono ora protette, ma accade che alcune impostazioni del server storico rimangano nel tempo e riducano la sicurezza rispetto ai valori predefiniti correnti (PHP potrebbe non utilizzare effettivamente /dev/urandom , oppure potrebbe raggiungere poche entropia da esso),
  • Sei sicuro che il problema non sia stato causato da un problema di terze parti, come la correzione della sessione ? Tale errore, ad esempio, potrebbe verificarsi se l'ID sessione può essere passato come parametro URL e quell'URL che contiene la sessione viene condiviso in qualche modo, esplicitamente (l'URL inviato da una persona a un'altra) o in qualche modo inaspettato (memorizzazione nella cache del contenuto in il server o un proxy, per esempio).

/dev/urandom può essere generalmente considerato come fonte di entropia affidabile. Se per caso vuoi comunque indagare, puoi utilizzare lo strumento ENT per questo scopo. Puoi trovare un esempio di utilizzo in questa pagina .

Un rapido controllo del file è stato eseguito per garantire che non ci sia stato alcun conflitto durante il test di generazione dell'ID di sessione:

LC_ALL=C sort /path/to/sample_file | uniq -d

Sostituisci /path/to/sample_file con il tuo file attuale contenente l'ID della sessione generata, dovrebbe generare tutte le voci duplicate. In circostanze normali, pertanto, non dovrebbe produrre output.

Verificare la reale qualità di sicurezza di questi file sarebbe più complicato. Un ID di sessione non deve essere solo univoco, ma non deve essere prevedibile , ciò significa che deve essere distribuito in modo uniforme e casuale su uno spazio sufficientemente ampio di possibilità. Questo potrebbe essere difficile da dimostrare adeguatamente. Come ho detto nel mio commento, ci sono già stati una discussione su tale argomento , e mentre alcuni strumenti di sicurezza delle applicazioni Web offrono l'analisi dell'ID di sessione, la conclusione sembrava essere il modo più affidabile per analizzare il codice dell'applicazione e la configurazione stessa.

    
risposta data 22.07.2015 - 18:09
fonte

Leggi altre domande sui tag