Korištenje sličnih Unicode znakova za zaobilaženje provjere autentičnosti

GitHub ustanovilo se da je je podložan napadu koji vam omogućuje preuzimanje pristupa računu kroz manipulaciju Unicode znakova u e-pošti. Problem je u tome što se neki Unicode znakovi, kada se koriste funkcije pretvorbe malih ili velikih slova, prevode u regularne znakove koji su slični po stilu (kada se nekoliko različitih znakova prevodi u jedan znak - na primjer, turski znak "ı" i "i" " kada se pretvore u velika slova pretvaraju se u "I").

Prije provjere parametara za prijavu u nekim uslugama i aplikacijama, podaci koje unese korisnik najprije se pretvaraju u velika ili mala slova, a zatim provjeravaju u bazi podataka. Ako usluga dopušta korištenje unicode znakova u prijavi ili e-pošti, tada napadač može koristiti slične unicode znakove za izvođenje napada koji manipulira kolizijama u Unicode Case Mapping Collisions.

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

Napadač na GitHub mogao putem obrasca za oporavak zaboravljene lozinke pokrenite slanje koda za oporavak na drugu e-poštu tako da u obrascu navedete adresu koja uključuje unicode znak koji uzrokuje koliziju (na primjer, umjesto [e-pošta zaštićena] naznačena je e-pošta mı[e-pošta zaštićena]). Adresa je prošla test jer je pretvorena u velika slova i odgovara izvornoj adresi ([e-pošta zaštićena] ), ali prilikom slanja pisma ono je zamijenjeno kakvo jest, a kod za oporavak poslan je na lažnu adresu (mı[e-pošta zaštićena]).

Neke od символов, uzrokujući kolizije prilikom pretvaranja registra:

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

Izvor: opennet.ru

Dodajte komentar