Uporaba podobnih znakov Unicode za obhod avtentikacije

GitHub izkazalo se je je dovzeten za napad, ki vam omogoča zaseg dostopa do računa z manipulacijo znakov Unicode v e-pošti. Težava je v tem, da se nekateri znaki Unicode pri uporabi funkcij za pretvorbo malih ali velikih črk prevedejo v navadne znake, ki so si podobni po slogu (ko je več različnih znakov prevedenih v en znak – na primer turški znak "ı" in "i" " se pri pretvorbi v velike črke pretvorijo v "I").

Pred preverjanjem parametrov za prijavo v nekaterih storitvah in aplikacijah se podatki, ki jih posreduje uporabnik, najprej pretvorijo v velike ali male črke in nato preverijo v bazi podatkov. Če storitev dovoljuje uporabo znakov unicode v prijavi ali e-pošti, lahko napadalec uporabi podobne znake unicode za izvedbo napada, ki manipulira s trki v Unicode Case Mapping Collisions.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[e-pošta zaščitena]'.toUpperCase()

Napadalec na GitHub bi lahko prek obrazca za obnovitev pozabljenega gesla sprožite pošiljanje obnovitvene kode na drug e-poštni naslov tako, da v obrazcu navedete naslov, ki vključuje znak unicode, ki povzroči kolizijo (na primer namesto [e-pošta zaščitena] naveden je bil e-poštni naslov mı[e-pošta zaščitena]). Naslov je opravil preizkus, ker je bil pretvorjen v velike črke in se je ujemal z izvirnim naslovom ([e-pošta zaščitena] ), vendar je bilo ob pošiljanju pisma zamenjano takšno, kot je, obnovitvena koda pa poslana na lažni naslov (mı[e-pošta zaščitena]).

Nekaj znakov, kar povzroča trke pri pretvorbi registra:

ß 0x00DF SS
ı 0x0131 I
ſ 0x017F S
ff 0xFB00 FF
fi 0xFB01 FI
fl 0xFB02 FL
 0xFB03 FFI
 0xFB04 FFL
 0xFB05 ST
 0xFB06 ST
K 0x212A k

Vir: opennet.ru

Dodaj komentar