Password accettata quando si aggiungono caratteri

32

Ho scoperto per caso che posso accedere all'account della mia università se digito la mia password e aggiungo alcuni caratteri. Quindi se il mio nome utente è e. g. "abc" e la mia password è "password", posso accedere con "abc" / "password", ma anche con "abc" / "password121312", "abc" / "password1", "abc" / "passworde" ecc. (Ho fatto solo alcuni tentativi, ma ha funzionato fino ad ora).

Questo è in qualche modo pericoloso? (Non riesco a immaginare perché (tranne forse questo significa che ci sono altri problemi di sicurezza con la rete), ma non ne so molto della sicurezza.) Devo dire alla mia università?

    
posta 20.10.2017 - 18:15
fonte

2 risposte

17

Potrebbe suggerire che qualsiasi procedura di hashing delle password utilizzata sia troncare l'input (usando solo i primi caratteri x della password), o il confronto per le password corrette è stato implementato male, e sta solo confrontando la prima parte (questa potrebbe implicare l'utilizzo di un codice a blocchi per memorizzare le password o l'archiviazione di password non elaborate).

Nessuna situazione è particolarmente buona.

In caso di troncamento, dà un falso senso di sicurezza - potresti aver scelto una password lunga e casuale, ma se solo i primi pochi caratteri vengono effettivamente utilizzati, non è neanche lontanamente sicuro come potresti pensare lo è, e quindi potrebbe essere indovinato in un attacco di forza bruta più facilmente. Spero che questa sia la spiegazione più probabile.

Nel caso di una procedura di confronto scadente, ciò suggerisce che lo sviluppatore responsabile della routine di autenticazione non aveva familiarità con le pratiche di sviluppo sicure. Usando un paragone parziale (es. SELECT * FROM users WHERE 'username' LIKE '$username%' AND 'password' LIKE '$password%' ), aumenta ancora le possibilità che gli attacchi di forza bruta funzionino, ma suggerisce anche che altri errori potrebbero essere stati fatti: dato l'esempio precedente, potenzialmente impostando una password di a' OR 1=1'-- darebbe un SQL injection attack. Ovviamente, questo è un esempio un po 'forzato, ma non oltre i regni della possibilità.

Nel caso in cui si utilizzi un codice a blocchi, piuttosto che un algoritmo di hashing della password, la lunghezza consentita nel database potrebbe essere insufficiente per una password lunga, una volta crittografata. In effetti, questo è il troncamento, ma dei dati crittografati, piuttosto che dell'input. L'effetto finale è lo stesso: fornire una password lunga dà un falso senso di sicurezza.

    
risposta data 20.10.2017 - 18:31
fonte
34

Il motivo più probabile per cui questo accade è che il sistema tronca le password. Per verificare questa ipotesi, potresti provare a cambiare la tua password per qualcosa di più lungo e vedere cosa succede: il sistema riconosce "thisquitelongpassword" come "thisquitelong"? In tal caso, il sistema tronca definitivamente le password. In caso contrario, potrebbero esserci problemi gravi con la convalida dell'input, come evidenziato da @Matthew.

Mentre il troncamento delle password potrebbe essere necessario per interagire con i sistemi legacy, che troncano anche i nomi utente, vedi questa risposta su Serverfault - in generale dovrebbe essere evitato, in quanto riduce lo "spazio per la password", ovvero il numero di password univoche che possono essere generate.

Gli hacker possono risparmiare molte risorse (tempo, denaro) se sanno che il loro sistema di destinazione utilizza password troncate, poiché sanno che non hanno bisogno di provare password più lunghe della lunghezza di troncamento.

Sebbene il tuo comportamento non sembri dannoso per me, alcune organizzazioni sono molto sensibili alle persone che trovano difetti nei loro sistemi.

Pertanto, potresti provare a dirlo alla tua università, ma non sottolineare troppo la tua conoscenza di possibili attacchi. Dire semplicemente qualcosa come "Ho letto questo può essere un segnale di sicurezza" dovrebbe andare bene. Inoltre, non dichiarare le cose in modo assoluto come "questo è completamente irragionevole", in quanto potrebbero esserci motivi per (troncamento della password, non errata convalida dell'input).

Ovviamente, non eseguire troppi test, non automatizzare i test e non eseguire attacchi.

    
risposta data 20.10.2017 - 18:40
fonte

Leggi altre domande sui tag