GitHub soggetto ad attacchi che consentono di ottenere l'accesso all'account attraverso la manipolazione dei caratteri Unicode nell'email. Il problema è causato dal fatto che alcuni caratteri Unicode, quando vengono applicate le funzioni di conversione in maiuscolo o minuscolo, vengono tradotti in caratteri normali simili (quando più caratteri diversi vengono tradotti in un unico carattere — ad esempio, il carattere turco «ı» e «i» vengono convertiti in «I» quando portati in maiuscolo).
Prima di controllare i parametri di accesso in alcuni servizi e applicazioni, i dati forniti dall'utente vengono inizialmente convertiti in maiuscolo o in minuscolo e poi verificati nel database. Se il servizio consente l'uso di caratteri unicode nel login o nell'email, l'attaccante può utilizzare caratteri unicode simili per eseguire un attacco che manipola le collisioni nelle tabelle di conversione dei caratteri (Collisioni di Mapping dei Casi Unicode).
‘ß’.toUpperCase() == ‘ss’.toUpperCase() // 0x0131
‘K’.toLowerCase() == ‘K’.toLowerCase() // 0x212A
‘John@Gıthub.com’.toUpperCase() == ‘John@Github.com’.toUpperCase()
Su GitHub l'attaccante iniziare l'invio del codice di ripristino a un altro email tramite il modulo di recupero della password dimenticata, specificando un indirizzo nel modulo che include un simbolo unicode che causa una collisione (ad esempio, invece di mike@example.org era presente l'email mıke@example.org). L'indirizzo è stato verificato poiché è stato trasformato in maiuscolo e corrispondeva all'indirizzo originale (mike@example.org), ma durante l'invio della mail è stato utilizzato tal quale e il codice di ripristino è stato inviato all'indirizzo falso (mıke@example.org).
Alcuni dei , che causano collisioni durante la trasformazione del caso:
ß 0x00DF SS
ı 0x0131 I
ſ 0x017F S
ff 0xFB00 FF
fi 0xFB01 FI
fl 0xFB02 FL
ffi 0xFB03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 ST
st 0xFB06 ST
K 0x212A k
Fonte: opennet.ru
