Utilizzo di caratteri Unicode simili per ignorare l'autenticazione

GitHub si voltò è vulnerabile ad un attacco che consente di impossessarsi dell'accesso a un account attraverso la manipolazione dei caratteri Unicode nelle e-mail. Il problema è che alcuni caratteri Unicode, quando si utilizzano le funzioni di conversione maiuscole o minuscole, vengono tradotti in caratteri regolari con uno stile simile (quando diversi caratteri diversi vengono tradotti in un unico carattere, ad esempio il carattere turco "ı" e "i " quando convertiti in maiuscolo vengono convertiti in "I").

Prima di verificare i parametri di accesso in alcuni servizi e applicazioni, i dati forniti dall'utente vengono prima convertiti in lettere maiuscole o minuscole e quindi controllati nel database. Se un servizio consente l'uso di caratteri Unicode in un login o in un'e-mail, un utente malintenzionato può utilizzare caratteri Unicode simili per eseguire un attacco che manipola le collisioni in Unicode Case Mapping Collisions.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[email protected]'.toUpperCase()

Aggressore su GitHub potuto tramite il modulo per il recupero della password dimenticata, avviare l'invio di un codice di recupero ad un'altra email indicando nel modulo un indirizzo che includa un carattere unicode che causi una collisione (ad esempio, invece di [email protected] è stata indicata l'e-mail mı[email protected]). L'indirizzo ha superato il test perché è stato convertito in maiuscolo e corrispondeva all'indirizzo originale ([email protected] ), ma all'invio della lettera questa è stata sostituita così com'è e il codice di recupero è stato inviato ad un indirizzo falso (mı[email protected]).

Un po 'di caratteri, causando collisioni durante la conversione del registro:

ß0x00DF SS
ı0x0131 I
ſ0x017F S
ff 0xFB00 FF
fi 0xFB01 FI
fl 0xFB02 FL
ffi 0xFB03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 ST
st0xFB06ST
K0x212Ak

Fonte: opennet.ru

Aggiungi un commento