Hasonló Unicode karakterek használata a hitelesítés megkerülésére

GitHub végződött érzékeny egy olyan támadásra, amely lehetővé teszi egy fiókhoz való hozzáférés lefoglalását az e-mailekben található Unicode-karakterek manipulálásával. A probléma az, hogy egyes Unicode-karaktereket a kisbetűs vagy nagybetűs konverziós függvények használatakor szokásos karakterekké fordítanak le, amelyek stílusa hasonló (ha több különböző karaktert fordítanak le egy karakterre - például a török ​​"ı" és "i" karaktert " nagybetűre konvertálva "I"-re konvertálják).

Egyes szolgáltatásokban és alkalmazásokban a bejelentkezési paraméterek ellenőrzése előtt a felhasználó által megadott adatokat először nagy- vagy kisbetűvé alakítja, majd ellenőrzi az adatbázisban. Ha egy szolgáltatás engedélyezi a Unicode karakterek használatát egy bejelentkezésben vagy e-mailben, akkor a támadó hasonló unicode karakterekkel hajthat végre olyan támadást, amely manipulálja az Unicode Case Mapping Collisions ütközéseit.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[e-mail védett]'.toUpperCase()

Támadó a GitHubon tudott az elfelejtett jelszó visszaállítására szolgáló űrlapon keresztül kezdeményezzen helyreállítási kód küldését egy másik e-mailre úgy, hogy az űrlapon megjelöl egy olyan címet, amely ütközést okozó unicode karaktert tartalmaz (például [e-mail védett] email m volt feltüntetveı[e-mail védett]). A cím megfelelt a teszten, mert nagybetűssé alakították, és megegyezett az eredeti címmel ([e-mail védett] ), de a levél elküldésekor az eredeti helyére került, és a helyreállítási kódot hamis címre küldték (mı[e-mail védett]).

Néhány karakterek, ütközéseket okozva a regiszter konvertálá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

Hozzászólás