Brug af lignende Unicode-tegn til at omgå godkendelse

GitHub endte er modtagelig for et angreb, der giver dig mulighed for at gribe adgang til en konto gennem manipulation af Unicode-tegn i e-mail. Problemet er, at nogle Unicode-tegn, når de bruger konverteringsfunktionerne for små bogstaver eller store bogstaver, oversættes til almindelige tegn, der ligner stilen (når flere forskellige tegn er oversat til ét tegn - f.eks. det tyrkiske tegn "ı" og "i" ", når de konverteres til store bogstaver, konverteres til "I").

Før du kontrollerer login-parametre i nogle tjenester og applikationer, bliver brugerleverede data først konverteret til store eller små bogstaver og derefter kontrolleret i databasen. Hvis en tjeneste tillader brugen af ​​unicode-tegn i et login eller e-mail, så kan en angriber bruge lignende unicode-tegn til at udføre et angreb, der manipulerer kollisioner i Unicode Case Mapping Collisions.

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

Angriber på GitHub kunne gennem formularen til at gendanne en glemt adgangskode, påbegynd at sende en gendannelseskode til en anden e-mail ved at angive i formularen en adresse, der indeholder et unicode-tegn, der forårsager en kollision (f.eks. i stedet for [e-mail beskyttet] e-mail m blev angivetı[e-mail beskyttet]). Adressen bestod testen, fordi den blev konverteret til store bogstaver og matchede den oprindelige adresse ([e-mail beskyttet] ), men ved afsendelse af brevet blev det erstattet som det er, og gendannelseskoden blev sendt til en falsk adresse (mı[e-mail beskyttet]).

Noget af tegn, der forårsager kollisioner ved konvertering af register:

ß 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

Kilde: opennet.ru

Tilføj en kommentar