GitHub supus unui atac care permite preluarea accesului la cont prin manipularea simbolurilor Unicode în email. Problema este legată de faptul că unele simboluri Unicode, atunci când sunt supuse funcțiilor de conversie la litere mici sau mari, sunt traduse în simboluri obișnuite, asemănătoare ca aspect (când mai multe simboluri diferite sunt traduse într-un singur simbol - de exemplu, simbolul turcesc „ı” și „i” transformate în litera mare devin „I”).
Înainte de a verifica parametrii de conectare în unele servicii și aplicații, datele trimise de utilizator sunt mai întâi transformate în litere mari sau mici și apoi verificate în baza de date. Dacă serviciul permite utilizarea simbolurilor unicode în numele de utilizator sau email, atacatorul poate folosi simboluri unicode asemănătoare pentru a efectua un atac care manipulează coliziunile în tabelele de conversie a literelor (Coliziuni de mapare a cazurilor Unicode).
‘ß’.toUpperCase() == ‘ss’.toUpperCase() // 0x0131
‘K’.toLowerCase() == ‘K’.toLowerCase() // 0x212A
‘John@Gıthub.com’.toUpperCase() == ‘John@Github.com’.toUpperCase()
Pe GitHub, atacatorul prin intermediul formularului de recuperare a parolei uitate să inițieze trimiterea unui cod de recuperare pe un alt email prin indicarea în formular a unei adrese care include un simbol unicode, provocând o coliziune (de exemplu, în loc de mike@example.org, se utiliza email-ul mıke@example.org). Adresa a trecut verificarea deoarece a fost transformată în litere mari și se potrivea cu adresa originală (mike@example.org), dar la trimiterea email-ului a fost inserată ca atare, iar codul de recuperare a fost trimis pe adresa falsă (mıke@example.org).
Unele dintre , care provoacă coliziuni la conversia literelor:
ß 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
Sursa: opennet.ro
