GitHub olyan támadásnak volt kitéve, amely lehetővé tette a fiókhoz való hozzáférés megszerzését az e-mailben előforduló Unicode-karakterek manipulálásával. A probléma az, hogy egyes Unicode-karakterek kis- vagy nagybetűs átalakítási funkciók használatakor közönséges karakterekké alakultak, amelyek hasonlítanak egymásra (amikor több különböző karaktert egy karakterré alakítanak — például a török ‘ı’ és ‘i’ karakterek nagybetűs formában ‘I’-ra átváltanak).
Bizonyos szolgáltatásokban és alkalmazásokban a felhasználó által megadott adatok először átalakításra kerülnek kis- vagy nagybetűs formába, majd ezt követően ellenőrzik az adatbázisban. Ha a szolgáltatás engedélyezi a unicode-karakterek használatát a bejelentkezésben vagy az e-mailben, akkor a támadó hasonló unicode-karaktereket használhat a támadás végrehajtására, amely manipulálja a karakterek kis- és nagybetűs átalakítási ütközéseit (Unicode Case Mapping Collisions).
‘ß’.toUpperCase() == ‘ss’.toUpperCase() // 0x0131
‘K’.toLowerCase() == ‘K’.toLowerCase() // 0x212A
‘John@Gıthub.com’.toUpperCase() == ‘John@Github.com’.toUpperCase()
A GitHub támadója a jelszó helyreállítási űrlapon keresztül kezdeményezni egy kód megküldését egy másik e-mail címre, az űrlapon egy unicode-karaktert használva, amely ütközést okoz (például mike@example.org helyett egy olyan e-mail címet adott meg, amely mıke@example.org). Az e-mail cím azon az alapon ment át az ellenőrzésen, hogy nagybetűssé alakult, és egyezett az eredeti címmel (mike@example.org), de a küldött levélben az cím alaphelyzetben szerepelt, és a helyreállító kód a hamis címre ment (mıke@example.org).
Néhány olyan karakter, amely ütközést okoz a kis- és nagybetű átváltásakor:
ß 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
Forrás: opennet.ru
