GitHub expuesto a un ataque que permite tomar acceso a la cuenta mediante la manipulación de caracteres Unicode en el email. El problema radica en que algunos caracteres Unicode, al aplicar funciones de conversión a minúsculas o mayúsculas, se traducen a caracteres normales que se asemejan (cuando varios caracteres distintos se traducen a un solo carácter — por ejemplo, el carácter turco «ı» y «i» al convertir a mayúscula se transforman en «I»).
Antes de verificar los parámetros de inicio de sesión en algunos servicios y aplicaciones, los datos proporcionados por el usuario se convierten primero a mayúsculas o minúsculas y luego se verifican en la base de datos. Si el servicio permite el uso de caracteres Unicode en el nombre de usuario o email, el atacante puede utilizar caracteres Unicode similares para llevar a cabo un ataque que manipula colisiones en las tablas de conversión de registro de caracteres (Colisiones de mapeo de caso Unicode).
‘ß’.toUpperCase() == ‘ss’.toUpperCase() // 0x0131
‘K’.toLowerCase() == ‘K’.toLowerCase() // 0x212A
‘John@Gıthub.com’.toUpperCase() == ‘John@Github.com’.toUpperCase()
En GitHub, el atacante iniciar el envío de un código de recuperación a otro email a través del formulario de recuperación de contraseña olvidada al proporcionar un email que incluía un carácter Unicode que causa colisión (por ejemplo, en lugar de mike@example.org se indicaba el email mıke@example.org). La dirección pasaba la verificación ya que se convertía a mayúscula y coincidía con la dirección original (mike@example.org), pero al enviar el correo se insertaba tal cual y el código de recuperación se enviaba a la dirección falsa (mıke@example.org).
Algunos de los , que causan colisiones al convertir el registro:
ß 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
Fuente: opennet.ru
