Usando caracteres Unicode similares para ignorar a autenticación

GitHub acabou é susceptible a un ataque que lle permita aproveitar o acceso a unha conta mediante a manipulación de caracteres Unicode no correo electrónico. O problema é que algúns caracteres Unicode, cando se usan as funcións de conversión de minúsculas ou maiúsculas, tradúcense a caracteres normais de estilo similar (cando varios caracteres diferentes se traducen nun carácter, por exemplo, o carácter turco "ı" e "i". " cando se converte en maiúsculas convértense en "I").

Antes de comprobar os parámetros de inicio de sesión nalgúns servizos e aplicacións, os datos proporcionados polo usuario convértense primeiro a maiúsculas ou minúsculas e despois compróbanse na base de datos. Se un servizo permite o uso de caracteres Unicode nun inicio de sesión ou correo electrónico, un atacante pode usar caracteres Unicode similares para realizar un ataque que manipule colisións en Colisións de cartografía de casos Unicode.

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[protexido por correo electrónico]'.toUpperCase()

Atacante en GitHub podería a través do formulario para recuperar un contrasinal esquecido, inicie o envío dun código de recuperación a outro correo electrónico indicando no formulario un enderezo que inclúa un carácter unicode que cause unha colisión (por exemplo, en lugar de [protexido por correo electrónico] especificouse o correo electrónico mı[protexido por correo electrónico]). O enderezo pasou a proba porque se converteu a maiúsculas e coincidiu co enderezo orixinal ([protexido por correo electrónico] ), pero ao enviar a carta substituíuse como está e o código de recuperación foi enviado a un enderezo falso (mı[protexido por correo electrónico]).

Algúns de personaxes, provocando colisións ao converter o rexistro:

ß 0x00DF SS
eu 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

Fonte: opennet.ru

Engadir un comentario