Bruke lignende Unicode-tegn for å omgå autentisering

GitHub endte opp er utsatt for et angrep som lar deg gripe tilgang til en konto gjennom manipulering av Unicode-tegn i e-post. Problemet er at noen Unicode-tegn, når du bruker konverteringsfunksjonene for små eller store bokstaver, blir oversatt til vanlige tegn som ligner på stilen (når flere forskjellige tegn er oversatt til ett tegn - for eksempel det tyrkiske tegnet "ı" og "i " når de konverteres til store bokstaver, konverteres til "I").

Før du sjekker innloggingsparametere i enkelte tjenester og applikasjoner, blir brukerlevert data først konvertert til store eller små bokstaver og deretter sjekket i databasen. Hvis en tjeneste tillater bruk av unicode-tegn i en pålogging eller e-post, kan en angriper bruke lignende unicode-tegn for å utføre et angrep som manipulerer kollisjoner i Unicode Case Mapping Collisions.

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

Angriper på GitHub kunne gjennom skjemaet for å gjenopprette et glemt passord, start å sende en gjenopprettingskode til en annen e-post ved å angi i skjemaet en adresse som inneholder et unicode-tegn som forårsaker en kollisjon (for eksempel i stedet for [e-postbeskyttet] e-post m ble spesifisertı[e-postbeskyttet]). Adressen besto testen fordi den ble konvertert til store bokstaver og samsvarte med den opprinnelige adressen ([e-postbeskyttet] ), men ved sending av brevet ble det erstattet som det er, og gjenopprettingskoden ble sendt til en falsk adresse (mı[e-postbeskyttet]).

Noe av tegn, forårsaker kollisjoner ved konvertering av register:

ß 0x00DF SS
jeg 0x0131 I
ſ 0x017F S
ff 0xFB00 FF
 0xFB01 FI
fl 0xFB02 FL
ffi 0xFB03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 ST
st 0xFB06 ST
K 0x212A k

Kilde: opennet.ru

Legg til en kommentar